STM32如何设置读保护和解除读保护?

关于stm32对内部flash的保护    
  为了防止对flash的非法访问,所有stm32的芯片都提供对flash的保护,具体分为写保护和读保护。     如果对flash设置了写保护,那就无法对flash进行编程和擦除。在开发stm32的时候,如果出现这种情况,通常仿真器都支持对flash进行解锁,像jlink,stlink等仿真器都支持这个功能。     在使用mdk进行调试的时候,可能会遇到如下图所示的报错信息,这时候就要排查flash是不是被保护起来了。
读保护即大家通常说的“加密”,是作用于整个flash存储区域。一旦设置了flash的读保护,内置的flash存储区只能通过程序的正常执行才能读出,而不能通过下述任何一种方式读出:
通过调试器(jtag或swd)
从ram中启动并执行的程序
写保护是以四页(1kb/页) flash存储区为单位提供写保护,对被保护的页实施编程或擦除操作将不被执行,同时产生操作错误标志,读与写设置的效果见下表:
当flash读保护生效时,cpu执行程序可以读受保护的flash区,但存在两个例外情况: 
调试执行程序时
从ram启动并执行程序时 
stm32还提供了一个特别的保护,即对flash存储区施加读保护后,即使没有启用写保护,flash的第 0 ~ 3 页也将处于写保护状态,这是为了防止修改复位或中断向量而跳转到ram区执行非法程序代码。
  flash保护的相关函数
stm32如何设置读保护和解除读保护?   
  读保护设置后将不能读出flash中的内容。
如何设置读保护
   在程序的开头加入“设置读保护”的代码即可,每次运行代码时都检查一下,如果没有开就打开,如果打开了就跳过。其中,设置读保护的代码如下:
上面的代码执行后,使用j-link就不能读出程序了,实现了代码读保护。需要注意的是,芯片读保护后无法再次烧写新的程序到flash中,必须要解除读保护才可以。但是当解除读保护的时候stm32会自动擦除整个flash,起到保护数据的作用。
通过代码解除flash保护
    解除读保护可以设置在按键里面,方便实现解锁,也可以设置在命令中。如下是解除读保护代码:
程序中设置一个按键或者命令,可以随时解除flash的读保护,让芯片又可以重新烧录程序。如果没有留,还可以专门写一个程序,下载到ram中去运行,用来解除读保护。     注意:执行后,flash会自动全部擦除。
通过st-link utility来解除flash保护     
在stlink连接目标板的情况下打开程序烧写软件st-link utility,在菜单栏的target下选择connect,因为这时候flash已经被锁住了,能看到如下图所示的错误提示。
下面来操作如何解除flash保护。     请确保当前已经正确连接了stlink和目标板,在菜单栏target里打开option bytes...选项,发现在这里read out protection选项是enable,这个表示无法通过swd读取stm32内部flash的程序。
将read out protection选项设置为disable,并点击apply。     这时候flash已经成功解锁了,跟上文提到的解除flash保护的结果一样,内部flash已经被擦除了,如下图红框中所示。
完成以上步骤之后,在菜单栏target下选择disconnect断开与目标板连接。     
重新进入mdk,可以正常对目标板烧写程序了。
通过st-link utility来设置flash保护     
在菜单栏target里打开option bytes...选项,可以看到下面有flash sector protection选项。选择select all之后,发现所有page的protection项都已经变成write protection了,只要选择apply选项就可以对flash进行写保护,如下图所示。
编辑|:黄飞

智能显示屏可以实现千里之外的智能操控
制造企业通过机器换人来实现智能制造
5G-V2V将是解决车与车之间通信的核心发展方向
在线新经济能否催生VR独角兽级企业?
固网业务已经成为中国移动营收主要增长点但面临三大转变
STM32如何设置读保护和解除读保护?
【盘点】国内外知名直线电机模组品牌有哪些?
被iPhone12蓝色震惊了 iPhone12蓝色开箱被吐槽 可以退货吗
Linux 4.3内核中增加了MOST驱动子系统
苹果计划为iPad首次搭载ToF模组 并非用于人脸识别而是为拍照
热电偶放大器与数字转换器MAX6675的原理、性能特点和应用分析
PCB探针的七大种类
今日看点丨自研5G芯片梦碎!苹果至少到2026年都无法摆脱高通;渠道变革?传小鹏汽车销售区域缩减一半
容器化技术为什么主要是为传统企业IT开发的?
人工智能自动规划的概念以及定义
共生 共创 共赢|芯海科技2022年度代理商表彰大会圆满落幕!
三分钟迅速带你了解3D打印原理
LG U+将为韩国构建自动驾驶大数据控制平台
AMETEK发布Asterion系列12kVA/18kVA新型号交直流电源产品
苹果处理器换制造商,晶圆代工大战一触即发?