armv7 的引导加载程序是不是适用于 armv8?
Posted
技术标签:
【中文标题】armv7 的引导加载程序是不是适用于 armv8?【英文标题】:Will bootloader for armv7 work for armv8?armv7 的引导加载程序是否适用于 armv8? 【发布时间】:2017-06-04 10:21:58 【问题描述】:我正在尝试使用 armv7 汇编指令集根据 armv7 架构编写引导加载程序? 例如:
在重置时将 cpu 设置为 svc 模式:
mrs r0, cpsr
bic r0, r0,#0x1f
orr r0, r0,#0xd3
msr cpsr, r0
mov pc, lr
相同的引导加载程序是否可以在 armv8 上运行。由于 armv8 也支持 aarch32 。 但另一方面它也有很多不同。
【问题讨论】:
它已经启动到 svc 模式了吧?如果已经存在,为什么要设置为 svc 模式。 ARMv7:“处理器在复位时进入超级用户模式。” 在最高实现异常级别使用 AArch32 的实现中,如果该异常级别是 EL3 或 EL1,则 PE 在重置时进入超级用户模式。 让您自己阅读其余部分,或者尽早在启动时读出 cpsr 并保存或查看... 谢谢..重置后它应该已经在 svc 中了。我已经从 uboot 中获取了这些行。不知道为什么需要它。 它在 hyp 和 aarch64 中是真的,我被卡住了。如果它不在 hyp 中并且执行状态是 aarch32 怎么办?我正在尝试用我的 beaglebone black 替换 uboot,它是 v8。跨度> 【参考方案1】:不一定有几个原因,首先,如果你处于炒作模式,你就不能那么容易地从那个状态中恢复过来。其次,如果您处于 aarch64 模式,那么这是一个不同的指令集。因此,这在一定程度上取决于这段代码在引导加载程序中的位置,这才是真正的引导加载程序,或者你是否有其他代码在此之前出现(这会让你处于这样的代码无法工作的状态)。
简短的回答,不,此代码不仅不适用于 armv8,也不适用于 armv7。
【讨论】:
以上是关于armv7 的引导加载程序是不是适用于 armv8?的主要内容,如果未能解决你的问题,请参考以下文章
如何在armv7中得到armv8中的64位Vn.8h,就像arm寄存器中的D寄存器一样?
Worklight 6.0.0.1 iOS 本机库仅适用于 ARMv7 而不适用于 ARMv7s 和 ARM64?
为啥 beaglebone black uboot 配置为 CONFIG_SYS_CPU="armv7"。 bbb啥时候是armv8?