DMA Controller

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-3summarizes typical No-Descriptor Fetch Mode operation.

Figure 5-3. No-Descriptor Fetch Mode Channel State

RESET (Hardware or Sleep)

 

 

 

DCSR[RUN]=0,

 

RUN=0

 

 

DCSR[NODESCFETCH]=1,

 

 

 

DSADR,DTADR,

Valid

 

 

 

DCMD programmed

 

 

Channel

descriptor

 

 

Uninitialized

 

 

 

 

 

not running

 

 

Error

 

 

RUN=1

 

 

 

 

No

 

DDADR[STOP] = 0

 

 

descriptor

 

DCMD[FLOWSRC] xor

 

 

 

fetch

RUN=0

 

 

DCMD[FLOWTRG] = 1

(running)

 

 

 

 

DCMD[FLOWSRC] &

 

 

DCMD[FLOWTRG] = 0

 

DCMD[FLOWSRC] xor

 

 

Wait

DCMD[FLOWTRG] = 1

 

 

for

 

 

Transferring

request

Request Asserted

Data

 

 

 

 

DDADR[STOP] = 1

DDADR[STOP] = 1

DCMD[LENGTH] 0

& DCMD[FLOWSRC] = 0

 

 

 

 

 

& DCMD[FLOWTRG] = 0

 

 

Stopped

 

 

 

5.1.4.2Descriptor Fetch Mode

In Descriptor Fetch Mode, the DMAC registers are loaded from DMA descriptors in main memory. Multiple DMA descriptors can be chained together in a list. This allows a DMA channel to transfer data to and from a number of locations that are not contiguous. The descriptor’s protocol design allows descriptors to be added efficiently to the descriptor list of a running DMA stream.

A typical Descriptor Fetch Mode (DCSR[NODESCFETCH] = 0) operation follows:

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

2.The software writes a descriptor address (aligned to a 16-byte boundary) to the DDADR register.

3.The software writes a 1 to the DCSR[RUN] bit.

4.The DMAC fetches the four-word descriptor (assuming that the memory is already set up with the descriptor chain) from the memory indicated by DDADR.

5.The four-word DMA descriptor, aligned on a 16-byte boundary in main memory, loads the following registers:

5-6

Intel® PXA255 Processor Developer’s Manual

Page 156
Image 156
Intel PXA255 manual No-Descriptor Fetch Mode Channel State