0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

GReq_mcu168 来源:玩转单片机 作者:玩转单片机 2020-12-22 16:51 次阅读

本文介绍了如何解决STM32芯片Flash写保护导致无法下载程序,无法在线调试的问题;如果您遇到相同的问题,希望本文可以带来一些帮助;

1 FLASH的写保护

如果对Flash设置了写保护,那就无法对Flash进行编程和擦除。

在开发STM32的时候,如果出现这种情况,通常仿真器都支持对Flash进行解锁,像jlink,stlink等仿真器都支持这个功能。

2 错误提示

在使用MDK进行调试的时候,出现报错 ==Flash Timeout.Reset Target and try it again==,具体如下图所示;

折腾了一番之后,并没有解决问题,因为使用的仿真器是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,具体如下图所示;

OK,下面只需要接触写保护就行了,所以在菜单栏target里打开Option Bytes...选项,或者直接通过快捷键ctrl+B打开,请确保当前已经正确连接了stlink和目标板,否则会出现报错;

正确连接的情况下,打开Option Bytes...,发现在这里Read Out Protection选项是enable,这个表示无法通过swd读取STM32内部Flash的程序。

e9bbff56-442d-11eb-8b86-12bb97331649.png

关键点:将Read Out Protection选项设置为disable,点击Apply,这时候Flash已经成功解锁了。但是同时发现,内部Flash已经被擦除了;

这可能STM32的保护机制有关,防止程序被拷机,然后进行反编译破解,这样也可以提高破解的门槛。具体显示如下图所示;

e9efce4e-442d-11eb-8b86-12bb97331649.png

完成以上步骤之后,在菜单栏Target下选择Disconnect,或者通过快捷键ctrl+D断开和目标板的连接;重新进入MDK,就能正常对目标板进行调试,仿真,以及程序的烧写。

3.3 写保护

在菜单栏target里打开Option Bytes...选项,我们还看到下面有Flash sector protection选项;选择Select all之后,发现所有Page都已经写保护了,只要选择apply选项就可以对Flash进行写保护;具体如下所示;

ea2baf4a-442d-11eb-8b86-12bb97331649.png

4 总结

对于Flash写保护的问题可以结合STM32参考手册进行相应的学习,其内部Flash提供相应的保护机制,本文只是结合ST官方工具stlink utility解决一下常见的这个简单的问题。

责任编辑:xj

原文标题:如何优雅地解决STM32的Flash写保护的问题?

文章出处:【微信公众号:玩转单片机】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6011

    文章

    44153

    浏览量

    624302
  • FlaSh
    +关注

    关注

    10

    文章

    1573

    浏览量

    146983
  • STM32
    +关注

    关注

    2249

    文章

    10725

    浏览量

    350297

原文标题:如何优雅地解决STM32的Flash写保护的问题?

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    验证flash加密功能时不小心将FLASH_CRYPT_CNT字段设置成写保护了,如何取消写保护

    验证flash加密功能时不小心将FLASH_CRYPT_CNT字段设置成写保护了,导致现在无法关闭fla
    发表于 06-13 07:23

    STM32F1 IAP操作读保护选项字节设置,APP使用系统复位跳转后无法运行IAP的原因?

    最近调试一个程序,是基于STM32F1做的IAP,升级前后需要修改选项字节,FLASH_EraseOptionBytes函数内OB->RDP=RDP_Key语句实现读
    发表于 05-13 08:09

    STM32F0设置了FALSH写保护后不能下载程序是什么原因导致的?

    开发环境用KEIL5+JLINK进行程序调试STM32F0根据选项字节进行FALSH写保护后,下次不能再程序
    发表于 04-18 07:51

    STM32程序无法正常运行的原因?如何解决?

    在使用STM32G473VETx芯片时(1.8V电源),使用GPIO口作为电源芯片的使能信号,发现链接下载器时GPIO口虽然能输出电压,但不正确,理论上应为1.8V,实际为0.5V和1
    发表于 04-08 07:30

    STM32F407读保护无法解锁如何解决?

    项目中用到STM32F407,程序烧录后,开始运行正常,后面出现芯片死机不运行的情况,Jlink重新烧录程序提示保护。 网上搜索方法,用ST
    发表于 03-25 08:09

    STM32搭载custom human interface device class(HID)后与stlink冲突会导致cubeide无法下载或者调试报错怎么解决?

    STM32单片机搭载custom human interface device class(HID)后与stlink冲突会导致cubeide中无法下载或者
    发表于 03-07 06:41

    请问如何启用CYT2B75芯片Flash写保护功能?

    请问如何启用CYT2B75芯片Flash写保护功能?用来防止对Flash的非法访问。
    发表于 02-02 06:21

    GD32 MCU进入低功耗模式导致无法再进行程序下载怎么办?

    很多朋友在调试GD32 MCU的低功耗模式时会遇到一个问题:程序中让MCU进入了Sleep、Deepsleep或者Standby模式,之后MCU就无法下载
    的头像 发表于 01-12 09:41 2648次阅读
    GD32 MCU进入低功耗模式<b class='flag-5'>导致</b><b class='flag-5'>无法</b>再进行<b class='flag-5'>程序</b><b class='flag-5'>下载</b>怎么办?

    相机储卡的写保护开关为锁定怎么办?

    相机储卡的写保护开关为锁定怎么办? 相机存储卡的写保护开关被锁定时,意味着您无法对存储卡进行任何写操作,例如拍摄照片、录制视频或删除文件。 首先,在尝试任何解决方法之前,确保存储卡
    的头像 发表于 12-09 14:32 4589次阅读

    单片机程序无法下载

    原因一:电源问题电源可能是导致STM32微控制器无法下载程序的一个常见原因。确保电源稳定对于正常运行和
    的头像 发表于 11-09 08:00 1660次阅读
    单片机<b class='flag-5'>程序</b><b class='flag-5'>无法</b><b class='flag-5'>下载</b>?

    STM32加密问题:怎样预置一段Flash保护和清除读保护程序

    STM32加密问题:怎样预置一段Flash保护和清除读保护程序STM32加密方案中,为了
    的头像 发表于 10-29 17:24 1558次阅读

    STM32Flash写了保护怎么办?STM32如何设置读保护和解除读保护

    保护机制,然后才能更好地解决这个问题。 STM32Flash有两种保护,一种是写保护,一种是读保护
    的头像 发表于 10-29 17:24 8746次阅读

    STM32用串口下载后,不小心写保护和读保护了,如何解锁?

    STM32用串口下载后,不小心写保护和读保护了,如何解锁? 在STM32的开发过程中,有些时候可
    的头像 发表于 10-29 17:24 3737次阅读

    讲讲STM32单片机Flash的读保护写保护

    讲讲STM32单片机Flash的读保护写保护
    的头像 发表于 10-26 15:52 5703次阅读
    讲讲<b class='flag-5'>STM32</b>单片机<b class='flag-5'>Flash</b>的读<b class='flag-5'>保护</b>和<b class='flag-5'>写保护</b>

    4G路由器无法上网时!该如何解

    4G路由器无法上网时!该如何解
    的头像 发表于 07-20 09:43 1870次阅读
    4G路由器<b class='flag-5'>无法</b>上网时!该如<b class='flag-5'>何解</b>决