新闻中心

EEPW首页>嵌入式系统>设计应用> 在 Zynq MPSoC 上运行 DOOM 游戏

在 Zynq MPSoC 上运行 DOOM 游戏

作者: 时间:2016-08-03 来源:电子产品世界 收藏

  步骤 3:开始演示

本文引用地址://m.amcfsurvey.com/article/201608/294978.htm

  现在,我们可以打开虚拟网络计算 (VNC) 查看器,并在运行 QEMU 的机器上连接 localhost:5900 以观看 Doom 游戏。(注意:以上命令行只能重定向 5900 端口,因此当开始演示时只能连接到第一个 Doom 实例。如果想连接多个实例,需要为 QEMU 添加更多 hostfwd 变量,并连接到下个可用的端口[5901 用于下个实例,5902 用于第三个实例,以此类推],然后将这些实例连接。)

  一旦 Doom 启动,你就可以使用键盘和鼠标控制游戏。应记住,可能需要点击 ESC 键来开始游戏。还应记住,你已经很长时间没玩 Doom 游戏了,因此你可能走不了多远。 别气馁。使用自己构建的系统绝对“可行”。

  XEN 深入探讨

  正如“获得 Xen 管理程序支持”(赛灵思中国通讯,第 93 期)中所介绍, Type 1 管理程序在本机硬件上运行,Type 2 管理程序不是软件的最底层,而是托管在 OS 上。Xen 属于 Type 1 管理程序(图 4)。

  图 4:作为 Type 1 管理程序,Xen 在本机硬件上运行,虚拟机在 Xen 之上运行 (来源:“带虚拟化扩展的 Xen ARM” 白皮书)。

  以前,我们提到了虚拟处理器(也称虚拟机)。在 Xen 中,这些被称为域。特权最高的域被称为 Dom0;无特权的客户域是 DomU 域。

  Dom0 是 Xen 管理程序在引导时创建的初始域。它是特权域,并驱动平台上的设备。Xen 将 CPU、存储器、中断和定时器虚拟化,为虚拟机提供一个或多个虚拟 CPU、系统存储器的一部分、一个虚拟中断控制器和一个虚拟定时器。除非配置为其他方式,否则 Dom0 可直接访问所有设备并驱动它们。Dom0 还运行一组名为半虚拟化 (PV) 后端的驱动,为无特权虚拟机提供对磁盘、网络等设备的访问权。Xen 提供用于发现和初始通信设置的所有工具。作为 DomU 的 OS 通过运行相应的 PV 前端驱动程序来获得对一组通用虚拟设备的访问权。根据 DomU 的数量,单个后端可服务多个前端。有一对适用于所有最常见设备类型(磁盘、网络、控制台、帧缓冲器、鼠标、键盘等)的 PV 驱动程序。PV 驱动程序通常位于 OS 内核(即 Linux)中。几个 PV 后端也可以在用户空间中运行,通常在 QEMU 中。前端在存储器的共享页上使用简单的环协议连接后端。从 Dom0 与管理程序交互要求程序使用定义的管理程序调用(类似于系统调用)。Xen 提供一个名为 Xen Tools (也可写成 xen-tools)的、带有库的参考工具箱。xen-tools 包含一个名为 xl 的程序,该程序可与其他程序一起检查状态和创建客户机。

  利用设备半虚拟化,可在管理程序与客户机之间就如何进行通信达成协议。常见的通信协议为 Xen Bus 和 VirtIO。

  xl 中的“create”命令要用到描述客户机的配置文件,如果配置文件规定客户机需要一个由 VNC 会话支持的虚拟帧缓冲器 (VFB),那么 xl 会在 Dom0 用户空间中自动启动虚拟化代码(本演示中,为每个客户机启动一个)。

  doom VM 的配置文件如下所示:

  # 客户机名称

  name = "guest1"

  # 要引导的内核镜像

  kernel = "/boot/Image"

  # 内核命令行选项

  extra = "console=hvc0 rdinit=/doom.sh"

  # 最初存储器分配 (MB)

  memory = 56

  # VCPUS 数量

  vcpus = 1

  vfb = ['type=vnc, vnclisten=0.0.0.0']

  XEN 中的设备

  为客户机提供设备有三种常用方法:仿真、半虚拟化和直通 (图 5)。对于设备仿真,当客户机向仿真设备的存储器写入时,写入操作会触发陷阱。陷阱通常就是页面错误。陷阱使处理器能够切换到管理程序,以仿真设备。仿真是灵活的,但速度慢,因为要处理所有陷阱,而且要有人为所有需要仿真的设备编写模型。而且,很难找到方法来加速仿真,因为几乎没有硬件加速;完全是软件方法。

  图 5:方案、半虚拟化和直通方案的对比

  利用设备半虚拟化,可在管理程序与客户机之间就如何进行通信达成协议。通常有一个共享的存储器区域(以及协议),这看起来像一个设备,而且管理程序在该区域处理请求。例如,为了在 Linux 上支持半虚拟化帧缓冲器,Linux 前端驱动会把从用户空间获得的帧缓冲器写入共享存储器区域;然后使用管理程序调用向管理程序发信号,以通过后端驱动来输出帧。客户机只能通过半虚拟化驱动程序与主机 (Dom0)和其他客户机 (DomU) 对话。这种方案的优势是:用户可以在很多客户机之间共享设备;运行快速;客户机可以运行大部分都没修改的内核。要求的变动在标准接口下面,因此对于应用程序以及内核其余部分来说,前端驱动程序看起来就像正常的网络接口、磁盘或其他设备。支持客户机通信的两个常用协议是 Xen Bus 和 VirtIO。

  在直通模式下,主机将设备“交给”一个客户机。这意味着每次只有一个客户机可以使用该设备。



关键词:ZynqMPSoC

评论


相关推荐

技术专区

关闭