历史上的今天
返回首页

历史上的今天

今天是:2024年10月08日(星期二)

正在发生

2019年10月08日 | STM32 读写保护功能及设置

2019-10-08 来源:eefocus

功能::
读保护设置后将不能读出flash 的内容;当解除读保护的时候stm32 会自动擦出
整篇flash;
设置:
读保护设置:在程序的开头加入“读保护”代码,即实现了读保护功能;(每次程序

运行先
开保护)
解除读保护:解除读保护可以设置在按键里面,方便实现解锁,也不可不设;
(1)设置读保护:
if(FLASH_GetReadOutProtectionStatus() != SET)
{
//FLASH_Unlock();不解锁FALSH 也可设置读保护???
FLASH_ReadOutProtection(ENABLE);
}
(2)解除读保护
if(FLASH_GetReadOutProtectionStatus() != RESET)
{
FLASH_Unlock();
FLASH_ReadOutProtection(DISABLE);
}
这些函数在stm32f10x_flash 里面;
注意:调用上面这个库的时候需在#include "stm32f10x_flash.h"前加#define

_FLASH_PROG;
否则报(没有定义)错;

************************************************************************

/* Flash读保护使能 */ 
if (FLASH_GetReadOutProtectionStatus() == RESET) 
{
FLASH_Unlock();
FLASH_ReadOutProtection(ENABLE); 
}


/* 清除Flash读保护 */ 
if (FLASH_GetReadOutProtectionStatus() == SET) 

/* 会擦除Flash */
FLASH_Unlock();
FLASH_ReadOutProtection(DISABLE); 
}

CPU Flash读保护使能后,仿真器调试会失败。J-LINK有个解锁菜单,需要解锁才能正常再次烧写程序。当然解锁会导致Flash内容被全部擦出。
启动"J-Flash ARM"工具,Target->unsercure chip 就解除了芯片的读保护。
Target->unsercure chip 后一定要上电复位,系统复位是不行的。

一定要上电复位,系统复位是不行的!

STM32对内部Flash的保护措施

1、STM32对内部Flash的保护措施 
所有STM32的芯片都提供对Flash的保护,防止对Flash的非法访问 - 写保护和读保护。 
1)、读保护即大家通常说的“加密”,是作用于整个Flash存储区域。一旦设置了Flash的读保护,内置的Flash存储区只能通过程序的正常执行才能读出,而不能通过下述任何一种方式读出: 通过调试器(JTAG或SWD);
从RAM中启动并执行的程序; 
2)、写保护是以四页(1KB/页) Flash存储区为单位提供写保护,对被保护的页实施编程或擦除操作将不被执行,同时产生操作错误标志。 
读与写设置的效果见下表: 
读保护 写保护 对Flash的操作功能 
有效 有效 CPU只能读,禁止调试和非法访问。 
有效 无效 CPU可以读写,禁止调试和非法访问,页0~3为写保护。 
无效 有效 CPU可读,允许调试和非法访问。 
无效 无效 CPU可以读写,允许调试和非法访问。


2、当Flash读保护生效时,http://tiyubisai.com/video_news/news_135620.html CPU执行程序可以读受保护的Flash区,但存在两个例外情况: 
1)、调试执行程序时; 
2)、从RAM启动并执行程序时 
STM32还提供了一个特别的保护,即对Flash存储区施加读保护后,即使没有启用写保护,Flash的第 0 ~ 3 页也将处于写保护状态,这是为了防止修改复位或中断向量而跳转到RAM区执行非法程序代码。
3、Flash保护相关函数 
FLASH_Unlock(); //Flash解锁 
FLASH_ReadOutProtection(DISABLE); //Flash读保护禁止 
FLASH_ReadOutProtection(ENABLE); //Flash读保护允许

