Enhanced Direct Memory Access (eDMA)
MPC5566 Microcontroller Reference Manual, Rev. 2
9-50 Freescale Semiconductor
The TCD status bits execute the following sequence for a hardware activated channel:
1. eDMA peripheral request asserts (issued service request via hardware)
2. TCD.START = 0, TCD.ACTIVE = 1, TCD.DONE = 0 (executing)
3. TCD.START = 0, TCD.ACTIVE = 0, TCD.DONE = 0 (completed minor loop and is idle) or
4. TCD.START = 0, TCD.ACTIVE = 0, TCD.DONE = 1 (completed major loop and is idle)
For both activation types, the major loop complete status is explicitly indicated via the TCD.DONE bit. 
The TCD.START bit is cleared automatically when the channel begins execution regardless of how the 
channel was activated.
9.4.6.2 Active Channel TCD Reads
The eDMA reads the true TCD.SADDR, TCD.DADDR, and TCD.NBYTES values if read while a 
channel is executing. The true values of the SADDR, DADDR, and NBYTES are the values the eDMA 
engine is currently using in its internal register file and not the values in the TCD local memory for that 
channel. The addresses (SADDR and DADDR) and NBYTES (decrements to zero as the transfer 
progresses) can give an indication of the progress of the transfer. All other values are read back from the 
TCD local memory. 
9.4.6.3 Preemption Status
Preemption is only available when fixed arbitration is selected for both group and channel arbitration 
modes. A preempt-able situation is one in which a preempt-enabled channel is running and a higher 
priority request becomes active. When the eDMA engine is not operating in fixed group, fixed channel 
arbitration mode, the determination of the relative priority of the actively running and the outstanding 
requests become undefined. Channel and/or group priorities are treated as equal (or more exactly, 
constantly rotating) when round-robin arbitration mode is selected.
The TCD.ACTIVE bit for the preempted channel remains asserted throughout the preemption. The 
preempted channel is temporarily suspended while the preempting channel executes one iteration of the 
major loop. Two TCD.ACTIVE bits set at the same time in the overall TCD map indicates a higher priority 
channel is actively preempting a lower priority channel.
9.4.7 Channel Linking
Channel linking (or chaining) is a mechanism where one channel sets the TCD.START bit of another 
channel (or itself) thus initiating a service request for that channel. This operation is automatically 
performed by the eDMA engine at the conclusion of the major or minor loop when properly enabled. 
The minor loop channel linking occurs at the completion of the minor loop (or one iteration of the major 
loop). The TCD.CITER.E_LINK field are used to determine whether a minor loop link is requested. When 
enabled, the channel link is made after each iteration of the minor loop except for the last.