4 direct memory access descriptors, 1 no-descriptor fetch mode, Section 5.1.4, “direct memory access descriptors – Intel PXA26X User Manual

Page 164

Advertising
background image

5-6

Intel® PXA26x Processor Family Developer’s Manual

Direct Memory Access Controller

5.1.4

Direct Memory Access Descriptors

The DMAC operates in two distinct modes: descriptor fetch mode and no-descriptor fetch mode.
The mode used is determined by the DCSRx[NODESCFETCH] bit.

The descriptor fetch and no-descriptor modes can be used simultaneously on different channels.
This means that some DMA channels can be active in one mode while other channels are active in
the other mode.

A channel must be stopped before it can be switched from one mode to the other.

If an error occurs in a channel, it returns to its stopped state and remains there until software clears
the error condition and writes a 1 to the DCSR[RUN] register.

5.1.4.1

No-Descriptor Fetch Mode

In no-descriptor fetch mode, the DDADRx is reserved. Software must not write to the DDADRx
and must load the DSADRx, DTADRx, and DCMDx registers. When the run bit is set, the DMAC
immediately begins to transfer data. No-descriptor fetches are performed at the beginning of the
transfer. The channel stops when it finishes the transfer.

Ensure that the software does not program the channel’s DDADRx in no-descriptor fetch mode.

A typical no-descriptor fetch mode (DCSR[NODESCFETCH] = 1) operation is:

1. The channel is in an uninitialized state after reset.

2. The DCSR[RUN] bit is set to a 0 and the DCSR[NODESCFETCH] bit is set to a 1.

3. The software writes a source address to the DSADR register, a target address to the DTADR

register, and a command to the DCMD register. The DDADR register is reserved in this No-
Descriptor Fetch Mode and must not be written.

4. The software writes a 1 to the DCSR[RUN] bit and the No-Descriptor fetches are performed.

5. The channel waits for the request or starts the data transfer, as determined by the

DCMD[FLOW] source and target bits.

6. The channel transmits a number of bytes equal to the smaller of DCMD[SIZE] and

DCMD[LENGTH].

7. The channel waits for the next request or continues with the data transfer until the

DCMD[LENGTH] reaches zero.

8. The DDADR[STOP] is set to a 1 and the channel stops.

Figure 5-3

summarizes typical no-descriptor fetch mode operation.

Advertising