最近研究了STM32单片机读写保护问题,将收集整理的信息汇总如下:
1 读保护:保护保存在MCU上的执行代码不会被调试/下载工具拷贝出来。STM32 读保护有三个等级 L0 L1 L2
- L0 是没有保护,可以随意读出来的,一般调试过程中选择。在L0 状态可以设置成L1 或者L2,修改完成不会擦除芯片已有的代码;
- L1 是可恢复读保护,L1-->L0状态,,会自动擦除已有的程序。L1->L2,这个设置还没有试过,(正常理解是不擦除);
- L2 是不可恢复读保护,此状态下,不可恢复到其他的状态,同时芯片里的程序不能再升级 类似OTP了;
这个主要是保护代码不会被其他人恶意拷贝,保护原作者的权益。
2 写保护: 保护存在MCU上的代码 不会被异常修改。正常的代码更新流程需要先失能对应的保护位,更新完成再次恢复之前的保护位。 这个主要是保护程序正常运行的时候,不会被异常更改。
3 如图的STM32 ST-LINK UNILITY 工具上的读写保护和一些用户设置,包括在调试的停时 看门狗是否继续计数等设置
|
STM32 读写保护.png (170.95 KB, 下载次数: 60)
读保护去除步骤:
- 使用ST-Link连接到STM32芯片,点击Connect。
2. 存在读保护。
3. 修改选项字节。
4.将读保护等级修改为Level 0。
5. 打钩的扇区会添加写保护,点击Unselect all不选择写保护。
6. 写入选项字节后Flash会被擦除。
7. 能正常写入程序。