第51章 设置FLASH的读写保护及解除—零死角玩转STM32-F429系列

Flash读写保护没法同时设置的问题 Flash读写保护 阅读详情
 

第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:读保护选项字节。
读保护用于保护 Flash 中存储的软件代码。

位 15:8

0xAA:级别 0,无保护
其它值:级别 1,存储器读保护(调试功能受限)
0xCC
:级别 2,芯片保护(禁止调试和从 RAM 启动)

USER:用户选项字节
此字节用于配置以下功能:
选择看门狗事件:硬件或软件
进入停止模式时产生复位事件
进入待机模式时产生复位事件

位 7

nRST_STDBY
0
:进入待机模式时产生复位
1
:不产生复位

位 6

nRST_STOP
0
:进入停止模式时产生复位
1
:不产生复位

位 5

WDG_SW
0
:硬件看门狗
1
:软件看门狗

位 4

0x1:未使用

位 3:2

BOR_LEV: BOR 复位级别
这些位包含释放复位信号所需达到的供电电压阈值。
通过对这些位执行写操作,可将新的 BOR 级别值编程到 Flash。
00
: BOR 级别 3 (VBOR3),复位阈值电压为 2.70 V 到 3.60 V
01
: BOR 级别 2 (VBOR2),复位阈值电压为 2.40 V 到 2.70 V
10
: BOR 级别 1 (VBOR1),复位阈值电压为 2.10 V 到 2.40 V
11
: BOR 关闭 (VBOR0),复位阈值电压为 1.8 V 到 2.10 V

位 1:0

0x1:未使用

选项字节(字,地址 0x1FFF C008)

位15

SPMOD:选择nWPRi位的模式
0
:nWPRi位用于写保护(默认)
1
:nWPRi位用于代码读出保护(Proprietary code readout protection ,PCROP)

位14

DB1M:设置内部FLASH为1MB的产品的双Bank模式
0
:单个Bank的模式
1
:使用两个Bank的模式

位 13:12

0xF:未使用

nWRP: Flash 写保护选项字节。
扇区 0 到 11 可采用写保护。

位 11:0

nWRPi (i值为0-11,对应0-11扇区的保护设置):
0
:开启所选扇区的写保护
1
:关闭所选扇区的写保护

选项字节(字,地址 0x1FFE C000)

位 15:0

0xFF:未使用

选项字节(字,地址 0x1FFE C008)

位 15:12

0xF:未使用

nWRP: Flash 写保护选项字节。
扇区 12 到 23 可采用写保护。

位 11:0

nWRPi:
0
:开启扇区 i 的写保护。
1
:关闭扇区 i

Jlink使用技巧之--芯片加密(FLASH读保护-F4系列) 1. 读保护函数及解除读保护函数。 阅读详情

相关推荐

STM32F429内部FLASH读写擦除操作流程和寄存器配置要点

一、STM32F429 FLASH总体介绍 双bank架构,容量高达2 Mbytes,支持read-while-write边读边写(RWW) 支持128位宽的数据读取 Byte、half-word、word 、 double word 写入 sector, bank, and mass erase (两个bank) Dual bank memory organization 对于2M产品,一个bank(1 MB)分为4个16 KB的扇区,1个64 KB的扇区和7个128 KB的扇区。 2Mbytes是两个

ydgd118的博客 1万+

用J-Flash去掉STM32写保护

用J-Flash去掉STM32写保护

MATLAB/simulink电力系统之变压器仿真+变压器饱和仿真+空载变压器电流畸变原因及仿真+空载合闸励磁涌流仿真+simulink免费仿真资源

单相变压器空载运行时,原边电流主要用来产生主磁场,而电路损耗和铁芯损耗很小,因此即使外加电压很大,空载电流仍然很小。如果想观察某个相对磁导率下电感系数的数值,可以在程序中增加这样的语句,比如,在程序中end语句之后,加上L(100),运行程序后就可以得到相对磁导率为 100时的电感系数值。在交流铁芯线圈中,当交变磁通按照正弦规律变化时,受到磁路饱和的影响,线圈中的电流会发生畸变,并成为尖顶波,这就是所谓的交流磁路电流畸变。需要指出,铁芯内的主磁通Ф可以通过空载时的副边电压从来测量,两者之间的数学关系,即。

