学习笔记——ARM Cortex-M0 存储器系统

来源:互联网 发布:校园网络应急预案 编辑:程序博客网 时间:2024/05/22 05:26

1. Cortex-M0 的两种总线协议:
1)AHB_Lite 系统总线协议:32位地址线,高速高性能访问(Flash, SRAM,总线桥,外部存储器接口)
2)APB 外设总线协议: 32位, 外设等较慢设备通讯(I/O,Timer, UART, Watch Dog。)
系统总线和外设总线是相互分离的,两种总线通过总线桥连接通讯,时钟频率控制不同,可能有多个外设总线段,并且每个段运行在不同的时钟频率下。有些高速外设是直接连接在AHB_Lite系统总线上的。

2. 存储器映射4GB地址空间)
Cortex-M0(+)处理器的4G存储空间从架构上被分为多个区域。总的被分成8个大部分,每个部分512M。

这里写图片描述
Cortex-M0处理器架构定义的存储器映射

 虽然映射已经被架构预先定义,但是实际分配却是很灵活的。 

这里写图片描述

存储器设计的一个例子:

这里写图片描述

3. 程序存储器(Flash),Bootloader和存储器重映射
1)程序存储器一般使用片上Flash,不过也可以使用外部或其他类型存储器设备(EEPROM)
2)Flash存储器一般是从地址0开始,当Reset 后,会首先访问0地址的向量表,取得MSP的初始值和复位向量。
3)Bootloader 是位于芯片上的一小段加载引导程序,与用户应用程序是分开的。
4)存储器重映射:系统总线的一种存储器映射切换特性。Bootloader执行时会设置硬件寄存器来控制重映射。常见的处理方式是通过地址别名被重映射到地址的开头。
5)Bootloader其他特性:硬件初始化(时钟,PLL设置),多种启动配置,固件保护,Flash擦除工具。
6)SRAM重映射到地址0,code可以被复制到SRAM并以最快速度执行,可以避免取向量的等待时间。

4. 数据存储器(SRAM)
1) Cortex-M0数据存储:数据(全局变量、静态变量、数据结构)、栈存储(临时数据、局部变量、函数调用参数传递和异常处理的寄存器备份)和堆存储(C函数自动分配存储区域:alloc()、malloc()).
2)没有OS,就之后使用一个栈(MSP),数据存储分配如下:
这里写图片描述
SRAM常见数据存储使用示例

5. 支持小端和大端
1)Cortex-M0支持大端和小端两种存储,都支持字节(8bit)、半字(16bit)和字(32bit)传输, 存储器会根据传输大小和地址的最低两位选择数据链路。
2)端模式:字节不变模式(BE8)和字不变模式(BE32), 字数据最低字节会保存在2431位;
3)端模式:字数据最低字节会保存在07位;
4) 多数情况下,连接到APB的外设应该用传输,因为APB协议没有定义传输宽度信号,都被默认为字大小,因此,通过APB访问的外设寄存器通常被声明为”volatile unsigned integer“。
5)Thumb指令只能产生对齐访问(字对齐,半字对齐,字节对齐),传输地址只能是传输大小的整数倍。
6) C程序直接操作一个指针或用汇编,可进行非对齐传输。

6. 存储器属性
存储器访问属性:可执行(Executable),可缓冲(Bufferable),可缓存(Cacheable),可共享(Shareable)。

0 0
原创粉丝点击