我真的是Cortex A的新入门者,我知道ARM应用了弱有序的内存模型,并且有三种互斥的内存类型:
我粗略地了解了Normal的用途以及强烈有序和设备的含义.然而强烈有序和设备之间的差异让我感到困惑.
根据Cortex-A系列程序员指南,唯一的区别是:
对强排序存储器的写入只有在到达写入访问的外设或存储器组件时才能完成.
允许写入器件存储器在到达写入访问的外设或存储器组件之前完成.
我不太确定这个的真正含义是什么.我猜测,使用强排序或设备键入的内存访问顺序应该与程序员的代码一致(没有无序访问).但是如果输入类型的设备,CPU在访问内存时可能会执行下一条指令,如果键入强排序,它将只是等待访问完成.
如果我错了,请纠正我,请告诉我这样做是什么意思.
提前致谢.
据我所知,ARM Cortex-M CPU始终处于Thumb状态,这意味着:
程序计数器指示的拇指状态为奇数(LSB = 1).分支到偶数地址将导致异常,因为不允许切换回ARM状态.
但是,当我使用CortexM0和M4 CPU时,PC始终是均匀的.每次分支时,LR记录PC + 1,每次返回时,PC都给出LR-1.
例如,如果lr = 0x0000_01D5,
执行
BX lr
然后PC应该是0x0000_01D5,而它给出0x0000_01D4.
这不可能吗?
任何评论将不胜感激.