DMA Engine 2: transfer error during Local Bus to DDR2 DMA

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

DMA Engine 2: transfer error during Local Bus to DDR2 DMA

Jump to solution
1,010 Views
manuelojea
Contributor II

We are using the DMA Engine 2 controller to perform a DMA from a local resource connected to the eLBC bus to the DDR2 memory.

The local resource is a shared memory that can be accessed by an external master. Then the accesses to the local resource can be slowed down if the resource is used by an external master.

Randomly, the DMA engine 2 is reporting a transfer error in the DMA status register, when the accesses are slowed down in the eLBC. The DMA start correctly with a fast accesses to the local resources (around 800ns), all of them are ended by the LGTA signal.

Sometime after the fast accesses, the accesses begin to be slower (around 11 microsec.) due to the access from external master. These accesses are ended with the LGTA signal.

But, after two or three slow access the processor ends the access desasserting the control lines (chip select, output enable, and other output control signal) without the activation of the LGTA signal.

The following figure shows the signals of the local bus.

pastedImage_3.png

We see that the last access unexpectedly ended is sort than the previous long access, then we suppose that this access is not ended by a timeout in the local bus controller (The timeout is programmed to be 32 microsec.).

We look for other timeout sources in the processor that can explain the processor behavior. We found the Arbiter and Bus Monitor that controls and monitor the internal processor bus. We see that this arbiter has two timeouts that could be configured in the arbiter register. But we discard this timeout because the value is the maximum available of more than 60 milisec.

Please, could you help us with this problem? We need to know if there are other timeout source or if there are others explanation that could we check to understand why the processor has this unexpected behavior.

Thank you in advance.

Regards.

Manuel Ojea

1 Solution
834 Views
alexander_yakov
NXP Employee
NXP Employee

DMA controller uses burst operations whenever possible. As long as your target device is GPCM, it does not support bursts. So, burst transaction is accepted and performed as several consecutive single accesses. Bus timeout is counted for entire burst and times out, if entire burst takes very long time. As far as I can see from your figure, this happens at 8th access from the beginning of burst - there is no TA asserted, so this means transfer is terminated by TEA assertion, which is asserted because of timeout.


Have a great day,
Alexander
TIC

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

View solution in original post

3 Replies
835 Views
alexander_yakov
NXP Employee
NXP Employee

DMA controller uses burst operations whenever possible. As long as your target device is GPCM, it does not support bursts. So, burst transaction is accepted and performed as several consecutive single accesses. Bus timeout is counted for entire burst and times out, if entire burst takes very long time. As far as I can see from your figure, this happens at 8th access from the beginning of burst - there is no TA asserted, so this means transfer is terminated by TEA assertion, which is asserted because of timeout.


Have a great day,
Alexander
TIC

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

834 Views
manuelojea
Contributor II

Thanks for your help.


As you say we use the DMA to access the target on the local bus.
We configure the BR and OR registers for this target as UPM with the burst inhibited.
The target has not a fixed time to close the access, then the DMA burst could be very long and the TEA could be asserted.
Is it possible to modify the burst timeout value in some register in the DMA controller or in the processor?

Regards

Manuel Ojea

0 Kudos
834 Views
alexander_yakov
NXP Employee
NXP Employee

Yes, please look BMT and BMTPS fields in LBCR register