2

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

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

它是否正确?

例如,我希望 ARM 处理器uint32_t通过 16 位数据总线从设备加载一个值,而不必进行 2 次uint16_t读取,然后将这些uint16_t值组合到一个uint32_t变量中。

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

哪些 ARM 文档包含此说明?

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

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

4

1 回答 1

0

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

这意味着对于 CPU 来说应该是完全透明的。

于 2016-05-13T06:05:14.687 回答