# 项目名称：Fls_EccErrorHandling_Demo

---
## 功能描述

本示例用于演示 MCAL Fls 模块处理 Fls Ecc 错误的配置和使用:

- **Fls**: 
  - 测试 Fls 的擦除、写入、读取等API；
  - 启用 ECC 错误中断；

复位后，初始化 Fls 模块并执行以下测试:
+ 修改寄存器 EFM[TIMING2]的值, 然后擦除 FlsConf_FlsConfigSet_PFLS_SEC0  扇区并写入数据，在该扇区中制造多Bit Ecc错误；
+ 调用Fls_Read API 从 FlsConf_FlsConfigSet_PFLS_SEC0 读取数据，从而引发多 Bit ECC 错误，并产生ECC错误中断；
+ 检查读取操作的结果是否为 MEMIF_JOB_FAILED，以及是否发生多 Bit ECC 错误中断；
+ 读取操作结果为MEMIF_JOB_FAILED且发生多 Bit ECC 错误中断，即测试完成，擦除 FlsConf_FlsConfigSet_PFLS_SEC0 扇区，清除制造的ECC错误，否则测试失败；

**注意**：
- 本示例首先需要产生多 bit ECC 错误, 如果没有产生多 bit ECC 错误，您可能需要相应地调整主函数中 EFM[TIMING2] 的值。

- EFM[TIMING2] 仅用于本示例中产生ECC错误, 不得在生产环境中使用。

- 当示例运行至main函数主循环时，表示Flash ECC错误处理完成。若本示例在下方所示代码处无法继续运行后续代码，则表示未产生 uncorrectable ECC错误，您可能需要调整 EFM[TIMING2] 的值，使其满足产生 uncorrectable ECC 错误的条件。
```c
    /*Check the uncorrectable error hanppen or not, if yes, the Fls_Read option will be failed, and bus fault will be triggered*/
    while((Fls_GetJobResult() != MEMIF_JOB_FAILED)||(Fls_EccUnRecErrorCnt==0))
    {
      __ASM("NOP");
    }
```

---


## 操作步骤

+ ***步骤1***：使用 YCT 工具打开示例的配置工程文件（`Fls_EccErrorHandling_Demo.yct`），根据您的需求配置工具链（默认使用 VS Code + GCC）。
+ ***步骤2***：生成代码，如果需要，您可以更改配置（以适应您自己的硬件设计），如果这样做，请确保所有修改都正确无误，并且在生成代码之前没有错误存在。
+ ***步骤3***：根据您的配置，使用相应的工具（VS Code/IAR/Keil IDE）打开生成的工程。
+ ***步骤4***：编译生成的工程，打开 EVB 电源并通过可用的调试器（如 J-Link 调试探针）将编译好的可执行文件下载到 EVB。
+ ***步骤5***：调试、运行示例代码。
  
---

## 硬件需求
+ **EVB**: YTM32B1MD1-EVB-Q100-Rev.A/B
+ **调试器**: J-Link HW v9 或更高版本，安装了 YUNTU `YTM32B1MD1` 补丁（支持包）。

***注意***: 请确认EVB底部的版本号，如果是***YTM32B1MD1-EVB-Q100-Rev.A***，`Icu_Demo`请使用以`_RevA`结尾的样例工程。

---

## 软件需求

+ **配置和代码生成工具**
  + **MCAL**: Yuntu Config Tool(YCT) v2.7.0 或更高版本
+ **编译器工具链**
  + **GCC**: GNU GCC v10.3 或更高版本
  + **Keil/MDK**: ARM Keil/MDK v5.36 或更高版本(编译器推荐使用`armclang v6.18.2`)
  + **IAR**: IAR v9.50 或更高版本
  + **VS Code**: Microsoft Visual Studio Code IDE v1.76 或更高版本（需要 C/C++ 支持，GNU 工具链，CMake v3.25，ninja，Cortex-Debug 扩展安装）
+ **Debugger driver**
    + **J-Link**: SEGGER J-Link v7.82 或更高版本，需要安装 YUNTU `YTM32B1MD1` 补丁（支持包）。
    + **Ozone Debugger tool**: SEGGER Ozone v3.28 或更高版本。

    ***注意***: 需要安装 **YTM32B1MD1** 补丁，补丁可通过 **YCT** 工具或联系 ***云途 销售/FAE 团队***获取.

---