Flash写入白名单——别让上位机擦掉固件
一句话: 上位机发一条命令就能擦除任意 Flash 扇区——包括固件区和系统参数区。加地址白名单限制可擦范围固件区永远禁止系统参数走专用入口。适合谁读给上位机开了 Flash 读写命令的嵌入式开发者。问题为了让上位机写入定标数据开了 cmd 9擦除 Flash和 cmd 10/11写/读。但 cmd 9 没有地址限制——传什么地址擦什么扇区。如果上位机 BUG 或恶意传了0x08000000固件起始地址固件直接变砖。解决地址白名单/* cmd 9 仅允许擦除 0x08040000 及以上扇区 */ if (u32Addr 0x08040000U) { Flash_Erase(u32Addr); }地址范围cmd 9正确入口0x08000000~0x0801FFFF固件禁—0x08020000系统参数禁cmd 25 专用0x08040000定标数据可cmd 91011SN/日期 字段—cmd 21/23 单独写cmd 25 是新增的系统参数专用写命令内部自动擦除写入——不需要 cmd 9 插手。为什么不用密码密码被泄露、遗忘、硬编码在代码里一样不安全。白名单不需要密码——物理上不可能的地址直接拒绝。比密码更可靠。有用的话点个收藏下次调试直接用。有问题欢迎评论区交流看到了都会回。