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

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

[复制链接]
STMCU小助手 发布时间:2022-2-28 19:54
前言
8 `9 G( _" Y% E( V& H0 t& s1 v有些时候,我们总是按自己的想法,觉得不会有问题的时候,出现了一些看起来奇奇怪怪的问题,只不过最后还是可以发现这是有理可据的。4 {1 D3 ]+ ?+ `, I4 c7 ^4 W

9 T5 z% ^8 f" c* e. H+ t8 f问题
/ B) \' D3 c+ q某客户在其产品的设计中,使用了 STM32F411VET6。客户工程师在开发过程中,尝试使用 STM32 ST-LINK Utility 软件配合ST-LINK 给 32F411EDISCOVERY 板上的 STM32 加上 Level 1 的读保护。工程师发现,原本在板子上正常运行的代码,加上读保护后,就不运行了。按了板上的 RESET 按键也无济于事。
6 v2 k3 x1 U% ~) }. P
- _# S" n) o1 i) h调研. F4 M7 v/ ^! e  a" r, a3 T* I
1.了解问题

! c; U6 G+ a' P) e$ T( p客户工程师使用 32F411EDISCOVERY 来验证读保护的功能。) h% Z# l4 k# W% J7 `/ a4 @
客户打开 STM32 ST-LINK Utility 软件,点击“连接 Connect to the target”按钮,再把功能代码下载到板上的STM32F411VET6,实现跑马灯的功能。然后,点击“Target → Option Bytes”调出选项字节对话框,将读保护 Read OutProtection 设置为 Level 1,如下:  q) h5 [3 H9 m1 {( a0 H3 b8 v" u
! N% N% B  L/ w4 O: W! h$ E1 @
56N[V)%Z$)G3@Q0(ZQW5Q3S.png ( H6 f1 V" ?5 ]' d

6 {1 @2 v8 }$ ]点击“Apply”之后,STM32 ST-LINK Utility 就将选项字节烧写进去了。此时,弹出一个对话框:! h3 ~6 t/ @. r

  T7 C' ?: n% U5 z% ^6 T 696QPBHPKJI$_#{7L`YNU.png ' h1 g: i5 V  I5 s7 a. v

, D3 e7 [: s* k0 J' [5 [: s此对话框告知我们无法读取存储器。这是对的,因为我们已经将读保护设置成 Level 1 了,点击“OK”就可以了。* p2 {1 q- l% ]$ j# G
此时,客户所说的问题来了,板子上的跑马灯不跑了,按下板上的 Reset 按键也没用,程序没有运行。- M! y$ [2 X" ?4 {

3 j6 h: X4 x8 V' y" F9 D( r+ U  x2.问题分析
! {* @7 w  W4 O' X% k4 t# t4 [关于此问题,需要查找一份比较老的编程手册 PM0075。此文档虽然是 STM32F10xxx 的编程手册,但是有些内容还是值得我们借鉴的,比如现在遇到的这个问题6 b- u/ [9 U; N
。' G3 j8 w# K% n) a  `! v( Q9 P
翻到 2.4.1 Read Protection 章节,在这里,我们看到如下的句子:% Y6 R8 y; o8 I" {; J8 q) t% e# m

* [, }3 g9 p, y$ m* H F$SZ4DS(39~@X0R4YPTIIRM.png
2 _' C/ k8 n; S, r
2 `( P6 j0 F" q% F& C第一句话的意思是:读保护是在设置 RDP 选项字节后,再执行一次系统复位以重载新的 RDP 选项字节后才生效的。接下来的这个注意就很重要了,它的意思是:当读保护被设置的时候调试器仍然通过 JTAG/SWD 连接在目标芯片,那么要让选项字节生效,必须执行一次上电复位,而不是系统复位,目的是断开调试器的连接。9 w( h6 j# k0 B7 B! w8 g/ H8 @3 v$ ?

7 \/ v1 `& v; l+ h对于使用 STM32 ST-LINK Utility 来更改 RDP 选项字节的操作,正好符合了这两句话的意思,ST-LINK 还通过 SWD 接口接在 STM32F411VET6 上,所以需要一次上电复位才可以。( f/ t7 ~$ T* R# M9 N
2 G4 K( t* `) X7 C
那为什么按下 Reset 键也没用呢?我们看一下 32F411EDISCOVERY 的电路图,看到 RESET 键的电路如下:0 q5 ^7 `6 |1 o, }. H! t

' v2 {: ?$ @, v OP]V(0BKYXPWTF0O6LW2(W5.png
6 h9 A; c8 O: f8 k  Q; o) y+ Q3 h- q( w' c
此按键是接到 STM32F411VET6 的 NRST 引脚上的。
0 e7 l( Y8 q; g1 f
8 S" C" V3 z8 l1 b8 G# o来看一下 STM32F411 参考手册 RM0383 关于 System Reset 的定义:
5 u, r, Y9 h, k2 k" b5 Z4 s- Q( ]; v6 n. y* T
LH1E6U[C~G9IFJUNPLP_VOA.png
6 t8 g. P3 m8 M$ s- M6 J  a& g( b  A; ^! M5 T8 a
在 NRST 引脚上产生的低电平复位,也就是外部复位,是属于系统复位 System Reset 的一种。这就是为什么在 Discovery 板上按 RESET 键不能起作用的原因了。" S5 Z8 h' L7 y$ v
1 c+ u1 u4 x9 a
3.问题解决
% p4 e. d- o; {/ K只要将 32F411DISCOVERY 板连接到 PC 的 USB 断开,让其断电后,重新插入 USB 口,上电,就可以看到跑马灯程序又在运行了。- m" i$ r* e3 K) x/ e0 S7 i5 c

  m! z* \  W" _  t6 _
0 M7 |: i  T4 T3 a7 w2 [结论
& C; v" b& Q) `% y' i$ G$ f* d由于使用 STM32 ST-LINK Utility 给 STM32 设置读保护时,需要 ST-LINK 调试器通过 JTAG/SWD 连接到 STM32 上进行选项字节的更新,要使更新生效,必须让 STM32 重新上电,执行上电复位才行。) p4 H2 B$ J: q% P/ b" N" z$ o% U

% k' ^1 A# B( m& J( g- V  v! J3 S6 z
处理
, M! r0 N# _+ [* n' Z. l使用 STM32 ST-LINK Utility 给 STM32 设置读保护之后,需要重新上电才可激活新的选项字节并运行程序。1 \. x/ B9 X" B3 t" @( v" o

: o- {+ Y+ j" a/ V* E
赞 收藏 评论0 发布时间:2022-2-28 19:54

举报

0个回答

所属标签

相似技术帖

官网相关资源

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