第51章 设置FLASH的读写保护及解除
全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn
野火视频教程优酷观看网址:http://i.youku.com/firege
本章参考资料:《STM32F4xx 中文参考手册》、《STM32F4xx规格书》、库说明文档《stm32f4xx_dsp_stdperiph_lib_um.chm》以及《Proprietary code read-out protection on microcontrollers》。
51.1 选项字节与读写保护
在实际发布的产品中,在STM32芯片的内部FLASH存储了控制程序,如果不作任何保护措施的话,可以使用下载器直接把内部FLASH的内容读取回来,得到bin或hex文件格式的代码拷贝,别有用心的厂商即可利用该代码文件山寨产品。为此,STM32芯片提供了多种方式保护内部FLASH的程序不被非法读取,但在默认情况下该保护功能是不开启的,若要开启该功能,需要改写内部FLASH选项字节(Option Bytes)中的配置。
51.1.1 选项字节的内容
选项字节是一段特殊的FLASH空间,STM32芯片会根据它的内容进行读写保护、复位电压等配置,选项字节的构成见表 511。
表 511 选项字节的构成
地址 |
[63:16] |
[15:0] |
0x1FFF C000 |
保留 |
ROP 和用户选项字节 (RDP & USER) |
0x1FFF C008 |
保留 |
扇区 0 到 11 的写保护 nWRP 位 |
0x1FFE C000 |
保留 |
保留 |
0x1FFE C008 |
保留 |
扇区 12 到 23 的写保护 nWRP 位 |
选项字节具体的数据位配置说明见表 512。
表 512 选项字节具体的数据位配置说明
选项字节(字,地址 0x1FFF C000) |
|
RDP:读保护选项字节。 |
|
位 15:8 |
0xAA:级别 0,无保护 |
USER:用户选项字节 |
|
位 7 |
nRST_STDBY |
位 6 |
nRST_STOP |
位 5 |
WDG_SW |
位 4 |
0x1:未使用 |
位 3:2 |
BOR_LEV: BOR 复位级别 |
位 1:0 |
0x1:未使用 |
选项字节(字,地址 0x1FFF C008) |
|
位15 |
SPMOD:选择nWPRi位的模式 |
位14 |
DB1M:设置内部FLASH为1MB的产品的双Bank模式 |
位 13:12 |
0xF:未使用 |
nWRP: Flash 写保护选项字节。 |
|
位 11:0 |
nWRPi (i值为0-11,对应0-11扇区的保护设置): |
选项字节(字,地址 0x1FFE C000) |
|
位 15:0 |
0xFF:未使用 |
选项字节(字,地址 0x1FFE C008) |
|
位 15:12 |
0xF:未使用 |
nWRP: Flash 写保护选项字节。 |
|
位 11:0 |
nWRPi: |
我们主要讲解选项字节配置中的RDP