0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详解什么是STM32对其Flash的保护

Q4MP_gh_c472c21 来源:金橙智能 作者:金橙智能 2021-06-27 11:41 次阅读

如果你还不了解什么是STM32对其Flash的保护,那么就由小橙同学来给你讲解一下什么是STM32的Flash保护!

什么是Flash?

STM32的FLASH组织结构,可能因不同系列、型号略有不同。比如大家熟悉的STM32F1中小容量一页大小只有1K,而F1大容量一页有2K。

还比如有些系列以扇区为最小单元,有的扇区最小16K,有的128K不等。

通常Flash包含几大块,这里以F40x为例:

主存储器:用来存放用户代码或数据。

系统存储器:用来存放出厂程序,一般是启动程序代码

OTP 区域:一小段一次性可编程区域,供用户存放特定的数据。

选项字节:存放与芯片资源或属性相关的配置信息

什么是STM32对内部Flash的保护?

所有的STM32芯片都会提供对Flash的保护,防止对Flash的非法访问,分为:写保护和读保护。

1、读保护就是大家通常说的“加密”,作用于整个Flash存储区域。如果一旦设置了Flash的读保护,那么单片机内置的Flash存储区就只能通过程序的正常执行才能读出,而不能通过下述方式读出:

(1) 使用调试器(JTAG或SWD);

(2)从内存RAM中启动并执行的程序;

2、写保护是以四页(1KB/页) Flash存储区为单位提供写保护,如果对Flash设置了写保护,那么就无法对Flash进行编程和擦除,而且同时产生操作错误标志。 当出现下图标志的时候,就要检查Flash是否被保护起来了。

读保护与写保护的相关效果

当设置读保护与写保护时,其效果如下图所示:

读保护写保护 对Flash的操作功能

有效有效CPU只能读,禁止调试和非法访问。

有效无效CPU可以读写,禁止调试和非法访问,页0~3为写保护。

无效有效CPU可读,允许调试和非法访问。

无效无效CPU可以读写,允许调试和非法访问。

1、flash保护的相关函数

2、STM32如何设置读保护?

我们只需要在程序开头加入“设置读保护”的代码就可以,这样就可以在每次运行代码的时候都检查一下,如果没有开的话就打开,如果开了就跳过。下面是读保护的代码:

ed7daabe-d6b2-11eb-9e57-12bb97331649.png

当我们在程序的开头执行了上面的代码之后,使用j-link就不能在读出程序了,这样就实现了读保护。

3、如何通过代码接触Flash保护解除读保护可以下面代码来进行解除,我们为了方便解锁,可以设置一个按键。

ed903544-d6b2-11eb-9e57-12bb97331649.png

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FlaSh
    +关注

    关注

    10

    文章

    1644

    浏览量

    148885
  • 数据
    +关注

    关注

    8

    文章

    7197

    浏览量

    89848
  • STM32
    +关注

    关注

    2274

    文章

    10929

    浏览量

    358060
  • 代码
    +关注

    关注

    30

    文章

    4841

    浏览量

    69213

