Our customer SICK wants to use Channel Chaining with the DMA on the LPC54102.
In his configuration DMA Channel 12 services the ADC and writes ADC data into memory. DMA Channel 12 then generates a trigger (via Channel Chaining) for DMA Channel 13, after he has finished writing his block of data into memory. DMA Channel 13 then transfers the data into another block and triggers DMA Channel 1 (UART DMA) after completion of the transfer.
Everything works fine as long as he is in Debug Mode. When he now disconnects the Debuger from the System his Software is not working anymore.
What may this be.
In addition to Rocky Song recommendations please make sure the customer has not linked the semihosting library, with this library the application will no longer work standalone - it will only work when connected to the debugger. You can find additional information on this link:
Hope it helps!
Technical Support Engineer
DMA channel chaining should not depend on debugger.
Is customer uses same project configuration between debug mode and non-debug mode?
Code in debug mode is usually slower, if software contains some issues (such as close a peripheral too early by checking FIFO empty flag instead of peripheral idle flag) that only appear when code is faster, this can happen.
Another possible cause can be the debug host did some additional initialization that is required by the software, but the software itself does not do them.
To track, suggest to add some debug notification in each stage of channel chain; if project is emergent, as a back up, can manually start another DMA channel in DMA IRQ handler