# Flash_Sync_Demo

---

## 功能描述

该例程展示了如何操作Flash。
1. Flash需要先调用 FLASH_DRV_Init() 进行初始化。
2. 先调用了 FLASH_DRV_EraseSector() 函数擦除指定的扇区。
3. 再调用 FLASH_DRV_Program() 对指定位置进行编程。
4. 最后再通过指针读取方式回读数据进行了验证。

---

## 硬件要求

+ **开发板**: YTM32B1MD2-EVB-Q100
+ **调试器**: J-LINK v9.2 或更高版本

---

## 软件要求

+ **SDK**     : YTM32B1MD2_1_3_1 或更高版本
+ **GCC**     : GNU GCC v10.3 或更高版本
+ **Keil/MDK**: ARM Keil/MDK v5.36 或更高版本
+ **IAR**     : IAR v8.40 或更高版本
+ **VS Code** : Microsoft Visual Studio Code IDE v1.76 或更高版本（GNU GCC 工具链，CMake v3.25，ninja，Cortex-Debug 扩展安装）
+ **J-LINK**  : SEGGER JLINK v6.96 或更高版本，需要安装 YTM32B1MD2 补丁（支持包）
+ **Ozone**   : SEGGER Ozone v3.28 或更高版本

---

## 注意事项
1. DFlash没有ECC 并且 不会被Cache，建议用户自己做好数据校验。
2. Flash Cache开启的情况下，操作PFlash前强烈建议关闭Cache（关闭Cache做法最简单，也不易出错）。
3. 调用 FLASH_DRV_Program() 函数时，需要确保要写入的地址中数据是全FF的。
4. FLASH_DRV_EraseSector() 参数地址必须是扇区的整数倍。
5. FLASH_DRV_Program() 参数地址和大小必须是FEATURE_EFM_WRITE_UNIT_SIZE的整数倍，pData参数建议4字节对齐。
---