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

STM32L4、STM32L4+和STM32G4系列微控制器上的专利代码读取保护

[复制链接]
STMCU小助手 发布时间:2023-1-11 14:03
软件提供商正在开发被称为IP(知识产权)代码的复杂中间件解决方案,保护它们对微控制器而言是一个非常重要的问题。为了满足这一重要要求,STM32L4、STM32L4 +和STM32G4系列MCU可提供以下保护功能:
• 读取保护(RDP):防止进行读取操作
• 写保护:防止进行不需要的写入或擦除操作
• 专利代码读取保护(PCROP):防止在闪存和SRAM存储器上进行读写操作。
• 防火墙:针对外部进程为敏感代码和数据提供访问保护。

: e) ^& ~, |; n. A7 B
本应用笔记对这些闪存保护功能进行了说明,重点介绍了专利代码读取保护(PCROP),并提供了PCROP保护的基本示例。

. A2 s" ]& x+ H' L* B
目录预览

1 单分区存储器保护说明

2 PCROP示例

3 结论

. V) z: ~; ^: x- P

$ A  c: w: n" \5 E# P: b4 m
1.单分区存储器保护说明

基于Arm®(a)内核的STM32L4、STM32L4+和STM32G4系列微控制器采用多种机制,可对整个存储器或特定存储段进行读写保护。读保护用于保护代码免受外部访问的转储(SW IP保护),而写保护用于保护代码或数据不被意外改写或擦除。除闪存外,这些保护还扩展到STM32L4和STM32L4+系列的SRAM2,以及STM32G4系列的CCM(内核耦合存储器)SRAM。STM32L4xx MCU还具有防火墙机制,可在存储器中创建受信执行区域。


