QEMU 加载器设备 - 在同一地址加载裸机二进制文件 space

QEMU loader device - load bare metal binary in same address space

作为参考,我在 aarch64 上 运行 裸机 QEMU-6.1.0 使用 Xilinx fork.

我正在使用 generic loader device 将单片裸机二进制文件加载到 qemu-system-aarch64 中,并正在为其编写一些外围驱动程序。问题是二进制文件加载到与加载自定义设备的地址不同的地址 space。

有什么方法可以指定地址 space,设备加载程序将把裸机二进制文件加载到该地址?

我用于加载二进制文件的方法可以在 运行 Zynq Ultrascale+ MPSoC r5 部分的裸机应用程序中找到 QEMU Xilinx docs.

我通过在 cpu_address_space_init 中使用导出的 address_space_memory 引用而不是默认分配的 AddressSpace 引用解决了这个问题。

void cpu_address_space_init(CPUState *cpu, int asidx,
                            const char *prefix, MemoryRegion *mr)
{

    AddressSpace *as = &address_space_memory;
    //...
}