2.4.1 存储器映射

更新于 2026年10月10日 版权声明
2.4.1 存储器映射

ARM Cortex-M3采用了固定的存储器映射结构,如图2.7所示,包括代码区、片上SRAM区、片上外设区、片外RAM区、片外外设区和内核私有区。

图示

图2.7 ARM Cortex-M3存储器映射结构

1.代码区

代码区的大小是512 MB。程序可以在代码区、片上SRAM区以及片外RAM区中被执行,但是因为指令总线与数据总线是分开的,所以最理想的情况是把程序放到代码区,从而使取指和数据访问各自使用自己的总线。

2.片上SRAM区

片上SRAM区的大小是512 MB,用于让芯片制造商连接片上的SRAM,这个区通过系统总线来访问。在这个区的下部,有一个1 MB的区间,被称为“位带区”。该位带区还有一个对应的32 MB的“位带别名区”,容纳了8 MB个“位变量”。位带区对应的是最低的1 MB地址范围,而位带别名区里面的每个字对应位带区的一个比特位。位带操作只适用于数据访问,不适用于取指。通过位带的功能,可以把多个布尔型数据打包在单一的字中,依然可以从位带别名区中像访问普通内存一样使用它们。位带别名区中的访问操作是原子的,消灭了传统的“读-改-写”3步。

3.片上外设区

片上外设区的大小是512 MB,芯片上所有与外围设备相关的寄存器都位于该区域。这个区中也有一个32 MB的位带别名区,以便于快捷地访问外设寄存器,其用法与片上SRAM区中的位带别名区相同,例如可以方便地访问各种控制位和状态位。要注意的是,片上外设区内不允许执行指令。通常,半导体厂商通过修改此区域的片上外设,来达到控制各具特色的、个性化的设备的目的。(https://www.daowen.com)

4.片外RAM区和片外外设区

片外RAM区和片外外设区的大小均为1 GB,分别用于连接片外RAM和外部设备,它们之中没有位带别名区。两者的区别在于,片外RAM区允许执行指令,而片外外设区则不允许。

5.内核私有区

内核私有区的大小为512 MB,其中包括芯片厂商定义的系统外设(系统级组件)、内部私有外设总线、外部私有外设总线,以及由芯片厂商定义的系统外设。

外部私有外设总线有以下两条。

AHB私有外设总线,只用于ARM Cortex-M3内部的AHB外设,它们是NVIC、FPB、DWT和ITM。

APB私有外设总线,既用于ARM Cortex-M3内部的APB设备,也用于外部设备(这里的“外部”是相对内核而言的)。ARM Cortex-M3允许器件制造商再添加一些片上APB外设到APB私有总线上,它们通过APB接口来访问。

NVIC所处的区域叫作系统控制空间(System Control Space,SCS),在SCS里的除NVIC外,还有SysTick、MPU,以及代码调试控制所用的寄存器。

最后,未用的芯片厂商定义的系统外设也通过系统总线来访问,但是不允许在其中执行指令。

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)