jicheng0622

【原创】浅谈FSL Kinetis存储器映射

0
阅读(5109)

    好久没有写纯Kinetis的技术文章了,K60的板子放在旁边有段时间了,因为前一阵先是搞了两个月Xilinx的FPGA,而后又是接踵而至的找工作,真是分担了不少精力,呵呵。这次由于马上假期了,终于得闲了一会儿,所以Kinetis走着... ...

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

这里有个概念需要细说一下,即Write-Back和Write-through(这部分摘自ARM CM3 权威指南)。其中写回(即Write-Back)是指写入的数据先逗留在缓存中,待到必要的时候在落实到最终的目的地,即实现Cache的功能,利于改善数据传送的效率,减少主存储器的访问操作;而Write-through(即写通),指绕够cache,直接落实到目的存储器,写操作立即生效,常用于和片上外设或者其他处理器共享内存中,怎么样是不是想到了“volatile”这个关键字了,对了,他们两个就是对应的,即用Volatile声明的变量时放在写通区RAM里的,这回对上了吧,哈哈~

    呵呵,本篇既然是浅谈那就说这些了(咳咳,深谈我还真掌握不好,嘿嘿)。要想掌握一款片子,对其内存映射的深入了解是必然的,否则不要跟我说你已经掌握了一款单片机,那只能说明你会用而谈不上掌握,所以多花费些功夫是没错的,要记住大牛都是靠时间和经验磨出来的,荣耀的背后是不为人知的辛酸,呵呵。

    今儿就到这里了,双节就要到了,提前祝大家节日快乐,我也要收笔歇歇了,哈哈,未完待续~