如何解决STM32芯片Flash写保护导致无法下载程序,无法在线调试的问题


本文介绍了如何解决STM32芯片Flash写保护导致无法下载程序,无法在线调试的问题;如果您遇到相同的问题,希望本文可以带来一些帮助;
1 FLASH的写保护
如果对Flash设置了写保护,那就无法对Flash进行编程和擦除 。
在开发STM32的时候,如果出现这种情况,通常仿真器都支持对Flash进行解锁,像jlink,stlink等仿真器都支持这个功能 。
2 错误提示
在使用MDK进行调试的时候,出现报错 ==Flash Timeout.Reset Target and try it again==,具体如下图所示;

如何解决STM32芯片Flash写保护导致无法下载程序,无法在线调试的问题
文章插图
折腾了一番之后,并没有解决问题,因为使用的仿真器是stlink,因此下载了stlink utility尝试解决问题;
3 stlink utility
3.1 基本功能
stlink utility是ST官方提供的免费软件,支持STM32 ST-LINK的程序包括带有命令行界面(CLI)的图形用户界面(GUI) 。该工具还提供了较多的其他功能,具体如下;
可以对STM32内部存储器(Flash,RAM,OTP和其他存储器),外部存储器进行编程;
验证程序内容(校验和,在编程期间和之后进行校验,与文件进行比较等)
还能实现 STM32编程自动化;
另外还提供其他的功能;
3.2 解锁Flash
在stlink连接目标板的情况下,打开stlink utility,在菜单栏的Target下选择connect,因为这时候Flash已经被锁住了,所以同样地也看到相应的错误提示Can not read memory Disable Read Out Protection and retry,具体如下图所示;

如何解决STM32芯片Flash写保护导致无法下载程序,无法在线调试的问题
文章插图
OK,下面只需要接触写保护就行了,所以在菜单栏target里打开Option Bytes...选项,或者直接通过快捷键ctrl+B打开,请确保当前已经正确连接了stlink和目标板,否则会出现报错;
正确连接的情况下,打开Option Bytes...,发现在这里Read Out Protection选项是enable,这个表示无法通过swd读取STM32内部Flash的程序 。

如何解决STM32芯片Flash写保护导致无法下载程序,无法在线调试的问题
文章插图
关键点:将Read Out Protection选项设置为disable,点击Apply,这时候Flash已经成功解锁了 。但是同时发现,内部Flash已经被擦除了;
这可能STM32的保护机制有关,防止程序被拷机,然后进行反编译破解,这样也可以提高破解的门槛 。具体显示如下图所示;

如何解决STM32芯片Flash写保护导致无法下载程序,无法在线调试的问题
文章插图
完成以上步骤之后,在菜单栏Target下选择Disconnect,或者通过快捷键ctrl+D断开和目标板的连接;重新进入MDK,就能正常对目标板进行调试,仿真,以及程序的烧写 。
3.3 写保护
在菜单栏target里打开Option Bytes...选项,我们还看到下面有Flash sector protection选项;选择Select all之后,发现所有Page都已经写保护了,只要选择apply选项就可以对Flash进行写保护;具体如下所示;

如何解决STM32芯片Flash写保护导致无法下载程序,无法在线调试的问题
文章插图
4 总结
对于Flash写保护的问题可以结合STM32参考手册进行相应的学习,其内部Flash提供相应的保护机制,本文只是结合ST官方工具stlink utility解决一下常见的这个简单的问题 。
责任编辑:xj
原文标题:如何优雅地解决STM32的Flash写保护的问题?
文章出处:【微信公众号:玩转单片机】欢迎添加关注!文章转载请注明出处 。
【如何解决STM32芯片Flash写保护导致无法下载程序,无法在线调试的问题】
.dfma {position: relative;width: 1000px;margin: 0 auto;}.dfma a::after {position: absolute;left: 0;bottom: 0;width: 30px;line-height: 1.4;text-align: center;background-color: rgba(0, 0, 0, .5);color: #fff;font-size: 12px;content: "广告";}.dfma img {display: block;}
如何解决STM32芯片Flash写保护导致无法下载程序,无法在线调试的问题
文章插图

    推荐阅读