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

2023-12-29

背景

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

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

显然我需要实现一个 QEMU PCI 设备,它将在 x86 平台上托管 RISCV 设备,并且 我有一个好主意如何实施通用 PCI 设备 https://github.com/qemu/qemu/blob/master/hw/misc/edu.c。 但是,我不确定最好的方法在同一个 QEMU 仿真中同时仿真 x86 和 RISCV.

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

我的问题是:

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

Related

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


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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 QEMU 模拟混合平台? 的相关文章

  • Visual Studio 2015,android 命令“run-as”失败

    环境 Windows 10 家庭 专业版 Visual Studio 2015 社区 专业 所有组合 启动Visual Studio 2015 update 1 新建项目Native Activity Application Android
  • 远程编程

    我在 Windows 机器上进行开发工作 但在远程 Linux 机器上进行编译 我目前所做的是在 Windows 上启动 X 服务器 通过 ssh 进入 Linux 机器 然后进行远程开发 我想做的是在 Windows 计算机上编辑源代码
  • 正则表达式匹配跨平台换行符

    我的程序可以接受具有换行符 n r n 或 r 的数据 例如 Unix PC 或 Mac 样式 构造匹配任何编码的正则表达式的最佳方法是什么 或者 我可以在输入上使用 universal newline 支持 但现在我有兴趣看看正则表达式是
  • JavaScript 窗口对象元素属性

    一位同事向我展示了以下代码并问我为什么它有效 span Do you like my hat span 我解释过 当浏览器解析文档时 会使用元素 id 的名称将一个属性附加到 window 对象 然后该文档包含对相应 dom 节点的引用 有
  • 如何在两个设备(android,iphone)之间传输“数据”?

    如何在两个设备之间传输数据 我想在不同平台 android iphone 之间传输数据 主要是图像文件 是否可以使用 p2p 或者我应该使用客户端服务器 任何帮助将不胜感激 你看过吗高通的 AllJoyn 库 https developer
  • 如何统计QEMU从运行开始到结束执行的客户指令数量?

    我想对 QEMU 每秒的客户指令进行基准测试 以将其与其他模拟器进行比较 如何获取访客指令数 我对用户模式和完整系统模式都感兴趣 我现在唯一的解决方案是使用简单的跟踪记录所有指令exec tb or d in asm 如何使用 QEMU 的
  • 有没有办法在 Objective-C 中使用 Swift 结构而不将它们作为类?

    我有几个简单的structs在 swift 文件中用 swift 编写 这些structs非常简单 几乎只包含字符串 struct Letter struct A static let aSome String descASome stat
  • 如何创建具有自定义外设和内存映射的 QEMU ARM 机器?

    我正在为 Cortex M3 cpu 编写代码 并且正在使用以下命令执行单元测试qemu arm二进制 现在一切都很好 但我想知道我是否能够使用测试整个系统qemu system arm 我的意思是 我想为 qemu 编写自定义 机器 我将
  • Silverlight 和 C++ 或 C++ 到 C# 正在进行代码转换吗?

    我正在开发一款基于绘图的产品 我希望按照优先级顺序为 iPhone 桌面 OS X Windows 平板电脑 基于 Silveright 的浏览器 Windows Mobile 和 Windows 生成版本 对于 GUI 可移植性 经典的答
  • 对齐 QMenuBar 项目(在左侧添加一些,在右侧添加一些)

    目前我有带有三个 QAction 的 QMenuBar 它看起来像这样 但我想得到这个 让一些 QActions 右对齐 有没有办法做到这一点 对于这个特定问题 最简单的解决方案可能是使用角部件 它可以用来将几乎所有东西放在最右边的位置 当
  • 跨平台 Windows / OS X 开发,具有大量现有代码库

    对于使用 MFC 和 WinAPI 用 C 编写的复杂应用程序 有大量现有代码库 需要将其移植到 Mac OS X 理想的解决方案是在不同平台之间拥有尽可能多的通用代码 尤其是诸如业务之类的代码逻辑 GUI 可能会有所不同 具体取决于跨平台
  • AXML 和 XAML 之间的区别?

    我是 Visual Studio Xamarin 跨平台移动开发的新手 我一直在搜索 AXML 但我找不到任何设计和应用 MVC 方法的教程 实际上我对此有很多疑问 但我先把这 3 留在这里 他们有什么区别 xaml设计可以应用在axml中
  • 如何在 Visual Studio Community 2015 中更新 Xamarin for Android

    我最近安装了 Visual Studio Community 2015 并且一直在关注 MSDN 教程 当设计应用程序的外观时 我选择了 Resources layout 文件夹中的 Main axml 文件 Android 设计器失败并显
  • 有没有C语言的跨平台GUI库? [复制]

    这个问题在这里已经有答案了 可能的重复 GUI 应用程序的跨平台 C 库 https stackoverflow com questions 2018850 cross platform c library for gui apps 有没有
  • 使用 Xamarin.Forms 和 .net Standard 进行 Firebase 电子邮件/密码身份验证 (VS2017)

    Firebase 电子邮件 密码身份验证是否可以使用通用代码 net 标准的 Android 和 IOS 通用代码进行开发 我已经设计了具有 XAML 格式的简单登录页面 但我没有找到任何与 Firebase 身份验证与 Xamarin F
  • 打包用来部署跨平台?

    在 Windows 上 应用程序通常打包为 MSI 在 Redhat Linux 上打包为 RPM 可用于将应用程序部署到所有平台 包括不同风格的 UNIX 和 Windows 的最佳开源打包方法是什么 内容包括 exe unix 二进制文
  • 在 python 中计时时,我应该如何考虑 subprocess.Popen() 开销?

    编码社区的成员比我更聪明 我有一个 python 问题要问你们 我正在尝试优化一个 python 脚本 该脚本 除其他外 返回子进程执行和终止的挂钟时间 我想我已经接近这样的事情了 startTime time time process s
  • Perl 命令或模块,如 Linux“文件”命令

    我有一个下载文件的脚本 但这些文件在下载之前没有任何有关它们的信息 在为 Linux 编写代码时 我刚刚调用了qx file filename 查看它是否是 JPEG 图像 如果不是则将其删除 然而 我现在正尝试重写为独立于平台的纯 Per
  • Qt程序部署到多平台,如何?

    我是 Qt 编程新手 我想开发一个程序 我想在 Windows Linux ubuntu 和 Mac 上运行 听说Qt支持多平台应用程序开发 但我的问题是 在我部署或编译后 任何 Qt 库都需要在 Ubuntu 中运行这个应用程序吗 如果您
  • qemu 访客自动化

    我找不到任何文档说明存在可用于在 qemu guest 内部实现自动化操作的 API 例如 我想从主机启动来宾计算机内部的进程 Libvirt 似乎不包含此类功能 注意 无需使用任何虚拟化 API 即可实现自动化 从我的博客文章 http

