飞思卡尔 MC9S12 系列单片机地址影射以及分页问题对于用 MCU 的人来说,不一定要明白 HCS12(x) memory map 的机制和联系
因为假如没有系统地学习操作系统和编译原理之类的课程,确实有些难度
并且,对于 DG128 XS128 这样的 MCU,默认的emory 分配方式已经够用了
从这个意义上讲,搞清楚 memory map 似乎不必要
但是,你有没有 RAM 不够用的情况
有没有想定义变量到 FLASH ROM 的情况
有没有因为欲提高寻址效率而定义变量到非分页区的情况
有没有写 EEPROM 但没写成功的情况
飞思的 memory 非常灵活,通过地址映射来提高效率是芯片制造商的一惯作风(当然,首先这个 CPU要有这种寻址和内存映射转换机制),但是,纵观 HCS12(x) memory map 的东西,真是做到极限了
用我以前的话讲是,用有限的资源获得无限的好处了
看看 DG128,64K 的逻辑空间,映射之后 RAM EEPROM FALSH ROM,都可以充分发挥作用,而且扩展 FLASH 也方便
而 XS128 更高级一筹,有专门的 MMC 管理HCS12(x) memory map
我大体上了解这两个片子的 HCS12(x) memory map,因此就此谈谈理解和看法,如有错误,请大家不吝指出首先,说说 6 个概念
1memory map 地址映射,不要理解成内存映射,内存是 RAM
2 为什么要映射
因为 CPU 的寻址是对物理地址操作,但是单片机的 RESET 之后只有相对地址
相对地址,我理解为是一块一块的,不是连断的
相对地址,顾名思义,是个相对的,没有映射之前,CPU 是找不到他的,也用不了相对地址的数据
粘一句百度上的解释:为了保证 CPU 执行指令时可正确访问存储单元,需将用户程序中的逻辑地址转换为运行时由机器直接寻址的