最近在学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。