关于解除stm32读/写保护(level1)
2026/6/26 5:15:25 网站建设 项目流程

以我手上板子型号为stm32f103c8t6烧录器为st-link2为例,就刚才我使用ai进行linux与stm32进行can通信通过keil5烧录开发,将ai生成的代码烧录进去后发现后续再烧录会出现错误:

我一开始以为是电脑识别问题或者板子烧毁,后面再问ai,说有可能是出现读写保护,废话不多说,下面讲解解除读写保护,但是先警告,解除读写保护将会清除板子上原有程序,算法上几乎等于恢复出厂设置:

首先要去下载STM32 ST-LINK Utility,STSW-LINK004 |软件- 意法半导体https://www.st.com/en/development-tools/stsw-link004.html下载的时候如果你想注册账户需要在一分钟内注册完成

接下来进入软件

这里先将软件与板子连接,连接过程要按住reset键不松手!按住stm32板子的reset键等待三秒,再点击上方的插口连接图标

再等待三秒后松开reset键就会连接到板子,如果显示这些有反应说明是进入读写保护,否则板子真的可能是烧毁或者连接不良

接下来点击上方的target再点击option bytes

接下来弹出这个窗口,enable是开启保护,disable是关闭保护,我们要先开启保护再关闭保护,这里我先选择enable开启保护,下方是flash保护的内存,如果不懂就直接选unselect all(其实我也不懂),再点击apply,这样子板子就开启了读写保护状态

这里显示更新成功说明完全进入了读写保护状态

我们再重复一次,target->option bytes,这次选disable,unselect all,apply

这样子我们就已经解除了读写保护了,再烧录之前记得将连接断掉:点击上方的target的disconnect就可以断开连接了,我们就可以回到keil5重新烧录了!

尾言:

读写保护分三个等级:level0(无保护,任意读写),level1(读写保护但可逆,可以取消读写保护但取消的同时将会擦除flash内存,这将会导致原本烧录的程序消失),level2(读写保护不可逆,意思是只能用你的板子了,别人无法通过任何接口程序读到你的程序)。或许你有疑惑,既然level1已经能够保证别人读不到我的程序了,那为什么还有有level2?因为虽然level1在解除的同时虽然擦除flash能使别人读不到你的代码,但是仍有高手能够读取到你的寄存器这些敏感的数据,所以说level2还是有存在的必要的

目前有资料说stm32f103c8t6型号板子没有level2保护,这仍是有争议的,但是现实中确实无法造成这种型号的level2保护

还有一个:你可能对于解除读写保护有疑问,为什么第一次要选择enable?后面再选择disable?这不是多此一举吗?我已经试过了,如果第一次就选disable将会出现错误无法解开保护。以我的实战经历猜测,一开始烧录的时候进入读写保护,我认为进入的状态介于无保护和保护之间的。我们都知道一开始显示的就是板子当前的状态,那么我一开始进入到界面中为什么显示的是disable?这说明板子当前是无保护状态吗?但是以烧录的情况来看确确实实是进入了保护状态的,所以我才认为进入的状态是介于无保护和保护之间的。所以我进一步猜测软件开发人员有可能设置了这样的算法:if(goal_state==current_state){throw...catch}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询