随机推荐

  • stanford-corenlp 中的默认线程数是多少

    stanford corenlp 中的默认线程数是多少 具体来说 是命名实体提取器 然后是信息提取器 另外 我希望两者都使用单个线程进行调试 我该如何设置 Thanks 默认为 1 个线程 有两种方法可以在多线程模式下运行斯坦福 CoreN
  • 通过蓝牙打印机Android打印图像

    你好 我是开发 Android 应用程序的新手 我需要创建一个应用程序 平板电脑 三星 10 1 Android 版本 3 1 通过蓝牙打印机 佳能 CP800 SELPHY 打印图像 我已经尝试过 IPrint 但没有成功 是否可以通过
  • NodeJS jenkins 插件坏了?

    我刚刚在 Jenkins 1 526 上安装了 NodeJS 插件 https wiki jenkins ci org display JENKINS NodeJS Plugin https wiki jenkins ci org disp
  • Ember.js:如何分析vendor.js中的错误

    我已在 stage 环境中部署了 ember cli 应用程序 以便让队友测试该应用程序 在我已经实现的应用程序中Ember onerror通过电子邮件向我发送阶段和生产环境中发生的错误 Ember onerror function dat
  • 如何在Python中解析重构文本?

    是否有任何模块可以将重构文本解析为树模型 docutils 或 sphinx 可以做到这一点吗 我想扩展加雷斯 拉蒂 Gareth Latty 的回答 你可能想要的是解析器docutils parsers rst 是答案的一个很好的起点 但
  • 指定父/子关系的级联删除?

    Model public class MenuItem public Guid Id get set public virtual Guid ParentMenuItemId get set public virtual MenuItem
  • 尝试在 PyQt QLabel 上绘制矩形时图像未显示

    尝试绘制矩形时图像不显示QLabel图像 我希望能够在照片上绘制一个矩形 并能够保留该矩形 隐藏它 这是我在检查建议后尝试的方法 如何在PyQt5中通过拖放绘制矩形并调整其形状 https stackoverflow com questio
  • 如何将一些图像添加到资源中并可以在表单中使用? [复制]

    这个问题在这里已经有答案了 我正在使用c vs2010 对于我的 Windows 窗体项目 我有一些 PNG Gif Jpg 图像 我想在我的程序中使用 为此 一旦我添加到我的资源中 是否可以从资源中访问 因为发布后 我不喜欢每次都复制到我
  • 由于 Azure 广告 OpenIdConnectAuthentication 中的访问令牌,会话将在 1 小时后过期

    在我们的应用程序中 我们使用 Azure Ad OpenIdConnectAuthentication 进行登录 该登录将重定向到 https login microsoftonline com https login microsofto
  • 纯虚方法采用各种迭代器?

    让多态基类拥有纯虚方法insert在 stl 容器成员上 在本例中为向量 该函数应该能够采用集合 向量 列表等容器的迭代器 但也要考虑引用的类型 移动语义 函数的纯虚拟性质使得使用模板函数变得不可能 据我所知 stl 容器的迭代器是单独的类
  • 将原始数据类型转换为字符串的更好方法是什么

    我可以使用将整数转换为字符串 String s 4 correct but poor style or String u Integer toString 4 this is good 我可以使用将双精度数转换为字符串 String s 4
  • MultiAutoCompleteTextView 中的重复值问题

    我是 Android 开发新手 我在我的应用程序中使用 MultiAutoCompleteTextView 以下是代码 public TextView autoSelected String countries India USA Cana
  • HTML 文档头部的外部脚本是否保证在正文中包含的脚本之前执行?

    我试图在页面处理中尽早在 HTML 页面中执行一些内联 javascript 从而利用外部 js 文件中的库函数 虽然我一直认为将库脚本放在头部 将客户端脚本放在正文中似乎可行 但我在任何地方都找不到文档说明文档头部中包含的外部脚本保证在脚
  • 带有排除字符的正则表达式和另一个正则表达式

    如何编写正则表达式来查找不包含某些字符 例如 or 和句子也 如level10 or level2 它也应该是正则表达式 level 0 9 排除字符会很简单 s 但是如何排除这个 level 例子也 我想排除字符和数字级别 Example
  • 如何删除向量中的 std::function

    我正在尝试在 C 中为我的游戏引擎创建 C 事件 我现在正在实现事件系统 但我不知道如何删除向量中的 std function 我使用的列表正确吗 我对 C 还很陌生 但我已经是 C 程序员 10 年了 这在 C 中可能吗 include
  • 在 Electron 渲染器进程中创建子窗口时如何修复 BrowserWindow is not a constructor 错误

    我正在使用电子构建一个包含两个窗口的应用程序 我正在尝试从渲染器进程内部打开第二个窗口 执行以下操作 const electron require electron const BrowserWindow electron BrowserW
  • Clickfunnel中表单提交后如何传递参数?

    我正在尝试跟踪来自不同流量来源的销售情况 我有多个流量来源向我的 Clickfunnel 登陆页面发送点击 我已将 utm term 参数附加到来自不同流量源的链接 因此 utm term 参数现在位于登陆页面 我的渠道的第一页 上 但在我
  • 如何高效计算帕斯卡三角形中的一行?

    我有兴趣找到帕斯卡三角形的第 n 行 不是特定元素 而是整行本身 最有效的方法是什么 我考虑了通过对上面一行中的相应元素求和来构造三角形的传统方法 这将需要 1 2 n O n 2 另一种方法是使用特定元素的组合公式 c n k n k n
  • 根据屏幕分辨率控制调整大小

    我有面板控制 更多控件位于面板中 我将面板的停靠属性设置为 填充 面板根据屏幕分辨率调整大小 但控件保持不变 面板中的控件不会根据屏幕解决方案调整大小 我在同一页面中有更多标签 面板 文本框和按钮 如何设置停靠属性以根据屏幕分辨率调整页面中
  • 如何使用 QEMU 模拟混合平台?

    背景 有很多关于使用 QEMU 模拟特定架构系统 平台 的文档 例如 x86 ARM 或 RISCV 系统 第一步是配置 QEMU target list 例如 configure target list riscv32 softmmu h