与传统的ARM架构有所不同,自ARMv7以后的Cortex系列(这里只以Cortex-M为例),其内存映射结构发生了很大的变化。首先是ARMv7-M的内存映射是大致框架预定义好的了(即其内存映射已经固定好了,哪个地址范围用使用什么总线支持什么外设等都已经在框架里规定好了的,这样带来的一个好处是方便软件在不同的ARM芯片中的移植),其次就是ARMv7-M的存储器系统支持所谓的“位带”(Bitband),可以方便实现“位”的原子操纵(这个“位带”概念解释起来很麻烦,有兴趣的可以网上搜些资料学习一下,这里就不展开说了),还有就是支持非对齐访问、互斥访问和大小端配置(大小端这个真的很重要,初手们应该好好理解这个概念,今年找工作的笔试题几乎每个公司都问到了)。另外虽然其内存映射是已经预定义好的,但由于是粗制的框架形式,依然允许不同的半导体厂商灵活分配存储器空间,生产出不同特色的MCU,Kinetis就是其中之一,下面就以Cortex-M4的Kinetis为例说说其内存映射的安排,继续以图为例,细看图上文字说明:
|