Zynq DMA access to PL memory (AXI BRAM)

Hi,
We need to transfer data from Zynq PL memory (AXI BRAM) to DDR and also DDR to PL. We have instantiated AXI BRAM controller in PL and are using M_AXI_GP0 interface from PS. We have verified the data transfer between DDR and PL using memcpy function in the custom driver. In order to get better throughput we want to make use of Zynq DMAC. We have been able to program the DMAC to transfer data between DDR to DDR, DDR to PL and PL to DDR. We found that pl330 implementation for data transfer in case of unaligned source and destination address was incorrect. We have made the necessary changes for it and have validated this in the DDR to DDR transfers. We are facing 2 issues currently:
1. Sometimes transfer of size equal to multiple of 128 and greater than 1024 bytes (ex: 1024, 1152, etc) does not happen correctly. In such cases we have observed that a complete burst of data (i.e. 128 bytes) is not transferred at the end. This does not always happen and sometimes multiple bursts are missed. This issue is observed for data transfer from DDR to DDR, DDR to PL and also PL to DDR. 
2. In case of unaligned source and destination addresses the data last few bytes are not transferred to the destination address. This is observed only in case of DDR to PL and PL to DDR transfers and not in case of DDR to DDR transfer.
In both the above cases we have verified the source and destination addresses, SAR0 and DAR0 to be incremented correctly to the last addresses. 
Any help would be appreciated.
Regards,
Pooja

After fighting with it for a while it seems that flushing and invalidating the cached areas can fix it.  In my particular build it was not sufficient to do this at the start it was also needed after the done ISR fired.  Turning off caching makes the problem go completely away, but the Zynq runs terrible slow with caching off so that's not an option.  After researching this some more online... It appears the best practive for using the PS DMA is to only interact with non-cached memory areas - and aligned to 32 bytes.  In the xilinx standalone bsp there is a bunch of gotcha notes under the InvalidateRange function about all the problems with invalidating cache and flushing it that can bite.  There is a linux driver for zynq PL330 DMA, in the course of reading about it there is a PDF available online that talks about how the driver works.  The linux driver allocates uncached memory only when using the PL330 DMA.  Sounds like that's the way to go to avoid problems with DMA coherency.
Also, when building SDK example projects and selecting peripheral tests, the project will include tests for the DMA PS peripheral including testing all 8 channels of the first DMA peripheral instance in the processor system.  It's a good starting point to build from when making your own interface to the DMA using the Xilinx bare metal drivers.
Hope this helps someone out,
I struggled with this stuff for a while myself...  chasing my tail.

