Ameba-D User Manual
User Manual All information provided in this document is subject to legal disclaimers. © REALTEK 2019. All rights reserved.
172
9.4.3.1.1
Block Chaining Using Linked Lists
To enable multi-block transfers using block chaining, you must set the configuration parameter DMAH_CHx_MULTI_BLK_EN to True and the
DMAH_CHx_HC_LLP parameter to False.
In this case, the DMAC reprograms the channel registers prior to the start of each block by fetching the block descriptor for that block from
system memory. This is known as an LLI update.
DMAC block chaining uses a Linked List Pointer register (LLPx) that stores the address in memory of the next linked list item. Each LLI contains
the corresponding block descriptors:
SARx
DARx
LLPx
CTLx
SSTATx
DSTATx
To set up block chaining, you program a sequence of Linked Lists in memory.
LLI accesses are always 32-bit accesses (Hsize = 2) aligned to 32-bit boundaries and cannot be changed or programmed to anything other than
32-bit, even if the AHB master interface of the LLI supports more than a 32-bit data width.
The SAR
x
, DAR
x
, LLP
x
, and CTL
x
registers are fetched from system memory on an LLI update. If configuration parameter
DMAH_CHx_CTL_WB_EN = True, then the updated contents of the CTL
x
, SSTAT
x
, and DSTAT
x
registers are written back to memory on block
completion. Fig 9-45 and Fig 9-46 show how you use chained linked lists in memory to define multi-block transfers using block chaining.
Fig 9-45 Multi-block transfer using linked lists when DMAH_CHx_STAT_SRC set to true
It is assumed that no allocation is made in system memory for the source status when the configuration parameter DMAH_CHx_STAT_SRC is
set to False. If this parameter is False, then the order of a Linked List item is as follows:
SARx
DARx
LLPx
CTLx
DSTATx
Realtek confidential files
The document authorized to
SZ99iot
2019-05-15 10:08:03