Tips
707
SPRUH82C – April 2013 – Revised September 2016
Copyright © 2013–2016, Texas Instruments Incorporated
Enhanced Direct Memory Access (EDMA3) Controller
17.5 Tips
17.5.1 Debug Checklist
This section lists some tips to keep in mind while debugging applications using the EDMA3.
provides some common issues and their probable causes and resolutions.
Table 17-92. Debug List
Issue
Description/Solution
The transfer associated with the channel
does not happen. The channel does not
get serviced.
The EDMA3 channel controller (EDMA3CC) may not service a transfer request, even
though the associated PaRAM set is programmed appropriately. Check for the
following:
1) Verify that events are enabled, that is, if an external/peripheral event is latched in
the event register (ER), make sure that the event is enabled in the event enable
register (EER). Similarly for QDMA channels, make sure that QDMA events are
appropriately enabled in the QDMA event enable register (QEER).
2) Verify that the DMA or QDMA secondary event register (SER) bits corresponding to
the particular event or channel are not set.
The secondary event register bits are set,
not allowing additional transfers to occur
on a channel.
It is possible that a trigger event was received when the parameter set associated with
the channel/event was a NULL set for a previous transfer on the channel. This is
typical in two cases:
1) QDMA channels: Typically if the parameter set is nonstatic and expected to be
terminated by a NULL set (OPT.STATIC = 0, LINK = FFFFh), the parameter set is
updated with a NULL set after submission of the last TR. Because QDMA channels are
autotriggered, this update caused the generation of an event. An event generated for a
NULL set causes an error condition and results in setting the bits corresponding to the
QDMA channel in QEMR and QSER. This will disable further prioritization of the
channel.
2) DMA channels used in a continuous mode: The peripheral may be set up to
continuously generate infinite events (for instance, in case of the McBSP, every time
the data shifts out from DXR, it generates an XEVT). The parameter set may be
programmed to expect only a finite number of events and to be terminated by a NULL
link. After the expected number of events, the parameter set is reloaded with a NULL
parameter set. Because the peripheral will generate additional events, an error
condition is set in SER.E
n
and EMR.E
n
, preventing further event prioritization.
You must ensure that the number of events received is limited to the expected number
of events for which the parameter set is programmed, or you must ensure that bits
corresponding to a particular channel or event are not set in the secondary event
registers (SER/QSER) and the event missed registers (EMR/QEMR) before trying to
perform subsequent transfers for the event/channel.
Completion interrupts are not asserted, or
no further interrupts are received after the
first completion interrupt.
You must ensure the following:
1) The interrupt generation is enabled in the OPT of the associated PaRAM set
(TCINTEN = 1 and/or ITCINTEN = 1).
2) The interrupts are enabled in the EDMA3 channel controller (EDMA3CC), via the
interrupt enable register (IER).
3) The corresponding interrupts are enabled in the device interrupt controller.
4) The set interrupts are cleared in the interrupt pending register (IPR) before exiting
the transfer completion interrupt service routine (ISR). See
for
details on writing EDMA3 ISRs.
5) If working with shadow region interrupts, make sure that the DMA region access
enable registers (DRAE) are set up properly, because DRAE act as secondary enables
for shadow region completion interrupts, along with IER.
If working with shadow region interrupts, make sure that the bits corresponding to the
transfer completion code (TCC) value are also enabled in DRAE. For instance, if the
PaRAM set associated with channel 0 returns a completion code of 31 (OPT.TCC =
31), make sure that DRAE.E31 is also set for a shadow region completion interrupt
because the interrupt pending register bit set will be IPR.I31.