现在总结一下FLASH读保护和解除读保护的步骤:
(1)设置读保护
int main(void)
{
....
if(FLASH_GetReadOutProtectionStatus() != SET)
{
//FLASH_Unlock();
FLASH_ReadOutProtection(ENABLE); 
}
......
while(1)
{
.....
}
}
(2)解除读保护:在程序中的某个操作中(如按键等)加入如下代码,执行后
代码自己杀死了自己,哈哈!!!
if(FLASH_GetReadOutProtectionStatus() != RESET)
{
FLASH_Unlock();
FLASH_ReadOutProtection(DISABLE); 

如果没有在程序中加入解除读保护代码,也不要紧,可以写段RAM中运行的程序
用于解除读保护,执行后,FLASH会自动全部擦除。代码如下:
int main(void)
{
Chinp_Init();
FLASH_Unlock();
FLASH_ReadOutProtection(DISABLE); 
}

※对于在RAM中运行程序,说明如下:
(1)我使用IAR + J-Link,不用把Boot0和boot1脚设置成从RAM启动也可在RAM中调试(我是设置成从FLASH启动)。
(2)在IAR环境中设置Link文件为lnkarm_ram.xcl
(3)Debuger选项Download tab中勾全部去掉。
按上面设置完成后,按Debug按钮,执行上面程序,读保护可解除。


推荐阅读

史海拾趣

C-MEDIA公司的发展小趣事

近年来,网络游戏市场呈现出蓬勃发展的态势,C-MEDIA公司也看到了其中的商机。于是,公司通过收购C&C Media,进一步深入日本网络游戏市场。这次收购不仅帮助C-MEDIA公司把握了该市场的成长机遇,也有效地拓展了其海外运营实力。C&C Media旗下的网络游戏门户网站“MK-STYLE”为个人用户提供了丰富的网络游戏服务,进一步巩固了C-MEDIA在网络游戏领域的市场地位。

FDI [Future Designs , Inc.]公司的发展小趣事

作为一家有社会责任感的企业,FDI公司始终关注社会公益事业。公司积极参与扶贫、教育、环保等领域的公益活动,为社会做出了积极贡献。同时,FDI还设立了奖学金和助学金,鼓励和支持年轻人投身电子科技事业。这些举措不仅提升了公司的社会形象,也为其赢得了广泛的赞誉。

Cortina Systems Inc公司的发展小趣事

随着市场竞争的加剧,FDI公司意识到只有不断创新才能在行业中立足。于是,公司加大了对研发的投入,引进了一批顶尖的技术人才。经过数年的努力,FDI成功研发出了一款具有自主知识产权的智能电子系统,该系统集成了多项先进技术,可以广泛应用于智能家居、工业自动化等领域。这一技术突破,不仅使FDI公司的知名度大幅提升,也为其带来了丰厚的利润。

安碁科技(AKER)公司的发展小趣事

随着市场需求的不断增长,安碁科技开始寻求扩大产能和全球化布局。1999年,公司正式量产电压控制振荡器(VCXO),并购置了更大的厂房以扩大产能。随后,安碁科技陆续在美国和中国大陆设立子公司和办事处,进一步拓展国际市场。这一系列的举措,不仅提高了公司的产能和效率,也使其能够更好地服务全球客户,实现业务的快速增长。

Bomar公司的发展小趣事

近年来,随着物联网和人工智能技术的快速发展,智能化物流成为了电子行业的新趋势。Bomar公司敏锐地捕捉到了这一市场机遇,开始将业务范围拓展至智能化物流领域。通过与深兰科技等公司的合作,Bomar公司成功推出了智能化物流、仓储装备以及清洁机器人等产品,并成功销往欧洲市场。这些产品的推出不仅提升了Bomar公司的市场竞争力,也为公司的未来发展开辟了新的增长点。

AZ Displays公司的发展小趣事

AZ Displays深知品质是企业生存的根本。因此,公司始终将质量控制放在首位,从原材料采购到生产工艺的每一个环节都进行严格把控。通过严格的质量管理体系和高效的供应链管理,AZ Displays的产品质量得到了客户的高度认可,逐渐在行业内建立了卓越的声誉。

问答坊 | AI 解惑

嵌入式,累死你没商量

 做了一段时间嵌入式,发现自己憔悴了很多   又研究硬件,看电路图,DATASHEET,又要搞代码,方案公司的代码长的不得了,有时候真想一头装死,还是舍不得。。。   真的太累啊[ …

查看全部问答>

恩智浦微控制器LPC2478 ARM7应用讨论

恩智浦微控制器LPC2478和LPC2470支持需高速通信的LCD应用 恩智浦半导体发布其全新的LPC2478微控制器,这是业界唯一的提供集成的LCD支持的基于闪存的ARM7 MCU。同时推出的LPC2470是其无闪存版本。全新的微控制器配有双路ARM高速总线,可实现多种高带 ...…

查看全部问答>

如何打开ARM实时时钟计数器

请问ARM9中如何打开实时时钟计数器,我初始化了TICNT了,但是如何让他运行起来 我初始化过程 rRTCOON=0x0; rTICNT=(127&0x7f)|0x80; TICNT寄存器不会走,要如何让他走起来…

查看全部问答>

在哪能买到室外被动红外探测器的防爆罩?红外在加油站工作有危险吗?

大家都知道,加油站是禁止打手机的,那么红外是否也会引起同样的危险呢? 谢谢!…

查看全部问答>

能一眼看出来这是什么吗

猜猜看,这是什么?         这个带有法拉利标志的头盔,实际上是一款咖啡机。将头盔的护目镜打开,就可以看到隐藏在其中的咖啡操作台。为了起到更好的装饰作用和隐蔽效果,咖啡机的操作按钮都隐藏在滑片之后。您可以将它 ...…

查看全部问答>

问:windows和dos下如何获得dosfs文件系统的U盘,,,在线求救!

问:windows和dos下如何获得dosfs文件系统的U盘,,,在线求救!…

查看全部问答>

ucos中如何规划定时采样任务?

ucos中如何规划定时采样任务?当采样频率要求很高时,任务是放在中断函数中吗,中断函数的写法和裸机的中断函数有区别吗?…

查看全部问答>

launchpad欢乐学习季

MSP挑战级(高级)78分,有没有机会获得铁电开发板呢? …

查看全部问答>

出IC/开发板/工具/屏,有免费东西送!

1.    LATTICE CPLD ISPLSI 2064VE全新,5元一片,共160PCS   全要包邮! 半小时前 上传 下载附件 (178 KB) 半小时前 上传 下载附件 (171.75 KB) 2.  GPS LEA-4H-Q-000   送一条天线转接线 ...…

查看全部问答>