Information

DMA Controller (DMAC)
MPC8308 PowerQUICC II Pro Processor Reference Manual, Rev. 1
12-2 Freescale Semiconductor
be transferred is statically known, and is not defined within the data packet itself. The DMA hardware
supports:
16 Channels
32-byte transfer control descriptor per channel stored in local memory
32 bytes of data registers, used as temporary storage to support burst transfers
Throughout this section, n is used to reference the channel number. Additionally, data sizes are defined as
byte (8-bit), half-word (16-bit), word (32-bit), and double word (64-bit).
12.1.1 Features
The DMA module supports the following features:
All data movement via dual-address transfers: read from source and write to destination
Programmable source, destination addresses, transfer size, plus support for enhanced
addressing modes
Transfer control descriptor organized to support two-deep, nested transfer operations
An inner data transfer loop defined by a “minor” byte transfer count
An outer data transfer loop defined by a “major” iteration count
Channel service request via one of two methods:
Explicit software initiation
Initiation via a channel-to-channel linking mechanism for continuous transfers
Independent channel linking at end of minor loop and/or major loop
For both the methods, one service request per execution of the minor loop is required
Support for fixed-priority and round-robin channel arbitration
Channel completion reported via optional interrupt requests
One interrupt per channel, optionally asserted at completion of major iteration count
Error terminations are optionally enabled per channel, and logically summed together to form
a small number of error interrupt outputs
Support for scatter/gather DMA processing
12.2 DMAC Memory Map/Register Definition
The DMA programming model is partitioned into two sections, both mapped into the IPIslave space: the
first region defines a number of registers providing control functions while the second region corresponds
to the local transfer control descriptor memory. Reading an unimplemented register bit or memory location
returns the value of zero. Read modified write should be used for unimplemented register bits. Any access