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

这篇具有很好参考价值的文章主要介绍了如何优雅地解决STM32的Flash写保护的问题?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

1、FLASH的写保护

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

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

2、错误提示

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

flash写保护,硬件工程,stm32,单片机,嵌入式硬件

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

flash写保护,硬件工程,stm32,单片机,嵌入式硬件

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

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

flash写保护,硬件工程,stm32,单片机,嵌入式硬件

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

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

flash写保护,硬件工程,stm32,单片机,嵌入式硬件

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

3.3 写保护

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

flash写保护,硬件工程,stm32,单片机,嵌入式硬件

4、总结

对于Flash写保护的问题可以结合STM32参考手册进行相应的学习,其内部Flash提供相应的保护机制,本文只是结合ST官方工具stlink utility解决一下常见的这个简单的问题。文章来源地址https://www.toymoban.com/news/detail-689953.html

到了这里,关于如何优雅地解决STM32的Flash写保护的问题?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决keil-5中stm32f103系列使用ST-Link下载程序时不能连接的问题。“flash download failed ”

    出现的问题如下: 解决方法如下: 因为新版的Keil 加入了下载器的校验机制,所以我们需要替换掉新版编译器下的原文件 需要这个文件的评论下方留言记得留言哦。 一、解压后得到 STlink 文件夹,整个文件夹替换到 软件安装目录下 /ARM 处即可 二、更新下载器固件(更新一次

    2024年02月12日
    浏览(89)
  • 关于stm32 Flash Download failed -“Cortex-M3”的问题

    当使用仿真器或者其他方式烧录程序进入单片机时,有时候会遇到Flash Download failed -“Cortex-M3”的提示弹窗 1.首先我们可以检查一下型号是否选对,点击魔术棒选中Device选择与自己单片机相匹配的型号 (例如我的是野火的指南者所以我选择STM32F103VE)    再点击Debug选择自己所

    2024年02月13日
    浏览(50)
  • STM32芯片flash被锁导致Error Flash Download failed Cortex-M4,解决办法(全)亲测有效

    STM32芯片flash被锁导致Error: Flash Download failed - \\\"Cortex-M4\\\",解决办法(全)亲测有效🤩! 方法1:由于Keil 中debug的仿真器配置出错导致的下载失败(这种问题虽然是低级错误,但我还是觉得非常有必要确认一下自己的配置有没有出错) 方法2:使用第三方烧录软件,通过串口烧录

    2024年02月12日
    浏览(54)
  • STM32出现Error:Flash Download failed - “Cortex-M4“解决办法

    问题出现背景:         使用robomaster A型开发板出现Error:Flash Download failed - \\\"Cortex-M4\\\"问题 问题现象: 并且在keil5中Debug下的flah download为空 问题分析:         缺少开发板芯片,需要重新下载 。并且导入到了keil5中 问题解决过程:   1.下载芯片安装包 官网:Arm Keil | Dev

    2024年02月06日
    浏览(47)
  • 解决stm32芯片锁死 出现Error:Flash Download Failed-“Cortex-M3“

    打开MDK软件使用SW当时连接单片机发现能连接到板子 显示已经连接上 但是再下载的时候出现Error:Flash Download Failed-\\\"Cortex-M3\\\"下载错误 首先排除硬件连接问题,能够连接到stm32说明硬件连接没有问题,再排除软件编译错误,最后预估可能是硬件stm32芯片由于脉冲电平的干扰导致芯

    2024年02月15日
    浏览(94)
  • STM32 keil5 报错:flash download failed-cortex M3解决方法

    错误回顾 解决方法 

    2024年01月16日
    浏览(63)
  • STM32内部Flash

    目录 一、内部Flash简介 二、内部Flash构成 1. 主存储器 2. 系统存储区 3. 选项字节 三、内部Flash写入过程 1. 解锁 2. 页擦除 3. 写入数据 四、工程空间分布 某工程的ROM存储器分布映像: 1. 程序ROM的加载与执行空间 2. ROM空间分布表         STM32芯片内部有一个Flash存储器,主要

    2024年02月19日
    浏览(50)
  • STM32笔记 Flash

    笔记来源于江科协议的视频 芯片采用与stm32F103C8T6 •STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分,通过闪存存储器接口(外设)可以对程序存储器和选项字节进行擦除和编程,系统存储器里面存储的是BootLoader,是不允许修改的。 •读写FLASH的用途: 利

    2024年01月18日
    浏览(42)
  • STM32 FLASH error: FLASH_FLAG_PGPERR & FLASH_FLAG_PGSERR

    在STM32F429 上用FLASH 模拟 EEPROM,工程是STM32CubeIDE里面创建和生成的。调试时发现第一次写FLASH时总是出错,第二次及之后再写FLASH则没问题。 写FLASH之前会擦除FLASH Sector,第一次擦除时出错。进一步跟踪,发现是调用 FLASH_WaitForLastOperation 时返回错误。以下是HAL库里FLASH_WaitForL

    2024年02月04日
    浏览(31)
  • STM32 FLASH 读写数据

    2.1 修改代码后编译,会有提示信息 KEIL,计算出来代码总共 61076 Byte 2.2 如果什么都没有改,直接编译是没有这个提示信息的 0x08000000 是存放代码的起始地址,我们保存的数据要和代码分开,放在代码区域后面,所以后面加了个80000, 比keil 编译里面算出来的和要大将近2 万个

    2024年02月12日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包