打印
[开发工具]

使用 STM32 ST-LINK Utility 设置读保护后 不能运行

[复制链接]
1517|50
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
前言

有些时候,我们总是按自己的想法,觉得不会有问题的时候,出现了一些看起来奇奇怪怪的问题,只不过最后还是可以发现
这是有理可据的。
问题

某客户在其产品的设计中,使用了 STM32F411VET6。客户工程师在开发过程中,尝试使用 STM32 ST-LINK Utility 软件配合
ST-LINK 给 32F411EDISCOVERY 板上的 STM32 加上 Level 1 的读保护。工程师发现,原本在板子上正常运行的代码,加上
读保护后,就不运行了。按了板上的 RESET 按键也无济于事。

使用特权

评论回复
沙发
黑心单片机|  楼主 | 2021-12-29 20:04 | 只看该作者
调研
1.[size=10.3674pt]了解问题
客户工程师使用 32F411EDISCOVERY 来验证读保护的功能。
客户打开 STM32 ST-LINK Utility 软件,点击“连接 Connect to the target”按钮,再把功能代码下载到板上的
STM32F411VET6,实现跑马灯的功能。然后,点击“Target → Option Bytes”调出选项字节对话框,将读保护 Read Out
Protection 设置为 Level 1,如下:

点击“Apply”之后,STM32 ST-LINK Utility 就将选项字节烧写进去了。此时,弹出一个对话框:


此对话框告知我们无法读取存储器。这是对的,因为我们已经将读保护设置成 Level 1 了,点击“OK”就可以了。
此时,客户所说的问题来了,板子上的跑马灯不跑了,按下板上的 Reset 按键也没用,程序没有运行。


使用特权

评论回复
板凳
黑心单片机|  楼主 | 2021-12-29 20:06 | 只看该作者
2.问题[size=10.3674pt]分析
关于此问题,需要查找一份比较老的编程手册 PM0075。此文档虽然是 STM32F10xxx 的编程手册,但是有些内容还是值得我
们借鉴的,比如现在遇到的这个问题。
翻到 2.4.1 Read Protection 章节,在这里,我们看到如下的句子:

第一句话的意思是:读保护是在设置 RDP 选项字节后,再执行一次系统复位以重载新的 RDP 选项字节后才生效的。接下来
的这个注意就很重要了,它的意思是:当读保护被设置的时候调试器仍然通过 JTAG/SWD 连接在目标芯片,那么要让选项字
节生效,必须执行一次上电复位,而不是系统复位,目的是断开调试器的连接。
对于使用 STM32 ST-LINK Utility 来更改 RDP 选项字节的操作,正好符合了这两句话的意思,ST-LINK 还通过 SWD 接口接
在 STM32F411VET6 上,所以需要一次上电复位才可以。
那为什么按下 Reset 键也没用呢?我们看一下 32F411EDISCOVERY 的电路图,看到 RESET 键的电路如下:


此按键是接到 STM32F411VET6 的 NRST 引脚上的。
来看一下 STM32F411 参考手册 RM0383 关于 System Reset 的定义:


在 NRST 引脚上产生的低电平复位,也就是外部复位,是属于系统复位 System Reset 的一种。这就是为什么在 Discovery 板
上按 RESET 键不能起作用的原因了。


使用特权

评论回复
地板
黑心单片机|  楼主 | 2021-12-29 20:07 | 只看该作者
3.问题解决

只要将 32F411DISCOVERY 板连接到 PC 的 USB 断开,让其断电后,重新插入 USB 口,上电,就可以看到跑马灯程序又在
运行了。
结论

由于使用 STM32 ST-LINK Utility 给 STM32 设置读保护时,需要 ST-LINK 调试器通过 JTAG/SWD 连接到 STM32 上进行选项
字节的更新,要使更新生效,必须让 STM32 重新上电,执行上电复位才行。

处理
使用 STM32 ST-LINK Utility 给 STM32 设置读保护之后,需要重新上电才可激活新的选项字节并运行程序。

使用特权

评论回复
5
jackcat| | 2022-11-19 11:22 | 只看该作者
用官网的stlink utility软件可以设置写保护或读保护,会比较安全(

使用特权

评论回复
6
mikewalpole| | 2022-11-20 12:01 | 只看该作者
一般是修改了选项字节。               

使用特权

评论回复
7
plsbackup| | 2022-11-23 23:09 | 只看该作者
用STlink也无法对单片机开发板进行下载程序了,只需要用STM32 ST-LINK Utility这个工具来解除读保护即可。

使用特权

评论回复
8
kkzz| | 2022-11-24 13:06 | 只看该作者
启动"J-Flash ARM"工具,Target->unsercure chip 就解除了芯片的读保护。

使用特权

评论回复
9
tabmone| | 2022-11-24 14:27 | 只看该作者
这里使用ST-Link Utility来修改选项字节。

使用特权

评论回复
10
SantaBunny| | 2022-12-7 16:50 | 只看该作者
这里一般使用ST-Link Utility来修改的选项的字节。

使用特权

评论回复
11
Stahan| | 2022-12-8 19:29 | 只看该作者
断开usb重新上电就行了

使用特权

评论回复
12
maudlu| | 2022-12-12 15:47 | 只看该作者
你可以擦除芯片试试               

使用特权

评论回复
13
nomomy| | 2022-12-15 16:53 | 只看该作者
启动"J-Flash ARM"工具,Target->unsercure chip 就解除了芯片的读保护。

使用特权

评论回复
14
febgxu| | 2022-12-17 15:15 | 只看该作者
找Link安装目录下的 jLinkSTM32.exe 运行 jLinkSTM32.exe 根据提示操作, 这里输入芯片系列选项 回车, 重置成功 按上面步骤重置芯片, 然后再去调试和下载应该就OK了.

使用特权

评论回复
15
hilahope| | 2023-3-7 13:56 | 只看该作者
为什么用ST-LINK烧写程序的过程中出现错误?

使用特权

评论回复
16
wangdezhi| | 2023-3-7 21:18 | 只看该作者
st-link utility可以烧stm8吗

使用特权

评论回复
17
Bowclad| | 2023-3-7 22:37 | 只看该作者
断开usb重新上电试试

使用特权

评论回复
18
kmzuaz| | 2023-3-10 11:37 | 只看该作者
不小心写保护和读保护了,如何解锁?  

使用特权

评论回复
19
51xlf| | 2023-3-10 16:11 | 只看该作者
不小心写保护和读保护了,如何解锁?  

使用特权

评论回复
20
gygp| | 2023-3-14 13:32 | 只看该作者
怎样预置一段Flash读保护和清除读保护的程序

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

58

主题

398

帖子

0

粉丝