cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
rsclancy
Contributor
Contributor
673 Views
Registered: ‎11-25-2013

Cyclic Mode, AXI DMA, misleading instructions in PG021

The latest AXI DMA product guide PG021 Oct 4, 2017 Version 7.1 still contains the advice on page 72 to set the tail descriptor thus:

 

Program the Tail Descriptor register with some value which is not a part of the BD chain. Say for example 0x50

 

However in the tail descriptor register description e.g. page 21 there is the informative note:

 

Note: The software must not move the tail pointer to a location that has not been updated. The software processes and reallocates all completed descriptors (Cmplted = 1), clears the completed bits and then moves the tail pointer. The software must move the pointer to the last descriptor it updated. Descriptors must be 16-word aligned, that is, 0x00, 0x40, 0x80, and so forth. Any other alignment has undefined results

 

My emphasis in bold. 

 

It appears the core/engine will truncate/align an addess if not properly aligned. That is, programming the TDESC to "for example 0x50" results in the value 0x40- which will most likely be in the chain given the usual separation.

 

This point is lurking in the post:

https://forums.xilinx.com/t5/Embedded-Processor-System-Design/AXI-DMA-Cyclic-BD-not-working/m-p/722784#M18450

 

I think the wording in the guide should be updated to indicate that a "properly aligned" address that is not in the ring of BDs should be used to program the TDESC register when oeprating in cyclic mode.

0 Kudos
0 Replies