目录
1.概述
Cortex-M0处理器具有32位系统总线接口,以及32位地址线(4GB的地址空间)。系统总线基于AHB_Lite总线协议,外设总线一般采用APB协议。APB协议通过一个总线桥连接到AHB_Lite上,并且运行的时钟频率和AHB总线不同。APB的数据链路也是32位的,但由于外设的地址区域往往较小,因此地址线一般要少于32位。

由于主总线系统和外设总线是相互分离的,而且有些情况下时钟频率控制也是不同的,应用程序在访问外设前可能需要初始化微控制器的时钟控制硬件。有些情况下,一个微控制器可能有多个外设总线段,并且每个段运行在不同的时钟频率下。除了可以让系统的某些部分运行在较低频率下以外,独立的总线段还可以停止某些外设系统的时钟,这样也就可以降低功耗了。
2.存储器映射
Cortex-M0处理器的4GB存储器空间从架构上被分为多个区域,每个区域对应一种推荐的用途,而且各区域的操作方法也可能会有所不同。

尽管存储器映射已经被架构预先定义,存储器映射的实际用法却可以非常灵活,使用中的限制也不多。
每个区域的用途如下:
- 代码区域(0x00000000~0x1FFFFFFF)
代码区域的大小为512MB,主要用于存储代码,这其中也包括作为程序映像一部分的向量表,另外也可用作数据存储器(连接到RAM)。 - SRAM区域(0x20000000~0x3FFFFFFF)
SRAM区域位于存储器映射的第二个512MB,其主要用于数据存储,这其中也包括栈,还可以用于程序代码存储。 - 外设区域(0x40000000~0x5FFFFFFF)
外设区域的大小也为512MB,它主要用于外设以及数据存储。不过,外设区域中不允许执行程序。连接到该存储器区域的外设可以是AHB_Lite外设,也可以是APB外设(通过总线桥)。 - RAM区域(0x60000000~0x9FFFFFFF)
RAM区域包括两个512MB的块,这样就得到了一个总共1GB的区域。这两个512MB存储器块主要用于数据存储,而且多数情况下RAM区域可使用1GB的连续存储器空间。RAM区域中还可以执行程序代码,这两个区域的唯一差异在于它们的存储器属性不同。如果设计中存在一个系统级的缓存(level-2缓存),这个差异就会带来缓存行为的差异。 - 设备区域(0xA0000000~0xDFFFFFFF)
外部设备区域包括两个512MB的存储器块,这样就能总共得到1GB空间。两个512MB块主要用于外设和I/O,设备区域不允许程序执行,但可用作通用数据存储。同RAM区域类似,设备区域的两部分也有不同的存储器属性。 - 内部私有外设总线(PPB)(0xE0000000~0xE00FFFFF)
内部PPB存储器空间用于处理器内部的外设,包

本文详细介绍了Cortex-M0处理器的存储结构,包括4GB的地址空间划分,如代码区域、SRAM区域、外设区域、RAM区域和设备区域。存储器映射的灵活性使得不同区域可用于代码、数据和外设。此外,讨论了BootLoader的角色、存储器重映射功能以及数据存储器的使用,包括栈、堆和数据的管理。文章还涵盖了处理器对小端和大端数据的支持,数据对齐的要求,以及多寄存器指令的优化潜力。最后,强调了存储器属性的重要性,如可执行性、可缓冲性和可共享性,以及它们对系统性能和一致性的影响。
963

被折叠的 条评论
为什么被折叠?



