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

如何利用STM32代码设置读保护功能

[复制链接]
原来是他 发布时间:2016-7-2 14:26
之前也看到有网友提出代码保护的问题,辛苦写的程序,怎么着也不想被别人拿去用!$ ^0 K4 c2 f! p" b; S
刚好前一段有个项目完成了,在产品发出去的时候按照老总吩咐,加了代码的读保护!
) j1 r5 Y$ B# D+ b( P6 D4 D现在就把之前的工作做个总结,以便哪天忘记,可来此查询,也方便网友使用,当然,这个也可能有人发现了,如果你已经知道该方法,或者有更好的方法,请不吝赐教, |9 ~4 O% ?- H! q
9 z6 E3 @1 p" w& s2 E7 X
步骤:
& c/ n( M, A! ]) T: w2 l1.准备工作:HEX文件和JLINK驱动(本人使用的是Setup_JLinkARM_V415e): Q$ e4 S  z6 {5 `! o
安装完毕后,可以在开始--所有程序--SEGGER--J-Flash ARM打开该应用程序,如下图7 t  h& m: c: e& T" b2 q
21.jpg
. U# j* J( F- s, j/ K4 d$ g: Q4 B" v
) B; r) d0 A1 t5 C先进行一下设置,对要写入的芯片和写入方式0 c3 p5 p- P# P8 g* m5 y
选择JATG还是SWD
; i0 R" w: }5 }1 \选择芯片型号
' x1 \: y' E) O3 _ 22.jpg
8 _/ z9 j1 }% G" s' v 23.jpg ' ~5 x! n) C  |! \
9 {5 `2 J+ W; {! K
2.打开要烧写的HEX文件:File--Open data file ,可以下拉选择HEX文件类型
8 d6 p4 @2 o/ ?3 s/ P8 r 24.jpg
/ o6 l2 r! s, F  b+ L/ X/ c; A
2 e9 u" j4 i, d4 x; z( F! m, N3.连接要写入的芯片:Target--Connect- G1 u& {% C( o5 @6 H7 u1 M1 h" J
25.jpg
( B+ ^8 |+ Y! a# P0 J
9 x) g3 Q( k' ^* U+ y4.写入代码:Target--Program & Verify(F6)
1 N: m, F1 l1 h2 g 26.jpg 4 j1 L, J# K4 C' S: T$ E
7 s% N6 p; W9 l) I0 v9 c4 f
(到此,就是代码的写入过程,下面是加读保护的步骤)
* Q: o1 ?% d6 e5.加读保护:Target---Secure chip,点击是,就是加上了读保护!7 g# j5 K# o/ X) y
+ i' o  h5 a- }$ d" l2 k
验证方法,可以使用一个没有加读保护的芯片,重复步骤中的3,连接上之后,read back一下,看看是否能读出?
+ P( p! u5 s% X 27.jpg & U# u( C9 O! r, t7 ?# ]- U

2 V+ C7 p/ _0 p7 o: @" D$ `然后再使用一个加了读保护的芯片,重复步骤中的3,连接之后,read back一下,看看是不是真的不能读出了,如果成功加了读保护,它会一直停在那里,数据一直读不出来,最后弹出一个错误警告!1 R4 n! E9 U# B) w" V
28.jpg * U6 R5 i" j# x- L# J! Z, |( _
29.jpg
0 L9 `3 i$ @7 Z, l" `  E9 p7 T5 {
3 \8 }1 M  r. f) @; a9 `+ @1 f) a& l* c& m8 c; H0 v
到此,读保护已经加载进去了!% J* ~8 s+ r) k$ L* N
可是有的时候,你突然发现你的代码需要更新,如果你不解除读保护功能的话,你将很难再次将程序写入,解除方法也就是步骤中的5项中的反操作:Target---Unsecure chip
' M0 G7 e. F1 K/ u+ s6 K5 t解除成功后,你就可以再次写入你更新后的代码了。并没有网友所说的要更改BOOT0和BOOT1的设置,等等。。。
& p2 ?8 e/ A1 X# G5 j3 Z8 T3 e$ O; Y* `' s6 i

1 P5 v6 d9 }! f! c8 T9 l$ W; a这个加载代码读保护功能的步骤可能对有些人来说还是比较麻烦的,毕竟产品多的时候,写入之后还要按一下写保护命令,对于产线操作员来说,可能一时疏忽忘记其中一个,就会造成代码的外泄,是不是应该还有更简单的办法一键写入呢,答案是肯定的!6 ^  |/ y& c' p  ]+ a7 d
9 m" {8 ]8 B' X* U2 {# l# |  m. Q+ s! C
具体做法,就是要在生成HEX文件之前,要多几个步骤
8 l, d: S& a6 J% F: Y  j4 p1.首先,加载: C:\Keil\ARM\Boards\Keil\MCBSTM32\Blinky文件夹中的一个STM32F10xOPT.s文件
2 h6 J: y! }' P" S! o 30.jpg
9 s0 S+ H+ |! d% T0 J) s0 `6 g4 M/ G
2.修改下面两个值为1- s, ^$ `0 r( F& [7 J
31.jpg
/ {, W: h& U! X7 u3 W6 z3 s) w, V! O7 y: v4 z& }# N
3.生成HEX文件之前务必进行一下此配置
( ]1 z! V! N# D3 ?% Z5 X 32.jpg 8 x/ A. W- T7 O, E8 o/ F

, a. ?- J/ |8 R: k) N* v这样的话,就简单的一个HEX文件就会使你的产品流入市场之后,即便是被抄板成功,也不会是代码流出了
% V5 B" k* c; o( j& n* b8 U当然,必须保证自己公司的员工不会外泄。# ~" @( r: e" b" Q6 i% S/ c* ~

8 I" H7 |0 z/ e& o+ d3 i5 }! n1 J
赞 收藏 1 评论5 发布时间:2016-7-2 14:26

举报

5个回答
123456Kelly 回答时间:2016-7-3 13:13:29
多谢分享,
stary666 回答时间:2016-7-4 09:53:18
立码赚 回答时间:2017-11-19 00:14:58
我用的是Keil uVision5    下载用ST Visual Programmer   这个要怎么设置呢?能不能告诉我呀?( u7 k6 g& s- b: d. E
" A8 O% H( O" q1 h% X: a
STM32F10xOPT.s  这个文件也找水到在那里?
立码赚 回答时间:2017-11-19 21:53:14
kelly-395249 发表于 2016-7-3 13:13
( D" R8 Y6 k- l: \# Q( x多谢分享,

5 K, V% _& J+ g* P, ?这篇 过时了,现在的Keil uVision5的STM32F10xOPT.s这个文件里面的内容不一样的了,对不上。
8 t% V( G: D/ K' g2 R! l/ S
立码赚 回答时间:2017-11-19 21:53:50
这篇 过时了,现在的Keil uVision5的STM32F10xOPT.s这个文件里面的内容不一样的了,对不上。7 x% A7 P" s) K6 Q
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版