qemu-system-aarch64 在模拟 a53 启动时进入 el1
qemu-system-aarch64 entering el1 when emulating a53 power up
我已经下载了最新的 qemu Windows 版本,然后 运行 下面的行
qemu-system-aarch64 -M virt,gic_version=3 -cpu cortex-a53 -smp 2 -nographic
-m 2048 -kernel mybaremetal.axf -s -S
为了模拟双核cortex-a53,我可以使用aarch64 gdb客户端连接到它,在mybaremetal.axf的入口处,我检查了执行的异常级别:
mrs x1, CurrentEL
我总是在 x1 中得到值 4,但是在 ARM 文档中期望值 0xc,它说:在加电和复位时,处理器进入 EL3
有人知道原因吗?
QEMU 的 Cortex-A53 仿真默认只用 EL1 仿真 CPU,而不是 EL2 或 EL3,因此(根据架构要求)我们在 EL1 中启动。如果你想要一个带有 EL2 或 EL3 的 CPU,你需要在命令行上专门启用它,使用 -machine virtualization=on 来启用 EL2,使用 -machine secure=on 来启用 EL3。请注意,EL2 支持是最新的,目前您需要从上游 git master 构建才能获得它(它将在即将发布的 QEMU 2.9.0 版本中)。
我已经下载了最新的 qemu Windows 版本,然后 运行 下面的行
qemu-system-aarch64 -M virt,gic_version=3 -cpu cortex-a53 -smp 2 -nographic
-m 2048 -kernel mybaremetal.axf -s -S
为了模拟双核cortex-a53,我可以使用aarch64 gdb客户端连接到它,在mybaremetal.axf的入口处,我检查了执行的异常级别:
mrs x1, CurrentEL
我总是在 x1 中得到值 4,但是在 ARM 文档中期望值 0xc,它说:在加电和复位时,处理器进入 EL3
有人知道原因吗?
QEMU 的 Cortex-A53 仿真默认只用 EL1 仿真 CPU,而不是 EL2 或 EL3,因此(根据架构要求)我们在 EL1 中启动。如果你想要一个带有 EL2 或 EL3 的 CPU,你需要在命令行上专门启用它,使用 -machine virtualization=on 来启用 EL2,使用 -machine secure=on 来启用 EL3。请注意,EL2 支持是最新的,目前您需要从上游 git master 构建才能获得它(它将在即将发布的 QEMU 2.9.0 版本中)。