MCU的FLASH技术详解:以STM32的M4内核为例
首先次博客以STM32F40xx为例子,不管是F405系列或者F407系列都是大差不差,只是相关的扇区分布有差别。
STM32F40x的闪存模块由:主存储器、系统存储器、OPT区域和选项字节等4部分组成。
主存储器
改部分用来存放代码和数据常数(如const类型的数据)。分为12个扇区,前4个扇区为16KB大小,然后扇区4是64KB大小,扇区5~11是128K大小,
不同容量的STM32F4,拥有的扇区数不一样,比如STM32F407ZGT6,则拥有全部12扇区。从上图可以看出主存储器的起始地址就是0X0800 0000,B0、B1都接GND的时候,就是从0X08000000开始运行代码的。
系统存储器
这个主要用来存放STM32F4的BootLoader代码,此代码出厂的时候就固化在STMF4里面了,专门来给主存储器下载代码的。当B0接V3.3,B1接GND的时候,从改存储器启动(即进入串口下载模式)。
OTP区域
即一次性可编程区域,共528字节,被分成两个部分,前面512字节(32字节为1块,分成16块),可以用来存储一些用户数据(一次性的,写完一次,永远不可以擦除!!),后面16字节,用于,锁定对应块。
选项字节
用于配置读保护、BOR级别、软件/硬件看门狗以及期间处于待机或停止模式下的复位。
闪存存储器接口寄存器该部分用于控制闪存读写等,是整个闪存模块的控制机构:
在执行闪存写操作时,任何对闪存的读操作都会锁住总线在写操作完成后读操作才能正确地进行,既在进行写或擦除操作时,不能进行代码或数据的读取操作,
FLASH End of Operation flag FLASH操作结束标志
FLASH operation Error flag FLASH操作错误标志
FLASH Write protected error flag FLASH写保护错误标志
FLASH Programming Alignment error flag FLASH编程对齐错误标志
FLASH Programming Parallelism error flag FLASH编程并行性错误标志
FLASH Programming Sequence error flag FLASH编程序列错误标志
另外的拓展
单片机的下载方式分为 ICP(In Circuit Programing)、ISP(In System Programing)和 IAP(In Application Programing)三种
ICP:在电路编程,使用 JTAG/SWD 等调试接口进行编程
ISP:在系统编程,使用系统存储器中预置的 BootLoader 和外围 UART/SPI/IIC 等通讯接口进行编程
IAP:在应用编程,使用内置 Flash 中用户自定义的 BootLoader 和外围 UART/SPI/IIC 等通讯接口进行编程。这种方式将内置 Flash 分成了两个区域,一个区域用于存储用户自定义的 BootLoader,另一个区域用于存储真正需要运行的 APP 程序。
相关下载模式可参照此链接
作者:落叶_生根