Similar Messages

  • How to interface AXI BRAM Controller with Block Memory generator in Single Port ROM(standalone mode)

    Hi,
    I initialized the block memory with coe file to use it as single port ROM in standalone mode. So, the data width of ROM is 32 bits and depth of 62000(this would need 16 bit address for reading).  AXI BRAM controller was instantiated in Block design and data width was set to 32.
    But upon synthesis, I get following error
    [BD 41-1228] Width mismatch when connecting input pin '/blk_mem_gen_0/addra'(16) to net 'axi_bram_ctrl_0_bram_addr_a'(14) - Only lower order bits will be connected, and other input bits of this pin will be left unconnected.
    So, the problem is BRAM controller 's interface which has bram_addr_a of only 14 bits. This is strange. I don't know how bram_addr_a width is determined?

    ,
    Are you sure you have 62000 x 32-bits in your coe and not just 62000 bytes? That could explain the 2-bit difference. 8-bit bytes versus 32-bit words.
    I tried this with Block Memory Generator 8.2 (Vivado 2015.1) and looks ok. Setting up a Single-Port ROM with 32 width and 62000 depth shows addres Width A: 16 in the Summary and the generated files show 16 bit address as well:
    -bisector

  • Not able to access web service with axis and tomcat

    Dear all
    i am trying to access web service using axis in tomcat.
    i downloaded axis-bin-1_4.zip, unzipped it and installed it properly in tomcat.
    i had tested axis, its working fine.
    i had created a simple java class(a sample class from book) and deployed it in axis. i also created a client(a java consol class) for accessing that web service. but its giving error. i have no idea why this is comming.
    plz point me in right direction.
    thanks in advance
    The error is:
    Exception in thread "main" AxisFault
    faultCode: {http://xml.apache.org/axis/}HTTP
    faultSubcode:
    faultString: (404)/axis/ArithmeticProcessor.jws
    faultActor:
    faultNode:
    faultDetail:
            {}:return code:  404
    <html><head><title>Apache Tomcat/6.0.14 - Error report</tit
    le><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;ba
    ckground-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;
    color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Ari
    al,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-f
    amily:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-famil
    y:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:
    Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color :
    black;}A.name {color : black;}HR {color : #525D76;}--></style> </hea
    d><body><h1>HTTP Status 404 - /axis/ArithmeticProcessor.jws</h
    1><HR size="1" noshade="noshade"><p><b>
    type</b> Status report</p><p><b>message</b> <u&
    gt;/axis/ArithmeticProcessor.jws</u></p><p><b>descriptio
    n</b> <u>The requested resource (/axis/ArithmeticProcessor.jws) is n
    ot available.</u></p><HR size="1" noshade="noshade
    "><h3>Apache Tomcat/6.0.14</h3></body></html>
            {http://xml.apache.org/axis/}HttpErrorCode:404
    (404)/axis/ArithmeticProcessor.jws
            at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.j
    ava:744)
            at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144)
            at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrateg
    y.java:32)
            at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
            at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
            at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
            at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
            at org.apache.axis.client.Call.invoke(Call.java:2767)
            at org.apache.axis.client.Call.invoke(Call.java:2443)
            at org.apache.axis.client.Call.invoke(Call.java:2366)
            at org.apache.axis.client.Call.invoke(Call.java:1812)
            at ArithmeticClient.main(ArithmeticClient.java:50)

    Hi ,
    Please go through this link and check in this way only you created the webservice correctly or not. If not follow and do it definitely will get you the webservice access by iphone or any application.
    www.scribd.com/doc/19255987/Web-Services-in-Abap

  • Accessing the internal memory via USB

    I know that you can plug in an 8520 via a USB cable and access the SD card, however I need to access the internal memory. How can I do this without installing the full Desktop manager software?

    Install BBSAK to your PC and use it
    "Cats may taste like chicken, but they have more bones than rabbits."
    Blackberry 101
    Tips & Tricks
    Videos to learn from on youtube

  • Invalid access to the memory location

    Hi
    I got the error 998 (Invalid access to the memory location) while tring to connect with Company using DI API.
    What could be the possible reason ?

    Hi Marco,
    I got this error, and I fixed by removing the SM_OBS_DLL folder from the Local Settings Temporal folder in Windows.
    Normally the path is the following:
    “C:\Documents and Settings\  USUARIO  \Local Settings\Temp”
    Hope it helps.
    Emanuel.

  • ERROR 998 - Invalid access to the memory location

    I have the error 998 -Invalid access to the memory location-
    I Tring to connect with Company using DI API.
    Can help me?

    7 years later SAP 8.82 PL08, trying to install Screen Painter and I got this.  What do I do

  • I have an LG Extravert with a touch screen that doesn't work. How do I access the internal memory (NOT the SD card) to save data that wasn't moved over to the card?

    My touch screen fell victim to the same issue many people have with this phone - the touch screen has become only effective for very limited items - mostly just Contacts. I've tried bluetooth and plugging in the phone, shutting it down and repowering a million times. Nothing will let me access any memory that wasn't already stored on the SD card. Help!

        a_oglesby,
    A non-working phone is a bummer. Let's get your phone working. We encourage you to plug your phone into your computer to see if you can view items stored on your device.
    RobinD_VZW
    Follow us on twitter @VZWSupport

  • MacBook Pro loses access to 1 memory slot upon shutdown or reboot in OS X 10.8.1

    I have had 4GB of RAM in my mid-2009 13-inch MacBook Pro since a few weeks after purchasing it in 2009.  Until a couple of weeks ago, this machine has been running OS X 10.6.8 with no RAM issues.  I wanted to wait for 10.8.1 before doing a clean install of Mountain Lion on this MacBook  So, the day that 10.8.1 was released to the App Store I immediately purchased and downloaded the new OS.  I then performed a clean install of the OS, got all my software setup, and all was right with my MacBook.
    However, over the next week I noticed upon startup or reboot of the machine everything felt sluggish. I opened the activity monitor and clicked on the system memory tab, it showed 2GB.  I immediately clicked on the About This Mac button to see how much RAM was installed, it showed only one 2GB stick installed (the other memory slot was empty).  The next option I chose was to restart the computer.  Upon startup it still only showed one 2GB stick.  Next, I shutdown the computer, opened the back cover, and proceeded to remove both 2GB sticks of memory. I blew out the slots with compressed air, swapped the positions of each stick and reseated the memory.
    I started up the computer and to my pleasant surprise both memory slots were recognizing 2GB each (4GB total). I thought this had permanently resolved the issue, but unfortunately after every shutdown or reboot my MacBook (without fail) loses access to the second memory slot, unless I remove and reseat the memory. 
    This problem did not start until after installing 10.8.1.  I have tried countless SMC and PRAM resets.  Please help.

    This didn't happen to me until I upgraded back to Lion the second time. I went from Lion back to a clean install of Snow Leopard back to Lion and then I had the problem with it not waking from sleep. The first instance with Lion I had no problems. So I decided to go back and do another install of Snow Leopard and the problem stayed with me. I am now on 10.8.1 and the problem remains the same.
    I have, kind of, solved the sleep problems by putting hibernatemode at 25. This has allowed me to wake the computer up without a hard reset, but when I do wake it up it makes that hard drive spinning noise twice, almost as if it is waking up twice. Then, back to 2gb unless I reset the ram. I am going to take the case off tomorrow and just make sure everything is ok in there, but other than that I am just hoping it's not the logic board as my computer is a few years old now. I may also just throw a 4gb into the one thats working.
    Memtest has found no problems either, both with 2gb and 4gb showing.
    Thanks for the help everyone, this is really driving me nuts and answers are hard to come by.

  • Gallery unable to access images in memory card

    Hi!  I am using E71 and recently I find that Gallery can't access the images and videos in the memory card.  Images in Phone Memory is accesible.  I can access those files from File Manager though.  Does anybody know how to fix this?  Would appreciate any help.

    It's difficult because neither Nokia nor third-part app producers make these things obvious to the casual observer.
    There is a way to get around this, but it's long-winded:
    (1) Delete the first folder in Private
    (2) Check if the gallery is OK.
    (3) If not, restore 'user files' from your backup then delete the next folder and try again.
    This will allow you to find the relevant file that is causing the issue but leave everything else intact.
    Moderator note: typo corrected at request of poster.
    Message Edited by michaels on 31-Aug-2009 05:27 PM

  • Raw pointer access to in-memory tables

    Hello, I realize this is quite an odd question, but I was wondering if it's possible to obtain raw pointers to rows stored in an in-memory table introduced in SQL Server 2014.
    What I am trying to do is to use AMD Kaveri APU in conjunction with SQL Server 2014. The APU has 500+ shader cores that can perform an operation on a piece of memory in parallel, and since SQL Server 2014 already keeps these tables in memory, I was hoping
    there is a way to reference these tables directly via pointers that can be used by APU cores (I could create wrapper code in CLR if needed) rather than taking data out of the database and creating in-memory arrays. All data types I am interested in are fixed
    length (doubles) and tables can be locked in the "read-only" state while read operations take place.
    Is it possible to access in-memory tables via raw pointers?

    Hi Popsovy,
    Thank you for your question. I am trying to involve someone more familiar with this topic for a further look at this issue. Sometime delay might be expected from the job transferring. Your patience is greatly appreciated. 
    Thank you for your understanding and support.
    If you have any feedback on our support, please click
    here.
    Elvis Long
    TechNet Community Support

  • How to access HttpRequest Object from Axis web service?

    Hi all,
    I have Axis web service named shoppingcartService,
    and i have ShoppingCartImpl as implemention class which
    implements passfamily() method
    When client access my web service, ShoppingCartImpl's passFamily method is executed.
    I have one more servlet under my axis web application which implements business logic.
    problem is that i want to call/invoke this servlet from passfamily method of ShopingCartImpl class.
    So how can i call/invoke servlet from passFamily method of ShoppingCartImpl class ?
    (All stuff is under Axis web application under Tomcat).

    hi
    the following link may helpful to you
    http://e-docs.bea.com/wls/docs81/webserv/anttasks.html#1111537
    Regards
    Prasanna Yalam

  • Which models provide access to handset memory via ...

    Hi
    Many Nokia models with a memory card inserted will allow the user to browse the contents of that memory card by connecting via cable and then selecting "Mass Storage" on the phone.
    *Some* Nokia models allow the user to access the internal handset memory in a similar way - e.g. N95 8GB, 6500 Classic, N96 etc. Other models don't allow this  (e.g. N95 will say that mass storage mode is not accessible without a memory card inserted).
    My question is, which specific models allow this ability to access the internal handset memory via mass storage? Is there any kind of list somewhere?
    Thanks
    Kevin

    "User data area" is too vague.
    If there is no memory card inserted in the phone and if there is no built-in mass storage then the user data will be stored in the phone's internal memory (C: drive). Even in this configuration, the data is not accessible via mass storage mode.
    Take the case of the N95-1. It has a 160MB C: drive and a slot for a memory card (E: drive). If there is no card in the slot then you won't be able to connect the phone in mass storage mode in the first place. If you do stick a card in the slot then that card is what you'll have access to in mass storage mode.
    Now take the case of the N95-2. It has the same 160MB C: drive but also 8GB of on-board memory (E: drive), which behaves exactly like an 8GB memory card in the N95-1. It's this E: drive that's visible in mass storage mode.
    Finally, take the example of the N96, which has both 16GB of on-board memory and a slot for a memory card. In mass storage mode it's the 16GB of mass memory (E: drive) that's visible. Whether there's a memory card in the microSD slot (F: drive) or not, it's the E: drive, and only the E: drive, that's visible in mass storage mode.
    Was this post helpful? If so, please click on the white "Kudos!" star below. Thank you!

  • Accessing flash based memory device from mac osx

    Hey there!
    I have a flash memory based voice recorder (sony icd-p620) which is not mac compatible & I was wondering if there is a way to access the files.
    Or is there a way just to grab everything on it & copy it over?
    Thanks!

    I was wondering if there is a way to access the files.
    If there are no drivers for it, then chances are there's no way to access it.

  • On-board RSA key generation on Cyberflex Access 64K V2 / Memory leak?

    The description of the Cyberflex Access 64K V2 card states that "On-board key generation RSA up to 2048 bit" (http://www.youcard.de/datenblaetter/chipkarten/DS%20Cyberflex_Access.pdf). So I assume that this implicates that it should somehow be able to instantiate a KeyPair object on which genKeyPair() can be called.
    When I first tried to instantiate an Object either by using KeyBuilder.buildKey or KeyPair I just received an 0x6F00 error. After removing all of the other objects that were also instantiated I was able to create one Key object using KeyBuilder (RSAPrivateKey or RSAPublicKey). However, as soon as I tried to instantiate two Key objects at the same time I just received the 0x6F00 error again.
    I create these objects by using:
    private static RSAPublicKey pubKey;
    private static RSAPrivateCrtKey privKey;
    protected Foo() {
        pubKey = (RSAPublicKey) KeyBuilder.buildKey(KeyBuilder.TYPE_RSA_PUBLIC, KeyBuilder.LENGTH_RSA_1024, true);
        privKey = (RSAPrivateCrtKey) KeyBuilder.buildKey(KeyBuilder.TYPE_RSA_CRT_PRIVATE, KeyBuilder.LENGTH_RSA_1024, true);
        register();
    }So it seems that there is not enough free (EEPROM) memory for both objects. Is this a known problem with the Cyberflex cards? Is there some workaround? Could it be possible that some former test-applets that I've used (and already deleted) on the card leaked some memory that is missing now?

    I think that I've just found the problem. The value of "-nvDataLimit" in the install APDU that I've sent via gpshell was too low. It seems to work with a higher value.

  • Accessing ITABs with Memory Use

    Guys,
    When debugging, I can see the internal table via menu:
    Display conditions->Memory use->Memoru use - ranked list (tab)
    If I double-click on this itab I can see the record entries.
    The table name is given as 148. If I re-run the TCode, the same itab may have a different name e.g. 193
    I have tried searching the database, but to be honest I don't know what to search on...
    Can I access this table with ABAP code?

    Cracked it...
    Managed to find the solution myself:
    MEMORY USE: Goto->Display condition->Memory use
    You can usually get data from the Memory Use list as follows:
    1. In debug, go to the Ranked List via the menu path above
    2. For those items with FUNCTION-POOL, take the 4 letter Function Group and Table Name
    3. Go to TCode SE80, and enter the Function Group from above
    4. Navigate to one of the Function Modules, and get the Main Program (Goto->Main program)
    5. Cut & paste the Main Program name
    6. Return to the debug screen and enter (MainProgram)TableName[] e.g. (SALPLCOIH)resb_bt[]
    SYSTEM AREAS - DSEG: Goto->System Areas->SAP Memory (enter DSEG,ITAB-HEADS)
    You can also use the same technique for the following System Areas: DSEG, ITAB-HEADS

Maybe you are looking for

  • Dynamic FileName based on environment

    Hi expert, I have a proxy to file scenario in which I create dynamic FileName using an UDF. I'm using UDF because filename must contains date with a particular date format (yyDHHmm). My need is to generate file name prefix based on environment, for e

  • How to write a query for grouping them the columns and give the sequence order to each group/

    Hi i have table that contains country columns . India,USA,UK like these when ever the group changed into the differt country i make a group and arrange them the sequence into those Countries like below 1)India 2)India 1)USA 2)USA like these to write

  • Read/write permissions error message

    Hello everybody, I have recently upgraded to Logic Studio from LE8. Now, I am into manual reading and all that stuff, but there are a couple of issues that confuse me at the moment. 1) I am not able to edit an audio file that I created by recording a

  • IView for Service Contract

    Hi all, I have a Stanalone ITS Server and Portal , I have to pull 3 Service Contract Transactions to Portal thru ITS , Would anyone suggest me the best option to go either with Transactional iView or IAC iView I have already configured IAC , Not Sure

  • Downgrading 10g to 9.0.1.4

    Hello folks, I have a database schema in a 10g database that I need to copy into a 9.0.1.4 database. I understand that could probably use exp (v9) against the 10g database, and then imp (v9) on the 9i database. I have no idea how to do this. I've cop