ARM - 使用 16 位数据总线获取 32 位数据
ARM - Fetching 32 bits of data using 16-bit data bus
在我们的嵌入式平台上,有些设备有16位的数据总线(比如FPGA)。但是,我们需要将它们读取为 32 位值(例如 32 位浮点数)。
我的理解是,当32位数据加载指令(LDR)访问16位内存时,ARM处理器将执行2次16位读取到assemble一个32位数量.
这是正确的吗?
例如,我希望 ARM 处理器从具有 16 位数据总线的设备加载一个 uint32_t
值,而不必进行 2 uint16_t
读取然后组合 uint16_t
值转换为一个 uint32_t
变量。
我们是否需要显式获取 2 个 16 位数量,然后 assemble 作为 32 位数量?
哪些 ARM 文档包含此说明?
是否有任何特定的 ARM 配置设置可以让 ARM 从 16 位数据总线进行 2 次获取以形成 32 位数量(在寄存器中)?
仅供参考:我们正在使用 ARM Cortex A8 和 IAR EW IDE/Compiler。
该平台是 运行 是 "system" 模式而不是 "thumb" 模式。
如果是访问内存,当CPU需要32位内存时,会直接请求(Cortex-A8不支持16位总线)。一些外设(在系统中)负责将32位请求转换为16位以适应总线(Doing 2 transfers)。
这意味着对于CPU应该是完全透明的。
在我们的嵌入式平台上,有些设备有16位的数据总线(比如FPGA)。但是,我们需要将它们读取为 32 位值(例如 32 位浮点数)。
我的理解是,当32位数据加载指令(LDR)访问16位内存时,ARM处理器将执行2次16位读取到assemble一个32位数量.
这是正确的吗?
例如,我希望 ARM 处理器从具有 16 位数据总线的设备加载一个 uint32_t
值,而不必进行 2 uint16_t
读取然后组合 uint16_t
值转换为一个 uint32_t
变量。
我们是否需要显式获取 2 个 16 位数量,然后 assemble 作为 32 位数量?
哪些 ARM 文档包含此说明?
是否有任何特定的 ARM 配置设置可以让 ARM 从 16 位数据总线进行 2 次获取以形成 32 位数量(在寄存器中)?
仅供参考:我们正在使用 ARM Cortex A8 和 IAR EW IDE/Compiler。
该平台是 运行 是 "system" 模式而不是 "thumb" 模式。
如果是访问内存,当CPU需要32位内存时,会直接请求(Cortex-A8不支持16位总线)。一些外设(在系统中)负责将32位请求转换为16位以适应总线(Doing 2 transfers)。
这意味着对于CPU应该是完全透明的。