# Project Name：CddDma_Demo
---
## Function description

+ This demo is uses Direct Memory Access (DMA) controller to transfer data from one memory location to another. The code sets up DMA channel 0, configures it to perform a memory-to-memory transfer.
+ The main function initializes various variables including arrays for storing source and destination data, and installs callback functions for DMA events such as transfer completion or errors. The main function then enters an infinite loop, where it repeatedly triggers the DMA transfer, waits for it to complete, and compares the source and destination buffers of data to ensure successful transfer.
+ There is also an optional test condition RAM_RELOAD_FUNCTION_TEST which, when set to STD_ON, tests the RAM reload feature of the DMA controller.
---
## Setup

+ ***Step1***: Open the CddDma_Demo.yct with the YCT tool, config the toolchain per your required(by default, the VS code + GCC are used)
+ ***Step2***：Generate the codes， you can change the configurations if needed(to adapt to your own HW design), if so, please ensure all the modifications are OK with no any errors exist before generating the code.
+ ***Step3***: Open the generated project with VS code/IAR/Keil IDE per your selected.
+ ***Step4***: Compile the project, power on the EVB and download it to the EVB via the available debugger, such as a J-Link debugger probe.
+ ***Step5***: At last, enjoy the demo example.

- **DEFAULT** 
  + The demo project will transfer 32 bytes data from the source buffer to the destination buffer, and then compare the source and destination buffers of data to ensure successful transfer. 

- **RAM reload** 
  + To test the RAM reload feature of the DMA controller, please set the *RAM_RELOAD_FUNCTION_TEST* to *STD_ON* in the main.c file.

---

## Hardware requirement
+ **EVB**: YTM32B1MD1-EVB-Q100-Rev.A/B
+ **Debugger**: J-Link HW v9 or later with YUNTU `YTM32B1MD1` patch(support package) installed.

**Note**: Please check the version number at the bottom of the EVB. If it is `YTM32B1MD1-EVB-Q100-Rev.A/B`, please use the example projects ending with `_RevA` for `Icu_Demo`.
---

## Software requirement

+ **Config & Code Generation Tool**
  + **MCAL**: Yuntu Config Tool(YCT) v2.7.0 or later version
+ **Compiler Toolchain**
  + **GCC**: GNU GCC v10.3 or later version
  + **Keil/MDK**: ARM Keil/MDK v5.36 or later version(`armclang v6.18.2` is recommended to be used as the compiler)
  + **IAR**: IAR v9.50 or later version
  + **VS Code**: Microsoft Visual Studio Code IDE v1.76 or later version(C/C++ support, GNU toolchain, CMake v3.25, ninja, Cortex-Debug extensions installation required)
+ **Debugger driver**
    + **J-Link**: SEGGER J-Link v7.82 or later version, YUNTU `YTM32B1MD1` patch(support package) installation required.
    + **Ozone Debugger tool**: SEGGER Ozone v3.28 or later version.

    ***Note***: **YTM32B1MD1** patch install required which can be obtained via **YCT** or contact ***YUNTU sales/FAE team***.

---