gpt4 book ai didi

cross-platform - 如何使用 QEMU 模拟混合平台?

转载 作者:行者123 更新时间:2023-12-05 02:51:16 27 4
gpt4 key购买 nike

背景

有很多关于使用 QEMU 模拟特定架构系统(“平台”)的文档。
例如x86、ARM或RISCV系统。
第一步是配置 QEMU 目标列表,for example ./configure --target-list=riscv32-softmmu .
也可以在目标列表中提供多个目标,但显然这会为每个指定平台构建一个独立的模拟。

然而,我的目标是模拟一个具有混合目标的系统:一个 x86 机器,它还通过 PCI 托管一个 RISCV 嵌入式处理器。

显然我需要实现一个 QEMU PCI 设备,它将在 x86 平台上托管 RISCV 设备,并且我很清楚如何实现 generic PCI device .但是,我不确定在同一个 QEMU 模拟中同时模拟 x86 和 RISCV的最佳方法。

一种方法是运行两个 QEMU 实例(作为两个单独的进程)并使用某种 IPC 在 x86 和 RISCV 模拟之间进行通信。
另一种可能的(?)方法是将 RISCV QEMU 构建为可加载库并从 x86 QEMU 加载它。
也许甚至有可能拥有一个模拟 x86 和 RISCV 的单一 QEMU 应用程序?
另一种方法是不使用 QEMU 来模拟 RISCV 设备。我可以实现一个完全封装 RISCV 模拟的 QEMU PCI 设备,例如 tiny-emu ,但我宁愿将 QEMU 用于 x86 和 RISCV。

我的问题是:

  • 是否有针对混合目标 QEMU 项目的指南或示例?
    我搜索了示例,但只找到了将 QEMU 用作单一平台模拟的引用资料,您首先要选择要运行的平台。
  • 在 QEMU 中模拟混合平台的最佳方法是什么?使用 IPC 分离 QEMU 进程?或者有没有一种方法可以配置 QEMU 以模拟混合平台?

相关

https://lists.gnu.org/archive/html/qemu-devel/2021-12/msg01969.html

最佳答案

QEMU 不支持在同一个 QEMU 进程中运行多个目标架构。 (这是我们理论上希望能够做到的事情,但它需要对 QEMU 的核心部分进行大量修改,假设目标体系结构在编译时是已知的。到目前为止,没有人觉得它重要到足以将在所需的重大开发工作中。)

因此,如果你想这样做,你需要以某种方式将主要架构的 QEMU 进程与其他一些进程拼接在一起,以执行二级架构(QEMU 或其他)。这已经完成了(例如 Xilinx 有一个基于 QEMU 的树外系统,可以使用多个 QEMU 进程来完成这种事情)但我不知道有任何简单的现成框架或设置可以做到这一点.我怀疑弄清楚时间/时钟如何在两个模拟之间相互作用是棘手的方面之一。

关于cross-platform - 如何使用 QEMU 模拟混合平台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63229262/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com