In order to add descriptors to a linked
list, the following actions must be performed:
- 1.Enable the Suspend interrupt for the
DMA channel.
- 2.Enable the DMA channel.
- 3.Reserve memory space in SRAM to configure a new descriptor.
- 4.Configure the new descriptor:
- Set the next descriptor address
(DESCADDR)
- Set the destination address (DSTADDR)
- Set the source address (SRCADDR)
- Configure the block transfer
control (BTCTRL) including
- Optionally enable the
Suspend block action
- Set the descriptor VALID
bit
- 5.Clear the VALID bit for the existing
list and for the descriptor which has to be updated.
- 6.Read DESCADDR from the Write-Back memory.
- If the DMA has not already fetched
the descriptor which requires changes (i.e., DESCADDR is wrong):
- Update the DESCADDR location of the descriptor from
the List
- Optionally clear the Suspend
block action
- Set the descriptor VALID bit
to '1'
- Optionally enable the Resume
software command
- If the DMA is executing the same
descriptor as the one which requires changes:
- Set the Channel Suspend
software command and wait for the Suspend interrupt
- Update the next descriptor
address (DESCRADDR) in the write-back
memory
- Clear the interrupt sources
and set the Resume software command
- Update the DESCADDR location of the descriptor from the
List
- Optionally clear the Suspend
block action
- Set the descriptor VALID bit
to '1'
- 7.Go to step 4 if needed.