qemu-system-aarch64
可以用来模拟aarch64,具体命令如下:
qemu-system-aarch64 -M virt -cpu cortex-a53 ...(other options)
我们可以使用-M virt,dumpdtb=DTBFILE
来获取内部设备树blob。
我的问题是,我们如何获取虚拟机virt
的PERIPHBASE
?
我们可以使用 dtc
工具从设备树 blob 文件中执行此操作吗?
最佳答案
dtc 命令为:
dtc -I dtb -O dts virt.dtb > virt.dts
您要查找的节点应该是/intc
:
intc {
phandle = <0x8001>;
reg = <0x0 0x8000000 0x0 0x10000 0x0 0x8010000 0x0 0x10000>;
compatible = "arm,cortex-a15-gic";
ranges;
#size-cells = <0x2>;
#address-cells = <0x2>;
interrupt-controller;
#interrupt-cells = <0x3>;
v2m {
phandle = <0x8002>;
reg = <0x0 0x8020000 0x0 0x1000>;
msi-controller;
compatible = "arm,gic-v2m-frame";
};
};
更直接的选择是使用 fdtget:
fdtget -t i -t x virt.dtb /intc reg
0 8000000 0 10000 0 8010000 0 10000
我同意 Peter Maydell 的观点,即如果您在 QEMU 中运行 Linux,则最好在运行时使用 DTB 来检索 GIC CPU 和分配器接口(interface)的地址。
但以我的拙见,非 DTB 方法在模拟裸机环境中仍然更容易实现。
关于qemu - 如何获取qemu机器 "virt"的PERIPHBASE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48666046/