本文目标是对运行于STM32的嵌入式代码程序进行加密,编译环境为Keil。
, i3 p9 Q- _, L. C! }) m 一.STM32Flash组织5 c X' m) ?6 G2 M* `8 R+ z
2 j% m# h) ~* G4 n: l
7 {7 G* L+ F3 y1 g+ F
STM32的Flash包括主存储器(HD版本,512KB)+信息块。信息块包括2KB的系统存储器(用于系统自举启动代码)和16字节的选项字节(8个字节数据+8个字节数据的反码)。
二、STM32读保护
STM32读保护是通过设置RDP选项字节,然后在系统重新复位加载了新的RDP选项字节后启动的。当保护字节被写入相应的值以后:* {1 v1 t; s" T. k+ ~0 V8 m
●通过从内置SRAM或FSMC执行代码访问主闪存存储器的操作,通过DMA1、DMA2、JTAG、SWV(串行线观察器)、SWD(串行线调试)、ETM和边界扫描方式对闪存的访问都将被禁止。4 u: M" B/ @" r0 l
●只允许从用户代码中对主闪存存储器的读操作(以非调试方式从主闪存存储器启动)。4 \: A$ \0 Z" I& f' u# C& F
) T( H _/ h; o
●第0~3页(小容量和中容量产品),或第0~1页(大容量和互联型产品)被自动加上了写保护,其它部分的存储器可以通过在主闪存存储器中执行的代码进行编程(实现IAP或数据存储等功能),但不允许在调试模式下或在从内部SRAM启动后执行写或擦除操作(整片擦除除外)。