STM32 的存储器

一 存储器组织

程序存储器、数据存储器、寄存器和输入输出端口被组织在同一个4GB的线性地址空间内。
数据字节以小端格式存放在存储器中。一个字里的最低地址字节被认为是该字的最低有效字节,而最高地址字节是最高有效字节。
可访问的存储器空间被分成8个主要块,每个块为512MB。其他所有没有分配给片上存储器和外设的存储器空间都是保留的地址空间。

1. FLASH

Flash主存储区从0x0800 0000地址开始,不同系列器件有不同大小,这里存放为用户烧入的代码(CODE)、常量(RO)和已经初始化的全局变量的值(RW)。
STM32 的存储器

闪存存储器有主存储块和信息块组成:

STM32 的存储器
上图以大容量芯片ZET6为例

STM32的Flash包括:Flash主存储区(Main memory)、系统存储器(System memory),以及操作(选择)字节(Opetio Bytes)。
  Flash主存储区从0x0800 0000地址开始,不同系列器件有不同大小,这里存放为用户烧入的代码(CODE)、常量(RO)和已经初始化的全局变量的值(RW)。
  系统存储器地址0x1FFF F000 – 0x1FFF F71F,这是厂商出厂之前烧入的一段程序,用来使用串口下载程序,实现IAP。该处你只能使用,不能写或擦除。
  操作字节:可以按照用户的需要进行配置(如配置看门狗为硬件实现还是软件实现)。

2. SRAM

STM32F10xxx内置64K字节的静态SRAM。它可以以字节、半字(16位)或全字(32位)访问。SRAM的起始地址是0x2000 0000

3. 启动

代码区始终从地址0x0000 0000开始(通过ICode和DCode总线访问),
而数据区(SRAM)始终从地址0x2000 0000开始(通过系统总线访问)。

根据选定的启动模式,主闪存存储器、系统存储器或SRAM可以按照以下方式访问:
● 从主闪存存储器启动:主闪存存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(0x0800 0000)访问它,即闪存存储器的内容可以在两个地址区域访问, 0x00000000或0x0800 0000。
● 从系统存储器启动:系统存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(互联型产品原有地址为0x1FFF B000,其它产品原有地址为0x1FFF F000)访问它。
● 从内置SRAM启动:只能在0x2000 0000开始的地址区访问SRAM。

参考:
STM32中文参考手册_V10
https://blog.csdn.net/wenlon7/article/details/83054989