小编Cod*_*mer的帖子

[ARM CortexA]强排序和设备内存类型之间的区别

我真的是Cortex A的新入门者,我知道ARM应用了弱有序的内存模型,并且有三种互斥的内存类型:

  • 强有序
  • 设备
  • 正常

我粗略地了解了Normal的用途以及强烈有序和设备的含义.然而强烈有序和设备之间的差异让我感到困惑.

根据Cortex-A系列程序员指南,唯一的区别是:

对强排序存储器的写入只有在到达写入访问的外设或存储器组件时才能完成.

允许写入器件存储器在到达写入访问的外设或存储器组件之前完成.

我不太确定这个的真正含义是什么.我猜测,使用强排序或设备键入的内存访问顺序应该与程序员的代码一致(没有无序访问).但是如果输入类型的设备,CPU在访问内存时可能会执行下一条指令,如果键入强排序,它将只是等待访问完成.

如果我错了,请纠正我,请告诉我这样做是什么意思.

提前致谢.

memory assembly arm cortex-a8

9
推荐指数
1
解决办法
6219
查看次数

ARM Cortex M0/M3/M4:为什么PC在Thumb状态下总是偶数

据我所知,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.

这不可能吗?

任何评论将不胜感激.

assembly arm thumb cortex-m

4
推荐指数
1
解决办法
2928
查看次数

标签 统计

arm ×2

assembly ×2

cortex-a8 ×1

cortex-m ×1

memory ×1

thumb ×1