在我们的嵌入式平台上,一些设备有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/编译器
平台运行的是"系统"模式,而不是"拇指"模式。
如果您正在访问内存,当CPU需要32位内存时,它会直接请求(Cortex-A8不支持16位总线)。一些外围设备(在系统中)负责将32位请求转换为16位以适应总线(进行2次传输)。
这意味着CPU应该是完全透明的。