
前言. ?, k! N' l b! R! S 软件提供商开发了复杂的中间件解决方案(知识产权代码,或IP-Code),保护它们对于微控制器而言至关重要。 为了应对这一重要需求,STM32F4xx MCU具有以下功能: • 读保护(RDP):防止进行读取操作 • 写保护:防止进行不需要的写入或擦除操作 • 专有代码读取保护(PCROP):防止进行读写操作 本应用笔记对这些闪存保护技术进行了说明,重点是专有代码读取保护(PCROP),并提供了PCROP保护的基本示例。! {& S8 {: q2 x$ N( t) o) m0 H) ` 本文档随附的X-CUBE-PCROP固件封装包包含了PCROP示例的源代码,以及运行示例所需的所有固件模块。, \9 |" u* }& L- c 本应用笔记必须与表 1中所列的参考手册一起阅读。这些文档及其对应的数据手册均可在www.st.com上获取。 ![]() , S& s% m# h0 f0 j) e9 o * W s$ t2 n- t; S z" \. z/ H 1 读保护(RDP) 读取保护是全局闪存读保护,可保护嵌入式固件代码,避免复制、逆向工程、使用调试工具读出或其他方式的入侵攻击。该保护应在二进制代码载入嵌入式闪存后,由用户进行设置。6 ~4 Q2 Y6 v4 e& Q; ^1 I 2 [5 ~0 I7 T# n7 F! X* V 1.1 读保护级别07 B" A: R$ U7 x" Y! i9 k 级别0是默认级别,闪存完全打开,可在所有引导配置(调试功能,从RAM、从系统内存引导加载程序或从闪存启动)下进行全部内存操作。这种模式下,没有保护(主要用于开发和调试)。 4 h7 a( m/ Z- T) e1 o+ b 1.2 读保护级别1 t. q* w2 R. u+ o 激活读保护级别1时,即使是从SRAM或系统内存引导加载程序来启动,也不能使用调试功能(如串行线路或JTAG)访问(读取,擦除和编程)闪存或备用SRAM。' a7 {" m) E Q g 但是,当从闪存启动时,允许用户代码访问该内存和备用SRAM。 对受保护的闪存进行任何读取请求都会产生一个总线错误。 将RDP选项字节重新编程为级别0,可禁用RDP级别1保护,这会导致整体擦除。 . d" F! t" P! P9 M4 q1 ]% @ 1.3 读保护级别2" ~& r# v" w m 激活RDP级别2时,级别1所支持的所有保护均有效,芯片受到全面保护。RDP选项字节和所有其他选项字节都会被冻结,不能再修改。JTAG、SWV(单线查看器)、ETM 和边界扫描被禁用。 从闪存启动时,用户代码可以访问内存内容。但是,不再能从SRAM或从系统内存引导加载程序启动。 这种保护是不可逆的(JTAG熔断),所以不能回到保护级别1或0。 y: K% v% C! _- ~& m4 A4 Q 表 2描述了从内部闪存启动,或在调试,或从SRAM或系统内存引导加载程序启动时,对闪存、备用SRAM、选项字节和一次性可编程字节(OTP)的不同访问。9 b( E* P* }1 _, {+ B, ?0 t6 H) n9 n . H& V2 t: m7 p' h + j. ^9 d3 u' }2 u& K/ i. p ` ![]() 1.4 RDP保护的STM32F4xx微控制器内部闪存内容更新+ ` o5 b% |. ^ 当RDP保护激活时(级别1或级别2),内部闪存内容不能通过调试进行更新,当从SRAM或系统内存引导加载程序启动时也不能更新。) }) d/ ^$ M* I2 M8 y. t- M 因此对最终产品的一个重要要求就是,能够将内部闪存中的嵌入式固件升级为新的固件版本,添加新功能并修正潜在问题。" l% }* R' O( \3 l+ u- I 该要求可以通过实现用户专用固件来执行内部闪存的应用内编程(IAP)来解决,使用诸如USART的通信协议来进行重新编程过程。 关于IAP的更多详细内容,请参考应用笔记AN3965,可在www.st.com上获取。4 R9 i6 W K2 G2 D, u: l0 \1 R+ r 2 写保护" q6 l4 P3 c6 F& X 写保护用来保护指定扇区内容,避免代码更新或擦除。这种保护可应用于扇区。 任何写请求都会产生一个写保护错误。如果要擦除/编程的地址属于闪存中处于写保护状态的区域,则通过硬件将WRPERR标志置位。3 c' [/ W* \- t 例如,如果闪存中至少有一个扇区是写保护的,则不能对其进行整体擦除,并且WRPERR标志置位。 根据nWPRi选项位的保护模式选择(SPRMOD选项位),闪存扇区可为写保护或读&写 (PCROP)保护模式。要激活每个闪存扇区 i 的写保护(SPRMOD = 0),可使用一个选项位(nWRPi)。当设置扇区 i(选项位nWRPi = 0)为写保护时,该扇区不能被擦除或编程。 可通过嵌入式用户代码或使用STM32 ST-Link Utility软件和调试接口,进行使能或禁用写保护管理。 # W1 G! V2 O/ o) \ 完整版请查看:附件: U" ~9 B+ R% V |
DM00186528_ZHV3.pdf
下载944.53 KB, 下载次数: 4