# 变更日志

本项目的所有重要变更均记录在此文件中。

本文档格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/)，
项目版本遵循[语义化版本](https://semver.org/lang/zh-CN/)。

## [未发布]

## [1.1.1] - 2026-08-14

### 变更

- 各示例工程现在统一在 Flash 操作前调用 `FLASH_DRV_Init()`（YTM32B1MC0 与 YTM32B1LE1 示例工程已补充调用）。
- 更新 `fls_drv_bin.h` 与 README 中关于 `FLASH_DRV_Init` 的说明：时序寄存器配置、读回校验行为、返回值及 `DEV_ASSERT` 相关表述。

### 修复

- `FLASH_DRV_EraseSector` 现在会拒绝超出 Flash 阵列或跨入不同扇区大小阵列的擦除范围，此前会静默截断或使剩余长度计数下溢。
- `FLASH_GetSectorSize` 增加主阵列下界检查，低于主阵列起始地址的地址（如 YTM32B1HA0）不再被误判为主阵列扇区。
- 重新生成全部示例工程内嵌的驱动二进制，使其与驱动源码一致。

## [1.1.0] - 2026-08-13

### 新增

- 新增 YTM32B1ME1 器件支持及对应的 Flash 驱动示例工程。
- 新增编译配置项 `FLASH_READ_VERIFY_ENABLE`，用于控制擦除和编程后的读回校验，默认启用。
- 新增项目及 YTM32B1ME1 示例工程的中文文档。

### 变更

- 支持识别具有独立数据 Flash 阵列器件的扇区大小。
- 在驱动初始化期间为支持的器件配置 EFM 时序寄存器。
- 根据 `FLASH_READ_VERIFY_ENABLE` 选择带校验或不带校验的擦除和编程命令。
- 对支持可配置擦除时序的器件，在启动交换前配置扇区擦除时序。
- 更新 YTM32B1 系列器件头文件、SVD 文件及启动文件。

### 修复

- 执行每条 Flash 命令前使用 `FEATURE_EFM_CMD_STS_CLEAR_MASK` 清除 `DONE` 及全部命令错误标志。
- 从 `FEATURE_EFM_CMD_ERROR_MASK` 中移除 `EFM_STS_RECOVERR_MASK`，可恢复错误不再判定为最终命令失败。

## [1.0.1] - 2025-08-05

### 新增

- 新增 YTM32B1MD2 器件支持及对应的 Flash 驱动示例工程。

### 变更

- 项目许可证变更为 BSD-3-Clause。
- 命令完成检测由 `IDLE` 标志改为 `DONE` 标志，并在等待期间检测访问错误。
- 对未定义 `EFM_CTRL_WE_MASK` 的器件，在擦除和编程操作前执行 NOP 命令以清除写缓冲区。
- Flash 缓存失效后增加缓存同步屏障。
- 将二进制工程的内存布局完全移至 `relative.ld`，包括 `.data` 段。

## [1.0.0] - 2025-04-10

### 新增

- 首次发布支持 YTM32B1 系列器件的 Flash 驱动。