原文标题:STM32的Flash写了保护怎么办?

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    物联网行业存储方案详解_SPI NOR Flash

    物联网系统中为什么要使用SPI NOR FLASH 物联网系统中使用SPI NOR FLASH的原因主要基于独特的性能特点和在嵌入式系统中的广泛应用。以下是详细的分析: 1、高可靠性与低时延
    的头像 发表于 09-24 14:39 473次阅读
    物联网行业存储方案<b class='flag-5'>详解</b>_SPI NOR <b class='flag-5'>Flash</b>

    NAND Flash的擦写次数介绍

    NAND Flash作为非易失性存储技术的重要一员,擦写次数是评估性能和寿命的关键因素之一。以下将详细介绍NAND Flash的擦写次数,包括
    的头像 发表于 07-29 17:18 3912次阅读

    验证flash加密功能时不小心将FLASH_CRYPT_CNT字段设置成写保护了,如何取消写保护

    验证flash加密功能时不小心将FLASH_CRYPT_CNT字段设置成写保护了,导致现在无法关闭flash加密。请问有什么方法取消写保护
    发表于 06-13 07:23

    STM32—启动脚本详解

    ARM Cortex M微控制器的启动例程。本项目选择了STM32F103作为示例板,但通过调整Flash和SRAM的地址和大小,这可以适用于其他控制器。
    发表于 05-31 14:17 1次下载

    STM32写入Flash不正常的原因?

    offaddr;//去掉0X08000000后的地址 if(WriteAddr=(STM32_FLASH_BASE+1024*STM32_FLASH_SIZE)))return;//非法地址
    发表于 05-14 08:22

    STM32F1 IAP操作读保护选项字节设置,APP使用系统复位跳转后无法运行IAP的原因?

    最近调试一个程序,是基于STM32F1做的IAP,升级前后需要修改选项字节,FLASH_EraseOptionBytes函数内OB->RDP=RDP_Key语句实现读保护的解除,如果我
    发表于 05-13 08:09

    求助,关于STM32F302_FLASH保护的问题求解

    查看好些STM32F302资料,想通过FLASH保护来实现加密功能,添加以下代码后,没能实现预期功能: #define OB_RDP_Level_0((uint8_t)0xAA) #define
    发表于 05-08 06:26

    STM32是如何从flash读取指令并执行的?

    [td]因为STM32H750自带的FLASH太小,而工程文件超过这个flash的容量,所以需要外挂一块flash来存程序,但是此程序需要加密,然后就遇到了问题。如果我往里面存的是密文
    发表于 04-24 07:09

    stm32f207片内flash的前114个字节莫名妙的变成了0x00的原因?

    stm32f207片内flash的前114个字节莫名妙的变成了0x00,这是什么问题??会有哪些原因呢?没有对0x8000000 开始的地址操作,因为这段地址是放应用程序的。
    发表于 04-22 07:00

    stm32f4 FLASH_ProgramDoubleWord函数数据不能写入flash的原因?

    STM32F401芯片,调用flash写函数时,如果写一个字,也就是调用stm32f4 FLASH_ProgramWord函数,能正确写入;如果换成
    发表于 04-12 06:50

    stm32f107使用内部FLASH失败的原因?

    _SIZE))) { return;//非法地址 } FLASH_Unlock();//解锁写保护 uint32_t offsetAddress=startAddress-FLASH_BASE;//计算去掉
    发表于 04-09 06:27

    STM32G4 FLASH全为0x00的原因?怎么解决?

    请教一下大家,我想测试STLINK UTILITY的Automatic Mode功能(芯片是STM32G474的开发板自带的STM32G474RET6U),来测试一下量产刷程序(配合设置读保护
    发表于 04-08 07:06

    STM32F072连接ST LINK无法读取FLASH弹出提示,是哪里出了问题?

    STM32F072连接ST LINK 无法读取FLASH 弹出提示,读保护(原本并未设置读保护,不知道为何会变成读保护状态?) 然后用ST
    发表于 03-21 06:16

    Teledyne e2v宣布扩展Flash™ CMOS图像传感器系列

    Teledyne Technologies[纽交所代码:TDY]旗下公司、全球成像解决方案创新者Teledyne e2v宣布扩展Flash™ CMOS图像传感器系列,推出Flash 2K LSA,该产品专门适用于需要使用大沙姆
    的头像 发表于 03-18 10:24 582次阅读

    STM32 FLASH模拟EEPROM,烧写程序时设置为读保护Level-2级别,还能正常读写这个模拟的EEPROM吗?

    STM32系列内部FLASH模拟EEPROM,烧写程序时设置为读保护Level-2级别,还能正常读写这个模拟的EEPROM吗?
    发表于 03-13 07:34