UDMA Chaining
Introduction
UDMA chaining sample application performs a chain of block copy transfer using channel global trigger.
Channel 0 completion triggers Channel 1 transfer: CH0 -> CH1.
The application opens and configures two BCDMA channel using SysConfig.
The first channel doesn’t user a global trigger and each channel triggers the next channel’s global trigger through the channel’s TR event register.
A channel’s source buffer is previous channel’s destination buffer. This ensures that chaining trigger works in a synchronized manner when the memory compare matches.
The transfer completion is based on last channel’s DMA completion event. Once the transfer it completes, it does cache operation for data coherency and compares the source and destination buffers for any data mismatch.
Supported Combinations
Parameter |
Value |
|---|---|
CPU + OS |
a53ss0-0 nortos |
CPU + OS |
a53ss0-0 freertos |
CPU + OS |
c75ss0-0 freertos |
CPU + OS |
mcu-r5fss0-0 nortos |
CPU + OS |
mcu-r5fss0-0 freertos |
CPU + OS |
r5fss0-0 freertos |
CPU + OS |
r5fss0-0 nortos |
Toolchain |
ti-arm-clang |
Toolchain |
arm.gnu.aarch64-none |
Toolchain |
ti-c7000 |
Board |
am62dx-evm |
Example folder |
examples/drivers/udma/udma_chaining |
Steps to Run the Example
When using CCS projects to build, import the CCS project for the required combination and build it using the CCS project menu (see Using SDK with CCS Projects).
When using makefiles to build, note the required combination and build using make command (see Using SDK with Makefiles)
Launch a CCS debug session and run the executable, see CCS Launch, Load and Run
See Also
Sample Output
Shown below is a sample output when the application is run,
[UDMA] Chaining application started ...
All tests have passed!!