Modifying a Descriptor in a List

In order to add descriptors to a linked list, the following actions must be performed:

  1. 1.Enable the Suspend interrupt for the DMA channel.
  2. 2.Enable the DMA channel.
  3. 3.Reserve memory space in LP SRAM to configure a new descriptor.
  4. 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. 5.Clear the VALID bit for the existing list and for the descriptor which has to be updated.
  6. 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. 7.Go to step 4 if needed.