您的位置 首页 基础

STM32对内部Flash的保护措施

1、STM32对内部Flash的保护措施所有STM32的芯片都提供对Flash的保护,防止对Flash的非法访问-写保护和读保护。1)、读保护即大家通常说

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读维护收效时,CPU履行程序能够读受维护的Flash区,但存在两个例外情况:
1)、调试履行程序时;
2)、从RAM发动并履行程序时
STM32还供给了一个特别的维护,即对Flash存储区施加读维护后,即便没有启用写维护,Flash的第 0 ~ 3 页也将处于写维护状况,这是为了避免修正复位或中断向量而跳转到RAM区履行不合法程序代码。
3、Flash维护相关函数
FLASH_Unlock();//Flash解锁
FLASH_ReadOutProtection(DISABLE);//Flash读维护制止
FLASH_ReadOutProtection(ENABLE);//Flash读维护答应

以下摘自论坛:

http://www.openedv.com/posts/list/9353.htm

(1)设置读维护
intmain(void)
{
….
if(FLASH_GetReadOutProtectionStatus()!=SET)
{
//FLASH_Unlock();
FLASH_ReadOutProtection(ENABLE);
}
……
while(1)
{
…..
}
}
读维护后无法运用j-link将程序读出,当然也无法在线仿真了

这个写到程序傍边并履行往后,运用j-link就不能‘读出’程序了,便是‘读维护’了!我现已试过了,没有运用此程序能够读出下载到芯片中的程序,可是假如运用了此程序就无法读出程序了。
可是也无法再次烧写新的程序到芯片中了(要测验请稳重!!!!!!)
能够再主程序傍边设置一按键专门铲除“读维护”,一旦按下按键则铲除“读维护”时芯片能够从头被烧写。(我没有怎么做现在懊悔死了!)
办法二:弥补的办法,专门写一个铲除“读维护”程序,运用RAM中运转程序的办法,运转此程序解锁“读维护”。明日再去测验下,此办法。

在主程序中,经过一个按键,写入撤销“读维护”
if(FLASH_GetReadOutProtectionStatus()!=RESET)
{
FLASH_Unlock();
FLASH_ReadOutProtection(DISABLE);
}
运用j-link,能够正常读写程序和在线调试。
假如没有在主程序中有写这条指令,此芯片就无法再次烧写程序(能够擦出可是擦出后仍是无法烧写程序)。
只要经过将此撤销“读维护”程序,烧写到RAM中运转后,才干撤销“读维护”(要测验的请稳重!!!别救不会来就糟糕了)

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/jichu/258375.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部