片上 Flash 读写
说明
- 某些 MCU 允许从
Code Flash中划出一块区域, 作为参数存储或掉电保存区域. - 设计这类区域时, 首先要确认扇区大小, 擦除粒度和链接脚本中的地址布局.
分区要点
以 ch32v307 一类芯片为例, 需要先根据手册与链接脚本确认可用地址:
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 256K
USER (rw) : ORIGIN = 0x0040800, LENGTH = 32K
若映射到运行地址, 则用户区可能对应:
0x8040800 ~ 0x8048800
开发要点
- 地址必须满足擦除扇区对齐要求.
- 写入前通常需要
unlock. - 修改前往往要先按页或按扇区擦除.
- 写完后要重新
lock, 并做好读回校验.
风险点
- 若与程序区重叠, 可能直接导致程序异常或无法启动.
- 频繁擦写要关注寿命与掉电保护.
- 参数结构最好带版本号, 校验和或冗余副本.
适用场景
- 保存出厂参数, 校准值, 序列号.
- 保存少量配置项或升级状态标记.
- 在没有外部 EEPROM / FRAM 时做轻量持久化.