ARM - 使用16位数据总线获取32位数据

时间:2016-05-13 01:10:06

标签: c arm fetch cortex-a8 databus

在我们的嵌入式平台上,一些设备具有16位数据总线(例如FPGA)。但是,我们需要将它们读取为32位值(例如32位浮点)。

我的理解是,当通过32位数据加载指令(LDR)访问16位存储器时,ARM处理器将执行2个16位读取以组装32位数量。

这是对的吗?

例如,我希望ARM处理器从具有16位数据总线的设备加载uint32_t值,而不必进行2 uint16_t次读取,然后合并uint16_t值到一个uint32_t变量。

我们是否需要显式获取2个16位数量,然后组装为32位数量?

哪些ARM文档包含此澄清?

ARM是否有任何特定的ARM配置设置可以从16位数据总线进行2次读取以形成32位数量(在寄存器中)?

仅供参考:我们使用的是ARM Cortex A8和IAR EW IDE /编译器 平台运行的是“系统”模式而不是“拇指”模式。

1 个答案:

答案 0 :(得分:0)

如果要访问内存,当CPU需要32位内存时,它将直接请求它(Cortex-A8不支持16位总线)。某些外设(在系统中)负责将32位请求转换为16位以适应总线(执行2次传输)。

这意味着CPU应该是完全透明的。