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