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

STM32F4系列微控制器的专有代码读取保护

[复制链接]
STMCU小助手 发布时间:2022-7-12 22:56
前言% m; f6 S+ W7 k" ?# |- c0 f
软件提供商开发了复杂的中间件解决方案(知识产权代码,或IP-Code),保护它们对于微控制器而言至关重要。3 X2 v5 r& N- q  i' O. I. a
为了应对这一重要需求,STM32F4xx MCU具有以下功能:4 g) {( ]  o! W$ y6 r. u' ]
• 读保护(RDP):防止进行读取操作
) ^4 }. w1 x  T) C0 z• 写保护:防止进行不需要的写入或擦除操作' |8 C! W1 u2 F0 v
• 专有代码读取保护(PCROP):防止进行读写操作4 j5 l6 T( X# m6 _8 Y
本应用笔记对这些闪存保护技术进行了说明,重点是专有代码读取保护(PCROP),并提供了PCROP保护的基本示例。" G/ i5 y4 B/ J$ ~4 T+ h
本文档随附的X-CUBE-PCROP固件封装包包含了PCROP示例的源代码,以及运行示例所需的所有固件模块。) h2 Z1 p6 X. ]+ \! f; g' K
本应用笔记必须与表 1中所列的参考手册一起阅读。这些文档及其对应的数据手册均可在www.st.com上获取。

- T' L6 u& J. e3 ?/ y

$ a/ |% F0 d7 [2 D: G# } (YQDAMISX%~U0WC%8IM`IUD.png
8 U5 w: I1 ~% K. Z% R, t# e4 n5 G
! v: c8 G+ G6 l  M$ N2 a
1 读保护(RDP)
& r$ h) r# m! S4 p* D' N# I读取保护是全局闪存读保护,可保护嵌入式固件代码,避免复制、逆向工程、使用调试工具读出或其他方式的入侵攻击。该保护应在二进制代码载入嵌入式闪存后,由用户进行设置。
4 n/ p3 H8 M+ n: o. ]
, q1 q) O' t" T9 s( O
1.1 读保护级别0) {# [  t% d0 f- X6 R
级别0是默认级别,闪存完全打开,可在所有引导配置(调试功能,从RAM、从系统内存引导加载程序或从闪存启动)下进行全部内存操作。这种模式下,没有保护(主要用于开发和调试)。
, j# \& V8 Y' f( ]) a  L
' W6 m3 N7 J( u% c

4 Y( u* w- l$ a2 S" |1.2 读保护级别1
$ q& O( |/ J: `( S4 v- m" W激活读保护级别1时,即使是从SRAM或系统内存引导加载程序来启动,也不能使用调试功能(如串行线路或JTAG)访问(读取,擦除和编程)闪存或备用SRAM。! u5 w) M7 N* W
但是,当从闪存启动时,允许用户代码访问该内存和备用SRAM。
- @8 g; q, w6 p. ~2 U对受保护的闪存进行任何读取请求都会产生一个总线错误。
: H- q; S! n! h) o( V将RDP选项字节重新编程为级别0,可禁用RDP级别1保护,这会导致整体擦除。* O4 B8 o2 T& u: ]7 ]' r8 X
# y) W( q- t" z

# z" q6 U& Y& P/ a6 x8 N: i9 ^1.3 读保护级别2
" f: i- V& Z  i8 ^& u8 z9 X% u激活RDP级别2时,级别1所支持的所有保护均有效,芯片受到全面保护。RDP选项字节和所有其他选项字节都会被冻结,不能再修改。JTAG、SWV(单线查看器)、ETM 和边界扫描被禁用。4 ?) `4 T4 ]! f+ [' n6 ~( U; [- `& f. \
从闪存启动时,用户代码可以访问内存内容。但是,不再能从SRAM或从系统内存引导加载程序启动。
; J# ?6 g6 v' i6 c1 S% w1 z3 n" E这种保护是不可逆的(JTAG熔断),所以不能回到保护级别1或0。
' U0 p, I1 U% f& g# [表 2描述了从内部闪存启动,或在调试,或从SRAM或系统内存引导加载程序启动时,对闪存、备用SRAM、选项字节和一次性可编程字节(OTP)的不同访问。
9 F% z' G1 {. V! g& w  P3 j1 h* D5 O8 B7 R

/ S0 @; M* J  U) |9 j* g 4~0O]G%1Q2J4EHI`Z23_`03.png
9 x' ]8 Q$ ^* u% B' p  ~/ Z2 R4 H" V8 `) e
1.4 RDP保护的STM32F4xx微控制器内部闪存内容更新
2 |, b) W( O4 N) R; O1 I! B- S) L当RDP保护激活时(级别1或级别2),内部闪存内容不能通过调试进行更新,当从SRAM或系统内存引导加载程序启动时也不能更新。
1 [! ~% e/ P! B# `9 [. l因此对最终产品的一个重要要求就是,能够将内部闪存中的嵌入式固件升级为新的固件版本,添加新功能并修正潜在问题。
' W* N5 h1 f5 }: }8 f该要求可以通过实现用户专用固件来执行内部闪存的应用内编程(IAP)来解决,使用诸如USART的通信协议来进行重新编程过程。
8 H- A2 |& \2 s& R$ J5 T关于IAP的更多详细内容,请参考应用笔记AN3965,可在www.st.com上获取。3 W/ {2 E& o. r" h9 S
: v) ]0 H3 I0 m
2 写保护
* V# Q% [/ R. i写保护用来保护指定扇区内容,避免代码更新或擦除。这种保护可应用于扇区。2 @6 t: Z+ \' b' g
任何写请求都会产生一个写保护错误。如果要擦除/编程的地址属于闪存中处于写保护状态的区域,则通过硬件将WRPERR标志置位。7 Z9 A$ i" s9 ~6 N- N* m
例如,如果闪存中至少有一个扇区是写保护的,则不能对其进行整体擦除,并且WRPERR标志置位。, u9 R2 T  c7 s1 R
根据nWPRi选项位的保护模式选择(SPRMOD选项位),闪存扇区可为写保护或读&写 (PCROP)保护模式。要激活每个闪存扇区 i 的写保护(SPRMOD = 0),可使用一个选项位(nWRPi)。当设置扇区 i(选项位nWRPi = 0)为写保护时,该扇区不能被擦除或编程。
9 J2 ]! H5 Q9 Q/ {! c- A. E& e/ D& ~可通过嵌入式用户代码或使用STM32 ST-Link Utility软件和调试接口,进行使能或禁用写保护管理。. Z3 c& v6 N! u$ \' m! n+ I

/ q; ~1 j8 {- j0 ^4 x
/ f- x: S4 h/ P) s) P% c6 i; R6 R! B完整版请查看:附件4 b6 f8 D$ Y4 K: }; \8 N

DM00186528_ZHV3.pdf

下载

944.53 KB, 下载次数: 5

赞 收藏 评论0 发布时间:2022-7-12 22:56

举报

0个回答

所属标签

相似技术帖

官网相关资源

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