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

    文章

    1634

    浏览量

    148007
  • 数据
    +关注

    关注

    8

    文章

    7021

    浏览量

    89015
  • STM32
    +关注

    关注

    2270

    文章

    10900

    浏览量

    355928
  • 代码
    +关注

    关注

    30

    文章

    4787

    浏览量

    68591

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    验证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

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

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

    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

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

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

    当对Flash进行UCB保护时Confirmation的应该如何设置?

    当对Flash进行UCB保护时Confirmation的应该如何设置?
    发表于 02-01 07:41

    stm32 flash写数据怎么存储的

    ,包括结构、特点以及如何写入数据。 一、STM32 Flash的结构 STM32 Flash存储器通常被分为多个扇区,每个扇区大小为2KB
    的头像 发表于 01-31 15:46 2395次阅读

    电缆护层保护器维护方法详解

    电缆护层保护器维护方法详解 在电气行业的背景下,电缆作为电力传输的重要载体,安全运行对于保障电力供应的稳定至关重要。而电缆护层保护器作为电缆的重要组成部分,
    的头像 发表于 01-22 10:20 307次阅读

    请问M451的flash保护怎么做?

    M451的flash 保护怎么做?
    发表于 01-16 07:26

    stm32f103 flash模拟eeprom

    STM32F103的Flash存储器可以模拟EEPROM的功能,在本文中我们将详细介绍如何使用STM32F103的Flash存储器来实现EEPROM。 概述 EEPROM(Elect
    的头像 发表于 01-09 11:21 2037次阅读