你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【实战经验】使用STM32 ST-LINK Utility 设置读保护后不能运行

[复制链接]
zero99 发布时间:2016-6-28 14:34

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


# f. ?- ^3 b" K' x$ C" C前言* ~; U% s  U0 D5 R! Q8 N
有些时候,我们总是按自己的想法,觉得不会有问题的时候,出现了一些看起来奇奇怪怪的问题,只不过最后还是可以发现这是有理可据的。8 \3 G% X. l) v/ e) d- F5 X/ T
问题% P8 L% r3 r  b. C
某客户在其产品的设计中,使用了STM32F411VET6。客户工程师在开发过程中,尝试使用STM32 ST-LINK Utility 软件配合 ST-LINK 给32F411EDISCOVERY 板上的STM32 加上Level 1 的读保护。工程师发 现,原本在板子上正常运行的代码,加上读保护后,就不运行了。按了板上的RESET 按键也无济于事。
2 `* f, i* T& n  F
调研) A9 O( `, C* @* K. s% R: N9 a
1.了解问题- s5 |- r7 B% B' W
客户工程师使用32F411EDISCOVERY 来验证读保护的功能。
# ~% l) b5 _5 E' w8 S
客户打开STM32 ST-LINK Utility 软件,点击“连接Connect to the target”按钮,再把功能代码下载到板上的STM32F411VET6,实现跑马灯的功能。然后,点击“Target → Option Bytes”调出选项字节对话框,将读保护Read OutProtection 设置为Level 1,如下:

* n/ V  ]. \5 |% o
41.jpg
9 k" t: e* `; J& n; c5 v: S" \% S
点击“Apply”之后,STM32 ST-LINK Utility 就将选项字节烧写进去了。此时,弹出一个对话框:
( J6 U$ h) H- B0 d1 z1 {
42.jpg
8 Z  w0 f! c9 y2 V8 \. b2 R' G
此对话框告知我们无法读取存储器。这是对的,因为我们已经将读保护设置成Level 1 了,点击“OK”就可以了。
6 n0 y' y- T: t4 g此时,客户所说的问题来了,板子上的跑马灯不跑了,按下板上的Reset 按键也没用,程序没有运行。. l1 L5 A5 H3 M) [! D6 m3 J# h3 \
2.问题分析
! c6 e) X! u+ f" ~3 o; ], p关于此问题,需要查找一份比较老的编程手册PM0075。此文档虽然是STM32F10xxx 的编程手册,但是有些内容还是值得我们借鉴的,比如现在遇到的这个问题。: l( r  G' e. x- ~, O. r, d5 m
翻到2.4.1 Read Protection 章节,在这里,我们看到如下的句子:
5 u3 Q$ O$ W* E0 E* C! U2 i* [3 U. r
43.jpg
第一句话的意思是:读保护是在设置RDP 选项字节后,再执行一次系统复位以重载新的RDP 选项字节后才生效的。接下来的这个注意就很重要了,它的意思是:当读保护被设置的时候调试器仍然通过JTAG/SWD 连接在目标芯片,那么要让选项字节生效,必须执行一次上电复位,而不是系统复位,目的是断开调试器的连接。
# n! z5 w2 H& U1 m- n- B' ~
对于使用STM32 ST-LINK Utility 来更改RDP 选项字节的操作,正好符合了这两句话的意思,ST-LINK 还通过SWD 接口接在STM32F411VET6 上,所以需要一次上电复位才可以。
- y8 s" T4 H% x/ |/ A
那为什么按下Reset 键也没用呢?我们看一下32F411EDISCOVERY 的电路图,看到RESET 键的电路如下:

! T- l7 X, J! t5 ]6 {+ L1 k$ Z$ z- S
44.jpg
此按键是接到STM32F411VET6 的NRST 引脚上的。
. m+ A  s4 _% B8 V# E- V& G$ F
来看一下STM32F411 参考手册RM0383 关于System Reset 的定义:
  h# W' X: O0 d" j% l7 r
45.jpg . B+ L, i5 M  T* k9 B
( }5 |5 J+ L2 e" E& ]
在NRST 引脚上产生的低电平复位,也就是外部复位,是属于系统复位System Reset 的一种。这就是为什么在Discovery 板上按RESET 键不能起作用的原因了。0 G/ p% {. [# S  t% O5 k; ?3 b9 d
3.问题解决5 V0 g+ _9 k. c. _; F" Y& I
只要将32F411DISCOVERY 板连接到PC 的USB 断开,让其断电后,重新插入USB 口,上电,就可以看到跑马灯程序又在运行了。
; ^% e0 Z2 B3 o0 A
结论
9 C: J) Z' |& d3 W由于使用STM32 ST-LINK Utility 给STM32 设置读保护时,需要ST-LINK 调试器通过JTAG/SWD 连接到STM32 上进行选项字节的更新,要使更新生效,必须让STM32 重新上电,执行上电复位才行。
  w/ Z5 M( |3 n& i4 a& c% L
处理: y- k& P- }4 e! l
使用STM32 ST-LINK Utility 给STM32 设置读保护之后,需要重新上电才可激活新的选项字节并运行程序。

' J/ z! x4 d* S) H( E2 f6 Q  C/ \
7 r3 ~8 n$ Q# F+ l4 v# V# m2 V
文档下载地址:7 `$ k! x: n+ b$ Q
https://www.stmcu.org.cn/document/list/index/category-1016
' b3 a( T6 b# }8 B, x, A' z  G- g" }& b0 z
实战经验汇总:
" i) v4 D  ^0 h8 L# z( J% ehttps://www.stmcu.org.cn/module/forum/thread-576401-1-1.html4 q# P$ }3 w5 x) `; s

2 C- Y6 r8 g# i, L
赞 收藏 3 评论2 发布时间:2016-6-28 14:34

举报

2个回答
无薪税绵 回答时间:2016-10-18 11:24:09
谢谢管理员分享经验,收藏了。
ynwscfsfi 回答时间:2016-10-18 12:58:23
好贴,感谢分享学习了

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版