Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

 When there are multiple DMAs and multiple TDs asigned for each channel it is better to have the DMA configurations as BYTES_PER_BURST as  1 and Request per Burst 0. The reason why this configuration is good is - I came across a case where in DMA configuration was Bytes_PER_BURST was set as total bytes to be transferred and Request_Per_Burst as 1.

   

The above configuration should work perfectly but due to some unknown reasons the DMAs are getting halted. I think SriHari started conversation on DMAs getting halted.

   

So when you are using multiple DMAs with many no. of TDs for each channel please try configuring as mentioned in 2nd line and AUTO_EXECUTE_NEXT_TD to the TDs which make up the complete data transfer.

0 Likes
1 Reply
Anonymous
Not applicable

Hi Avagadro,

   

 

   

Having a smaller burst count will ensure that in an environment where there are multiple DMA channels there is spoke arbitration, and the bandwidth is shared as per the priority chosen.

   

However, the transfer should not be "halted" if the request per burst is set to 1 and burst count equal to total length. It requires a DMA request everytime bytes equal to "burst count" to be transferred. The Spoke is occupied by the single TD (of a DMA channel) till the entire burst is transferred thereby depriving the other lower priority channels from accessing the spoke.

   

 

   

It will be easier to debug the issue if you can post the project in which this issue was observed.

0 Likes