UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Adventurer
Adventurer
3,377 Views
Registered: ‎06-03-2008

AXI bursts with standalone software configuration

Jump to solution

Hello,

 

I use the Vivado 2017.1 tools version and I have written an application with "standalone" configuration in the SDK. The application runs on one of the ARM cores of a Zynq Ultrascale+ SoC (Trenz board).

 

The application does memcpy's between the SDRAM and a bram located in the PL, connected to the APU using the MHP0 port:

APU <-MHP0-> AXI bram controller <-> bram IP

However, in the hardware manager I see that neither writes nor reads are performed with burst mode.

 

For example, the following memcpy that transfers 512 bytes from the SDRAM to the PL bram :

memcpy(bramPointer, sdramPointer, 512);  //sdramPointer and bramPointer point to 64bit data

is broken into the following AXI transactions (wa -> write address, wd -> write data) seen "going out" from the MHP0 port:

wa (&bramPointer[0])
wd (bramPointer[0], wlast = 1)
wa (&bramPointer[8])
wd (bramPointer[8], wlast = 1)
…
wa (&bramPointer[56])
wd (bramPointer[56], wlast = 1)

whereas I would expect one wa, followed by 8 wd transactions:

wa (&bramPointer[0])
wd (bramPointer[0])
wd (bramPointer[8])
…
wd (bramPointer[56], wlast = 1)

Is there anyway to enable burst transactions when performing memcpy's under a "standalone" configuration to the SDK?

 

Thanks,

dtheodor

0 Kudos
1 Solution

Accepted Solutions
Highlighted
Adventurer
Adventurer
5,706 Views
Registered: ‎06-03-2008

Re: AXI bursts with standalone software configuration

Jump to solution

@muzaffer thanks once again! Eventually the solution was to import one of the available zdma examples.

 

For anyone interested: after generating the bsp, open the mss file, and select "import example" next to the zdma instance of the PS. There are examples with c code that performs burst reads/writes (very similar to the one shown in the link).

 

dtheodor

 

 

0 Kudos
4 Replies
Teacher muzaffer
Teacher
3,343 Views
Registered: ‎03-31-2012

Re: AXI bursts with standalone software configuration

Jump to solution

@dtheodor this has been an issue with the original zynq and the only indication I've heard that this was possible was using the multi-register read/write instructions. Check the disassembly of your memcpy and if it has LDM/STM instructions. If it does and you still get individual axi transactions, you're out of luck. If your memcpy doesn't have them, then you need to find one which does.

 

It seems this is the way to do it in Zynq SoC: https://forums.xilinx.com/t5/Embedded-Processor-System-Design/Zynq-AXI-Master-GP-burst-access/m-p/331193

 

not sure if there is a similar method for zus+. 

- Please mark the Answer as "Accept as solution" if information provided is helpful.
Give Kudos to a post which you think is helpful and reply oriented.
Adventurer
Adventurer
3,288 Views
Registered: ‎06-03-2008

Re: AXI bursts with standalone software configuration

Jump to solution

@muzaffer thanks a lot for the link! I will try the code, and update the thread if it works in the US+ as well.

 

dtheodor

0 Kudos
Teacher muzaffer
Teacher
3,272 Views
Registered: ‎03-31-2012

Re: AXI bursts with standalone software configuration

Jump to solution

@dtheodor check out this link again: https://forums.xilinx.com/t5/Embedded-Processor-System-Design/Zynq-AXI-Master-GP-burst-access/m-p/774730#M20013

 

he has one solution which seems to work.

- Please mark the Answer as "Accept as solution" if information provided is helpful.
Give Kudos to a post which you think is helpful and reply oriented.
Highlighted
Adventurer
Adventurer
5,707 Views
Registered: ‎06-03-2008

Re: AXI bursts with standalone software configuration

Jump to solution

@muzaffer thanks once again! Eventually the solution was to import one of the available zdma examples.

 

For anyone interested: after generating the bsp, open the mss file, and select "import example" next to the zdma instance of the PS. There are examples with c code that performs burst reads/writes (very similar to the one shown in the link).

 

dtheodor

 

 

0 Kudos