+ B: u5 s# e6 o- Y# i" F' h# `: D1 W/ e
7 i3 x( q+ ]6 b/ i) \& L
1.1 读取保护(RDP)
0 ^! p! J* i3 @, ^; V: a+ i4 ~# V
& j- f+ I7 l* k! W$ `
读取保护是全局闪存读保护,可保护片内固件代码,可以预防复制、逆向工程、使用调试工具读出或其他方式的入侵攻击。该保护应在二进制代码载入片内闪存后,由用户进行设置。读取保护适用于:
• 主闪存• 实时时钟(RTC)中的备份寄存器
• SRAM2(STM32L4/STM32L4+)或CCM-SRAM(STM32G4)
• 选项字节(仅限级别 2)。以下章节中对三个RDP级别(0,1和2)进行定义和描述

% ]% \9 C4 m9 ~9 {
1.1.1 读保护级别0
级别0是默认级别,闪存完全打开,可在所有引导配置(调试功能,从RAM、从系统内存引导加载程序或从闪存启动)下进行全部内存操作。在这种模式下没有保护,该模式可满足开发和调试需求。
4 e2 u2 }+ F6 F1 X1 {3 x9 D, z
1.1.2 读保护级别1
激活读保护级别1时,即使是从SRAM或系统内存引导加载程序来启动,也不能使用调试功能(如串行线路或JTAG)分别访问(读取,擦除和编程)STM32L4/L4+和STM32G4系列的闪存或SRAM2和CCM-SRAM。在这些情况下,任何对受保护区域的读请求都会生成总线错误。
" o, V* C" j$ d6 o" c) d
但是,当从闪存启动时,则允许从用户代码访问闪存和SRAM2(STM32L4/L4+)或CCM-SRAM(STM32G4)。

( @% q1 ~0 P3 ]
将RDP选项字节重新编程为级别0,可禁用RDP级别1保护,这会导致闪存被批量擦除;而且SRAM2(STM32L4/L4+)或CCM-SRAM(STM32G4)和备份寄存器会复位。
# [# m8 u" t) l) c6 I: B4 _1 _
1.1.3 读保护级别2
激活RDP级别2时,级别1下提供的所有保护均有效,MCU受到全面保护。RDP选项字节和所有其他选项字节都会被冻结,不能再修改。JTAG、SWV(单线查看器)、ETM和边界扫描全部禁用。
2 H7 X; ?2 y7 ]1 t) K5 y; P: T
从闪存启动时,用户代码可以访问内存内容。但是,不再能从SRAM或从系统内存引导加载程序启动。这种保护是不可逆的(JTAG熔断),所以不能回到保护级别1或0。
5 J# e9 [4 k! Z4 S- [
表 1根据保护级别和执行模式总结读取访问权限。
. ?5 s% q6 I0 R
微信图片_20230110195042.png
% ^* x9 z  B4 d, V  g  l

* B5 F0 y' y" ?. k  Q8 E: F: M
1.1.4 受RDP保护的STM32内部闪存内容更新
当Flash RDP保护激活时(级别1或级别2),内部闪存内容不能通过调试进行更新,或者当从SRAM或系统内存引导程序启动时也不能更新。

- O8 S: p1 }- Z  R
因此对最终产品的一个重要要求就是,能够将内部闪存中的固件升级为新的固件版本,添加新功能并修正潜在问题。该需求可以通过实现用户专用固件来解决,使用诸如USART的通信协议来进行重新编程过程,从而执行内部闪存的应用内编程(IAP)。

) L$ V" \' ~1 Z( S/ ~
1.2 写保护8 ?' \7 s% e4 ?4 Y* B7 L# Y% O+ o  _
写保护用来保护指定内存区域的内容,避免更新或擦除代码段或非易失性数据。

. Z3 X6 z8 r* ?0 w# P+ O' ^9 U
1.2.1 闪存写保护
写保护区域的数量取决于闪存架构。对于STM32L4和STM32L4+系列,每个闪存中可以以2KB粒度定义最多2个区域。STM32G4 3类设备能够以单分区或双分区工作。
• 在单分区模式(DBANK = 0)中,最多能够以4 KB的粒度定义四个写保护区域。
• 在双分区模式(DBANK = 1)中,最多可以定义两个写保护区域每个存储库中2 KB的粒度。
STM32G4 Cat2设备只能在单个闪存库中工作。能够以2 KB粒度定义两个写保护区域。
5 \6 O1 `9 z) K' ^% i6 r0 ?0 ?" O; V
图 1中的灰色区域是具有两个粒度为2 KB的写保护(WRP)区域的双分区结构的示例。

3 J- L! J) s: G  N) v; m6 I
微信图片_20230110195035.png
7 F6 p8 e' @0 h; v' b  ~4 T0 |% D/ ?7 {/ w  E" S- k7 d
受保护区域无法被擦除和编程,任何写请求都会产生写保护错误。如果要擦除/编程的地址属于闪存中处于写保护状态的区域,则通过硬件将WRPERR标志置位。例如,如果闪存中至少有一页是写保护的,则不能对其进行批量擦除,并且设置WRPERR标志。

' N$ D- Z6 Z* |$ t+ O) Q
可通过嵌入式用户代码或使用STM32 ST-Link Utility软件和调试接口,进行使能或禁用写保护管理  M& c) E# X' q7 o$ Y2 X

  [# F" I5 I- `. P9 ]* d/ `6 f
1.2.2 SRAM2 CCM-SRAM写保护
在STM32L4/L4 +上,32KB的SRAM2可以通过1 KB页面单独进行写保护。该保护的设置由32位系统配置寄存器进行控制,并在启用后,只有系统复位才能对其进行禁用。
( i& f/ F9 t. l  x& R, O
在STM32G4中,CCM-SRAM也可以通过1 KB的段进行写保护(3类设备为32 KB,2类设备为10 KB)。
0 N! P/ D' N7 O  N
# v; }+ t( `, ^7 v9 j9 V
7 b. p2 v& p+ \0 s
; n4 `+ M  T2 d3 X7 g# M) n
收藏 评论0 发布时间:2023-1-11 14:03

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版