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

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

[复制链接]
STMCU小助手 发布时间:2022-7-12 22:56
前言8 o& Z7 d" \4 n) W; a# s, D
软件提供商开发了复杂的中间件解决方案(知识产权代码,或IP-Code),保护它们对于微控制器而言至关重要。
9 b, V+ a+ C6 A为了应对这一重要需求,STM32F4xx MCU具有以下功能:
7 g( g# F* Q) z5 _• 读保护(RDP):防止进行读取操作) E+ M1 N/ |% l& I
• 写保护:防止进行不需要的写入或擦除操作
2 ^  B) R1 |' v. c/ `8 e• 专有代码读取保护(PCROP):防止进行读写操作' r* F8 H  a& l0 ?6 q. e- A
本应用笔记对这些闪存保护技术进行了说明,重点是专有代码读取保护(PCROP),并提供了PCROP保护的基本示例。
% d! A6 J, ~0 v) v8 [2 E% j本文档随附的X-CUBE-PCROP固件封装包包含了PCROP示例的源代码,以及运行示例所需的所有固件模块。
! Y3 @+ w  n8 ?3 d6 b& Y) {本应用笔记必须与表 1中所列的参考手册一起阅读。这些文档及其对应的数据手册均可在www.st.com上获取。
3 o  r% a( u0 ]2 d' u7 _8 ^

; r  p6 z9 `( n; J/ f (YQDAMISX%~U0WC%8IM`IUD.png
) q0 M" i6 t8 W/ n0 L# g
& c$ }; D( }; n9 H2 ]4 Y3 u
  j, X2 r7 p, B! [8 x
1 读保护(RDP! s" B, }% K$ ^" G6 s4 c9 k; m
读取保护是全局闪存读保护,可保护嵌入式固件代码,避免复制、逆向工程、使用调试工具读出或其他方式的入侵攻击。该保护应在二进制代码载入嵌入式闪存后,由用户进行设置。% V) ~4 O/ t2 X; t4 n/ g
8 u$ f# [! V1 ^, H# D# K
1.1 读保护级别0
6 M# W4 L1 e8 }级别0是默认级别,闪存完全打开,可在所有引导配置(调试功能,从RAM、从系统内存引导加载程序或从闪存启动)下进行全部内存操作。这种模式下,没有保护(主要用于开发和调试)。3 h9 `  T8 J; w" ^6 E7 @: k4 C

( Q, |$ u0 \- b" G! m% u) O
* ~* n$ h7 `+ B/ W3 u1 }
1.2 读保护级别1
0 }# f2 ^8 u7 A  D! _0 E2 {8 x1 {: e0 J激活读保护级别1时,即使是从SRAM或系统内存引导加载程序来启动,也不能使用调试功能(如串行线路或JTAG)访问(读取,擦除和编程)闪存或备用SRAM。" P/ s2 O, N, t6 U+ u+ T! k' S6 ^
但是,当从闪存启动时,允许用户代码访问该内存和备用SRAM。: @: T2 G9 S1 t) R6 @
对受保护的闪存进行任何读取请求都会产生一个总线错误。% V( W/ Q$ n, e7 J+ L+ [1 P3 e
将RDP选项字节重新编程为级别0,可禁用RDP级别1保护,这会导致整体擦除。9 N% y2 L+ T2 s5 d  q
- Z+ Y, j$ y. E( Z( R1 @' g

3 c8 a7 J5 N3 |/ F% N$ `! _+ b1.3 读保护级别2
6 }; N: [- ^. I& y$ x5 Y. V激活RDP级别2时,级别1所支持的所有保护均有效,芯片受到全面保护。RDP选项字节和所有其他选项字节都会被冻结,不能再修改。JTAG、SWV(单线查看器)、ETM 和边界扫描被禁用。& z% L: A- Q8 Y0 Z; o
从闪存启动时,用户代码可以访问内存内容。但是,不再能从SRAM或从系统内存引导加载程序启动。
# L& q- |; Y0 l8 Y$ a# C3 O这种保护是不可逆的(JTAG熔断),所以不能回到保护级别1或0。 4 ]: ^6 U& g2 m8 z% @
2描述了从内部闪存启动,或在调试,或从SRAM或系统内存引导加载程序启动时,对闪存、备用SRAM、选项字节和一次性可编程字节(OTP)的不同访问。
, o/ L6 s; D2 l" x% M! E$ |% L" L" Y: [! v: I7 ^' I
* ?8 T' j) |7 d$ l" X* a$ j
4~0O]G%1Q2J4EHI`Z23_`03.png
: _) ~4 r- c, k/ X8 Y2 A
5 Y( T7 v% k* j6 u. m4 J$ [; q5 \
1.4 RDP保护的STM32F4xx微控制器内部闪存内容更新  J' T& a) L3 l9 _# \6 h- c; N
当RDP保护激活时(级别1或级别2),内部闪存内容不能通过调试进行更新,当从SRAM或系统内存引导加载程序启动时也不能更新。
7 Z1 J) J3 o8 R2 f0 |! J8 x6 Z因此对最终产品的一个重要要求就是,能够将内部闪存中的嵌入式固件升级为新的固件版本,添加新功能并修正潜在问题。) v/ P/ A( x& Z. Z
该要求可以通过实现用户专用固件来执行内部闪存的应用内编程(IAP)来解决,使用诸如USART的通信协议来进行重新编程过程。, U/ \  d( m" v3 Z& n% ^
关于IAP的更多详细内容,请参考应用笔记AN3965,可在www.st.com上获取。
# V2 Q, f" d; D
% i. A( A* @5 u4 e: h5 @+ b2 写保护
& R. ^6 Y; ]3 J9 d& ]: W写保护用来保护指定扇区内容,避免代码更新或擦除。这种保护可应用于扇区。
$ z7 f! Z6 _# [+ b7 s8 Y任何写请求都会产生一个写保护错误。如果要擦除/编程的地址属于闪存中处于写保护状态的区域,则通过硬件将WRPERR标志置位。! a  C7 A* I0 t! z' A$ r# h
例如,如果闪存中至少有一个扇区是写保护的,则不能对其进行整体擦除,并且WRPERR标志置位。
6 A7 B7 |- e8 P* h' [  O4 Y  O1 S根据nWPRi选项位的保护模式选择(SPRMOD选项位),闪存扇区可为写保护或读&写 (PCROP)保护模式。要激活每个闪存扇区 i 的写保护(SPRMOD = 0),可使用一个选项位(nWRPi)。当设置扇区 i(选项位nWRPi = 0)为写保护时,该扇区不能被擦除或编程。; x. W  |/ M, J. U2 H& I+ N. P
可通过嵌入式用户代码或使用STM32 ST-Link Utility软件和调试接口,进行使能或禁用写保护管理。
$ J# {9 ~4 f9 K9 r0 t/ A
7 R1 M1 e; g9 x6 m
8 L7 o2 p; ^* f; T) Q- l完整版请查看:附件
7 ^) [, r: j& q0 t8 H

DM00186528_ZHV3.pdf

下载

944.53 KB, 下载次数: 4

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

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版