6

据我了解,ARMv7 处理器(例如 Cortex-A9)大多向后兼容旧 ARM 架构版本的代码。但是,例如,我已经阅读了有关尝试在 Cortex-A8 上运行 ARM9 代码的段错误的报告。

ARMv4/5/6 (ARM7TDMI/ARM9/ARM11) 代码的哪些部分不能在 ARMv7 处理器上运行?这些旧 ARM 体系结构版本中存在哪些功能或体系结构特征会导致为这些版本构建的程序在 ARMv7 上失败?

4

2 回答 2

4

对于应用程序代码,主要问题是未对齐的内存访问。在 ARMv4 之前并在 ARMv4 到 ARMv6 上可配置,从未对齐地址加载 LDR 将导致读取数据被轮换,并且其他内存访问就像最低有效 2 位为零一样。

于 2013-10-27T15:08:48.513 回答
2

为 arm 指令编译 armv4 应该可以一直工作。

除了没有对该主题进行自己的研究(避免研究它而不是研究它)之外,您的问题的真正问题是您可能希望将大部分代码从一个平台移植到接下来与外围设备而不是指令集有关。您的大部分代码不会移植,不是因为指令集,而是因为定时器、UART、视频和 USB 控制器等。这些不是 wintel 盒子,它们不会尝试反向兼容。

您链接的问题确实没有任何意义,因为 OP 没有放下任何代码并没有在该主题上做任何工作,至少没有在 stackoverflow 上公开,这可能是一个简单的错误代码案例,与处理器无关核心,或者可能是外围设备不存在并访问它们的情况,人们会期望挂起或崩溃。

于 2013-10-26T22:02:31.743 回答