首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

stm32存储结构& 存储器映射(整理)(2)

stm32存储结构& 存储器映射(整理)(2)

Cortex-M3内核通过I-CodeD-CodeSystem总线与STM32内部的FlashSROM相连接的,该种连接情况直接关系到STM32存储器的结构组织;也就是说,Cortex-M3的存储器结构决定了STM32的存储器结构。
这里可能说的比较笼统,可以这样理解:Cortex-M3是一个内核,自身定义了一个存储器结构,ST公司按照Cortex-M3的这个存储器定义,设计出了自己的存储器结构;但是ST公司的STM32的存储器结构必须按照Cortex-M3这个定义的存储器结构来进行设计。
举个例子:
我买了一个做饭的调料盒子,有三块区域(假设存储器分为3块),上面分别标有盐(Flash)、糖(SROM)、味精(Peripheral);此时,该调料盒子并没有任何意义(对应Cortex-M3内核);我按照标签放入特定品牌、特定分量的盐(Flash)、糖(SROM)、味精(Peripheral),产生一个有实际意义的调料盒(各类Cortex-M3内核的芯片,如STM32)。
期间,调料位置不能放错,但可以不放。由上面的例子可以看出,空的调料盒子决定了有意义的调料盒子存放调料的结构。因此,只要了解空盒子的存储结构,就可以很清楚的明白当有调料时的用法了。


3 STM32内核(Cortex-M3)的存储器映射
存储器映射是指把芯片中或芯片外的FLASHRAM,外设,BOOTBLOCK等进行统一编址。即用地址来表示对象。这个地址绝大多数是由厂家规定好的,用户只能用而不能改。用户只能在挂外部RAMFLASH的情况下可进行自定义。
如图,是Cortex-M3存储器映射结构图。






Cortex-M332位的内核,因此其PC指针可以指向2^32=4G的地址空间,也就是0x0000_0000——0xFFFF_FFFF这一大块空间。
好,根据图中描述,Cortex-M3内核将0x0000_0000——0xFFFF_FFFF这块4G大小的空间分成8大块:代码、SRAM、外设、外部RAM、外部设备、专用外设总线-内部、专用外设总线-外部、特定厂商等。导致了,使用该内核的设计者必须按照这个进行各自芯片的存储器结构设计。
这就可以去了解STM32的存储器结构,以及为什么这样设计STM32存储器的结构了。


4 STM32存储器结构
首先,我们对比一下Cortex-M3存储器结构和STM32存储器结构:








图中可以很清晰的看到,STM32的存储器结构和Cortex-M3的很相似,不同的是,STM32加入了很多实际的东西,如:FlashSRAM等。只有加入了这些东西,才能成为一个拥有实际意义的、可以工作的处理芯片——STM32
STM32的存储器地址空间被划分为大小相等的8块区域,每块区域大小为512MB
STM32存储器知识的掌握,实际上就是对FlashSRAM这两个区域知识的掌握。因此,下面将重点描述FlashSRAM的知识。


5 STM32SRAM
以下是STM32参考手册RM0008中的一段原话:






不同类型的STM32单片机的SRAM大小是不一样的,但是他们的起始地址都是0x2000 0000,终止地址都是0x2000 0000+其固定的容量大小。
SRAM的理解比较简单,其作用是用来存取各种动态的输入输出数据、中间计算结果以及与外部存储器交换的数据和暂存数据。设备断电后,SRAM中存储的数据就会丢失。


6 STM32Flash
STM32Flash,严格说,应该是Flash模块。
Flash模块包括:Flash主存储区(Main memory)、Flash信息区(Information block),以及Flash存储接口寄存器区(Flash memory interface)。
继承事业,薪火相传
返回列表