新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > ARM Cortex-M3 学习笔记(5)

ARM Cortex-M3 学习笔记(5)

作者:时间:2016-11-20来源:网络收藏
最近在学ARM Cortex-M3,找了本号称很经典的书“An Definitive Guide to The ARM Cortex-M3”在看。这个系列学习笔记其实就是在学习这本书的过程中做的读书笔记。

本文引用地址:http://www.eepw.com.cn/article/201611/318830.htm

第五章 存储器系统

地址空间分配

对比更早版本的ARM内核,Cortex-M3的地址空间分配相对来说是固定的。尤其是内部的私有外设,地址分配是固定不变的。这为软件移植提供很大的方便。

图 1 Cortex-M3 地址空间分配

片内SRAM地址空间和片内外设地址空间中各有1MB是所谓的位带区。这个区数据可以按位访问。外部SRAM和外部外设地址空间中没有位带区。

RAM地址空间与外设地址空间最大的区别是RAM地址空间中的存储的数据是可以作为程序代码运行的,而外设地址空间中的数据却不能运行。当然,程序最好还是放到片内的代码区,因为对这个区域的访问有专用的总线,因此读取程序代码与读取RAM区的数据可以同时进行,效率最高。

Bit-Band 操作

在0x20000000和0x40000000 地址处开始的1MB空间被称为bit-band region。这个区域内的数据的每一位都被映射了到了一个32位宽的word的最低一位,被映射到的地址空间称为bit-band alias address range。比如说,0x20000000对应字节第0位映射到了0x22000000的第0位。0x20000000的第1位映射到了0x22000004的第0位,其他的以此类推。这样,读取0x22000004 就相当于读取0x20000000的第1位。写0x22000004的第0位就相当于写0x20000000的第1位。对bit-band aliasaddress range 中数据的读写都是原子操作。

特别要注意的是:bit-band alias address range 中的数据支持字节和半字访问,但是数据的访问不能跨越4字节边界,否则结果不确定。

Endian Mode

Cortex-M3内核本身对大端和小端都支持,但是对于具体的一款基于Cortex-M3内核的单片机来说就不一定两种模式都支持了。常见的Cortex-M3内核的单片机基本都是小端模式的。

Cortex-M3内核中对大端模式的定义和ARM7中还有些不同,具体怎么个不同我还没搞明白,等明白了再补上。

另外,具体使用哪种Endian Mode 是在reset时确定的,Cortex-M3不支持运行中动态切换Endian Mode。



关键词: ARMCortex-M

评论


相关推荐

技术专区

关闭