DMA Scatter-Gather DBE Error

Showing results for 
Show  only  | Search instead for 
Did you mean: 

DMA Scatter-Gather DBE Error

Contributor III

Hi everyone,

I am using #mpc5674f I am trying to use #DMA controller and I have to use its Dynamic Programming feature: scatter/gather .

I have prepared the required TCDs: the first #TCD function and the new /second TCD function (TCD_scattergather that is going to be loaded after first TCD).

When I run  the code with the different Destination Addresses, Scatter-gather works fine and there is no error bit set. Also I can see the data in destination addresses properly.

But when I give the same destination address in both TCD, when the code runs, Destination Bus Error bit set in EDMA_x_ESR register and there is no current data in the destination address, it doesn't work.

I guess it doesn't load the new TCD because of this error bit. 

I have read the "#0-modulo-32-byte" issue but. this problem only happens when I give the same destination addresses to the TCDs.


Doesn't 5674F allow to write to the same destination addresses in scatter-gather? Is there a limitation in this area? We have to use the same destination addresses, it's required for our project. 

You can see the TCD functions below.

Please, can anyone help? 

Thank you so much in advance. :smileyhappy:



2 Replies

NXP TechSupport
NXP TechSupport

Hi, I guess it could be because of


I would expect next TCD address there.

Otherwise you could attach the whole DMA code allowing me to look it on thoroughly.

The same address can be used multiple times, there is no reason against it.

Contributor III

Thank you. :smileyhappy: I guess I have solved the problem, it's about 0-modulo-32-byte issue. I first thought this rule is for the destination address in the scatter-gather-TCD. But then I found out that 0-modulo-32-byte issue is for the address that holds the scatter-gather-TCD. I guess I'll need memory mapping in my project, for the scatter-gather-TCDs. Because, after a new variable or array definition, all addresses shift down and 0-modulo-32-byte error happens.  

0 Kudos