Cortex-M0存储器系统

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

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存储器空间用于处理器内部的外设,包
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值