STM32开发踩坑——使用仿真器对芯片进行写保护解除
成立这个文字专栏的目的是,记录自己在STM32嵌入式开发过程中,觉得值得记录的东西,例如方法、感悟,用来方便自己回顾。
参考资料链接:
UM0892: STM32 ST-LINK Utility软件说明
图片示例:
在此情况下,使用程序烧写软件ST-LINK Utility连接STLink与目标板,会发现提示无法读取内存;
在此情况下,使用MDK烧写目标板,会发现提示Flash超时;
ST-Link Utility操作解决方法:
在使用STLink连接目标板的情况下打开程序烧写软件ST-Link Utility,在菜单栏的Target下选择connect,因为这时候Flash已经被锁住了,能看到如下图所示的错误提示。
下面来操作如何解除Flash保护。
1.请确保当前已经正确连接了STLink和目标板,在菜单栏Target里打开Option Bytes…选项,发现在这里Read Out Protection选项是Level 1,这个表示无法通过SWD读取STM32内部Flash的程序。
2.将Read Out Protection选项设置为Level 0,并点击Apply。 这时候Flash已经成功解锁了,内部Flash已经被擦除了,如下图红框中所示。
3.完成以上步骤之后,在菜单栏Target下选择Disconnect断开与目标板连接。重新进入MDK,可以正常对目标板烧写程序了。
STM32CubeProgrammer操作解决办法:
在使用STLink连接目标板的情况下打开程序烧写软件STM32CubeProgrammer,在菜单栏的OB(选项字节)下点击Read按钮就可以查看到关于读取的相关保护设置,此时选择AA再点击Apply按钮即可。
扩展:
通过ST-Link Utility来设置Flash保护
在菜单栏Target里打开Option Bytes…选项,可以看到下面有Flash sector protection选项。选择Select all之后,发现所有Page的Protection项都已经变成Write Protection了,只要选择Apply选项就可以对Flash进行写保护,如上图所示。