概述:
本文以STM32F103RBT6为例,介绍了片上闪存(嵌入式闪存)的一些问题,包括闪存大小(内存映射)、块大小、页面大小和寄存器。 这些知识有助于编写闪存驱动程序。
一、如何看待Flash的大小
1.1通过形式
型号印刷在MCU的表面,可以通过观察获得。 我的是STM32F103RBT6。 (以下分析基于该型号。 对照下图中STM32产品的命名,可以看到STM32F103RBT6的闪存为128KB。
()
图1订单信息方案
1.2根据数据手册(内存映射)
也可以从数据手册中获取闪存大小,但首先根据型号从官方网站单击相应的数据手册Datasheet (此处,然后输入MCU型号进行搜索。 有关STM32F103RB的文档在这里。 http://www.ST.com/internet/MCU/product/164487.JSP ),找到名为Memory map的图,如图2中的红框所示。 (图2的红框放大图3 ),Flaaarymap在这个方法中也可以知道片上的Flash的存储器映射。
图2内存图
图3内存映射的SRAM和Flash
二.块大小
对于系统,闪存分为片上闪存(嵌入式闪存)和外部闪存。 通常,Flash将页面分成块,然后对每个块进行擦除。 这样的说法对外部Flash来说,片上的Flash应该可以逐页擦除,也可以逐块擦除。 英文原文如下[2] :
theflashmemoryeraseoperationcanbeperformedatpageleveloronthewholeflasharea (mass-erase ).the mass-erasedoesnotafffectheitheiorea
三.页面大小
通过1.2的方法获得该MCU的参考手册。 STM32F103RBT6的参考手册是RM 0008参考手册,位于嵌入式闪存存储器一章中。 (也可以通过在0x0800 0000中搜索来定位。 STM32有四种闪存模块组织,分别是低确定设备(128kb,1KB/page )、中确定设备(medium-densitydevices ) 128kb, 1KB/page ),即2KB/page )、连接性绑定设备(256 kb、2KB/page )和XL-density (devices ) 1m、2KB/page )。 从上面的分析可以看出,STM32F103RBT6的Flash为128KB,表示是中间设备。 如下图所示。
图4闪存调制解决方案(中间设备)。
四.闪存相关寄存器
Flash寄存器向存储器的映射如下[1] :
图5内存映射的flash接口
Flash各寄存器的具体地址如下[2] :
图6 flashmemoryinterfaceregistersofmedium-density devices
具体而言,关于各寄存器的功能、位的含义,必须参考[3]。 Flash寄存器的映射如下。
图7 flash注册图
五.信息块
在Flash中,信息块映射到内存如下[1] :
图8内存映射的系统内存
具体的Flash信息块地址如下:
图9信息块关键设备
系统内存包含引导程序,系统在从片启动闪存时使用。 Flash出厂后无法修改。 不知道我的理解是否正确,把原文发布在下面[3] :
systemmemoryisusedtobootthedeviceinsystemmemorybootmode.theareaisreservedforusebystmicroelectronicsandcontainsthebootloaderwerwerwoderwerwerwod flashmemoryusingtheusart 1串行接口. itisprogrammedbystwhenthedeviceismanufactured,andprotectedagainstspuriouswrite /
有关theoptionbytesaremanagedbyanembeddedflashprogram/erase controller (fpec ),请参阅[3]。
参考资料:
[1] ds 5319: medium-densityperformancelinearm-based 32-bitmcuwith 64 or 128 kb闪存,USB,CAN,7 timers,2 ADCs,9 com
[2] RM0008: STM32F101xx、STM32F102xx、STM32F103xx、STM 32 f 105 xxandstm 32 f 107 xxadvancedarm-based 32-bitmcus (参考手册)
[3] pm 00753360 STM 32 F10 xxxflashmemorymicrocontrollers (flash编程手册) PM0075.pdf