Enhanced Direct Memory Access (eDMA)
MPC5510 Microcontroller Family Reference Manual, Rev. 1
12-38
Freescale Semiconductor
Preliminary
3. Minor loop done
→
set channel 12 TCD.START bit
4. Minor loop done, major loop done
→
set channel 7 TCD.START bit
When minor loop linking is enabled (TCD.CITER.E_LINK = 1), the TCD.CITER field uses a nine bit
vector to form the current iteration count.
When minor loop linking is disabled (TCD.CITER.E_LINK = 0), the TCD.CITER field uses a 15-bit
vector to form the current iteration count. The bits associated with the TCD.CITER.LINKCH field are
concatenated onto the CITER value to increase the range of the CITER.
NOTE
After configuration, the TCD.CITER.E_LINK bit and the
TCD.BITER.E_LINK bit must be equal or a configuration error will be
reported. The CITER and BITER vector widths must be equal to calculate
the major loop, halfway done interrupt point.
summarizes how a DMA channel can link to another DMA channel, i.e, use another channel’s
TCD, at the end of a loop.
12.5.8
Dynamic Programming
This section provides recommended methods to change the programming model during channel execution.
12.5.8.1
Dynamic Channel Linking and Dynamic Scatter-Gather Operation
Dynamic channel linking and dynamic scatter-gather operation is the process of changing the
TCD.MAJOR.E_LINK or TCD.E_SG bits during channel execution. These bits are read from the TCD
local memory at the end of channel execution thus allowing the user to enable either feature during channel
execution.
Because the user is allowed to change the configuration during execution, a coherency model is needed.
Consider a scenario where the user attempts to execute a dynamic channel link by enabling the
TCD.MAJOR.E_LINK bit at the same time the eDMA engine is retiring the channel. The
TCD.MAJOR.E_LINK would be set in the programmer’s model, but it would be unclear whether the
actual link was made before the channel retired.
Table 12-23. Channel Linking Parameters
Desired Link
Behavior
TCD Control Field Name
Description
Link at end of
minor loop
citer.e_link
Enable channel-to-channel linking on minor loop
completion (current iteration).
citer.linkch
Link channel number when linking at end of minor
loop (current iteration).
Link at end of
major loop
major.e_link
Enable channel-to-channel linking on major loop
completion.
major.linkch
Link channel number when linking at end of major
loop.