ARM Cortex-M3 学习笔记(5)

最近在学ARM Cortex-M3,找了本号称很经典的书“An Definitive Guide to The ARM Cortex-M3”在看。这个系列学习笔记其实就是在学习这本书的过程中做的读书笔记。

第五章 存储器系统

地址空间分配

对比更早版本的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。

 



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值