如果你还不了解什么是STM32对其Flash的保护,那么今天就来给你讲解一下什么是STM32的Flash保护!
01、什么是Flash?
STM32的FLASH组织结构,可能因不同系列、型号略有不同。比如大家熟悉的STM32F1中小容量一页大小只有1K,而F1大容量一页有2K。
还比如有些系列以扇区为最小单元,有的扇区最小16K,有的128K不等。
通常Flash包含几大块,这里以F40x为例:
主存储器:用来存放用户代码或数据。
系统存储器:用来存放出厂程序,一般是启动程序代码。
OTP 区域:一小段一次性可编程区域,供用户存放特定的数据。
选项字节:存放与芯片资源或属性相关的配置信息。
02、什么是STM32对内部Flash的保护?
所有的STM32芯片都会提供对Flash的保护,防止对Flash的非法访问,分为:写保护和读保护。
1、读保护就是大家通常说的“加密”,作用于整个Flash存储区域。如果一旦设置了Flash的读保护,那么单片机内置的Flash存储区就只能通过程序的正常执行才能读出,而不能通过下述方式读出:
(1) 使用调试器(JTAG或SWD);
(2)从内存RAM中启动并执行的程序;
2、写保护是以四页(1KB/页) Flash存储区为单位提供写保护,如果对Flash设置了写保护,那么就无法对Flash进行编程和擦除,而且同时产生操作错误标志。 当出现下图标志的时候,就要检查Flash是否被保护起来了。
03、读保护与写保护的相关效果
当设置读保护与写保护时,其效果如下图所示:
1)flash保护的相关函数
2)STM32如何设置读保护?
我们只需要在程序开头加入“设置读保护”的代码就可以,这样就可以在每次运行代码的时候都检查一下,如果没有开的话就打开,如果开了就跳过。下面是读保护的代码:
当我们在程序的开头执行了上面的代码之后,使用j-link就不能在读出程序了,这样就实现了读保护。
3)如何通过代码解除Flash保护
解除读保护可以下面代码来进行解除,我们为了方便解锁,可以设置一个按键。