m0_37724753的博客 4230

OpenFeign, Zuul, Gateway相互不兼容的问题总结

版本 Lib Vresion spring-cloud-starter-gateway 3.1.0 spring-cloud-dependencies 2021.0.0 spring-cloud-starter-netflix-zuul 2.2.6.RELEASE spring-cloud-starter-openfeign 3.1.0 1. Zuul 与OpenFeign 一起使用的问题 错误信息 jav.

Harry的博客 4132

手把手教你用STM32实现SPWM逆变器控制(附完整代码)

本文详细介绍了如何使用STM32微控制器实现SPWM逆变器控制,包括硬件设计、PWM生成配置、正弦表生成与DMA传输,以及闭环控制与性能优化。通过完整的代码示例和实测数据,帮助开发者快速掌握SPWM技术,应用于新能源和电力电子领域。

weixin_29296241的博客 318

osgEarth实战:5分钟搞定3DTiles模型加载(附完整配置代码)

本文提供了一份osgEarth加载3DTiles模型的实战指南。通过详解核心Earth文件配置与精简的C++集成代码,帮助开发者快速在三维地球场景中集成倾斜摄影与BIM等海量模型,并分享了性能调优与常见问题排查技巧,有效提升开发效率。

jjj34的博客 479

UE5入门第二周总结:基于蓝图的国际象棋的实现

在C++的学习中,这是一个入门级别的项目。我们的目标是灵活运用蓝图的特性和强大的可视化功能,做出这一入门级项目的同时,思考如何优化并改进算法,并尽可能的用面向对象的方法实现,用蓝图中的继承和多态简化编码过程。

YoungeYang的博客 1260

全双工AI语音交互:从原理到实践,构建实时对话系统

语音交互技术正从传统的半双工模式向全双工模式演进,以实现更自然、实时的对话体验。全双工交互的核心原理在于模拟人类电话通话,允许双方同时发送和接收音频流,这需要流式语音识别(Streaming ASR)和实时自然语言理解(Real-time NLU)技术的深度整合。其技术价值在于显著降低交互延迟,支持智能打断(Barge-in),从而提升人机对话的流畅度和自然度。在应用场景上,全双工技术是智能助手、实时翻译、车载语音及无障碍交互等领域的关键突破。本文以微软MAI Realtime等模型为例,探讨如何利用开源技

weixin_33693070的博客 404

STM32F407用FSMC+DMA驱动LVGL,3.5寸屏流畅度翻倍实战(附CubeMX配置避坑)

本文详细介绍了如何在STM32F407上通过FSMC+DMA驱动LVGL,显著提升3.5寸屏的显示流畅度。从FSMC与DMA的配置原理到LVGL驱动层适配,提供了完整的优化方案和实测数据,帮助开发者解决界面卡顿问题,实现流畅度翻倍的效果。

weixin_30872499的博客 559

Mastercam软件二次开发:使用C#进行Mastercam二次开发

C#(发音为“C Sharp”)是一种现代、面向对象的编程语言,由微软开发,首次发布于2000年。它结合了C和C++的强大功能,同时引入了Java的垃圾回收机制,使得C#在开发效率和运行性能之间找到了一个良好的平衡点。C#的设计目标是提高开发者的生产力,它支持多种编程范式,包括面向对象、泛型、委托和事件等,这使得它成为开发Windows应用程序、Web应用程序、游戏(尤其是使用Unity引擎)和企业级应用的理想选择。

kkchenjj的博客 2214

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

上一篇: 第50章 读写内部FLASH—零死角玩转STM32-F429系列
0木木0
博客等级 码龄17年 458粉丝 58原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值