Other Parts Discussed in Thread: OMAP-L137
Hello,
one of my customer uses the OMAP-L137 and has modified some DSP code, below you can find the entire summary, but the the main question is:
Normal 0 false false false EN-US X-NONE X-NONE MicrosoftInternetExplorer4
Is it fine to read the PaRaM while the DMA channel is running? The EDMA3 LLD implementation choice implies that this is not expected.
Here is the complete background:
"...
Normal 0 false false false EN-US X-NONE X-NONE MicrosoftInternetExplorer4
We have a new query regarding some issues we observe in the EDMA3 LLD driver. VERSION: EDMA3 LLD 01.10 / July 9, 2009.
We are using the TI PSP GIO UART driver (which we have modifed to work at 1.5MBits). To do this we keep the RX running continuously with a auto-reloaded DMA channel and monitor how many bytes have been received by checking the EDMA3 PaRaM for that channel.
When we run at 50% DSP usage with some complex processing we see regular failures in a short period of time.
Investigating the EDMA3 LLD we have noted that the EDMA3_DRV_getPaRAM() function is implemented using a byte data move for the PaRaM from the peripheral via edma3MemCpy() function. What we observe in our software traces is that the cCnt reported by the EDMA3_DRV_getPaRAM() function has mismatched LSB and MSB bytes - which will explain the failure we see in our application.
To fix this we can make a simple modification to EDMA LLD code to ensure that the PaRaM field reads are atomic.
What we would like to have confirmed is that it is indeed fine to read the PaRaM while the DMA channel is running. The EDMA3 LLD implementation choice implies that this is not expected.
There are several places in the driver where the edma3MemCpy() is used. We have not evaluated the impact in other usage.
..."
Thanks, Stefan