新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 在 Zynq MPSoC 上運(yùn)行 DOOM 游戲

在 Zynq MPSoC 上運(yùn)行 DOOM 游戲

作者: 時(shí)間:2016-08-03 來源:電子產(chǎn)品世界 收藏

  步驟 3:開始演示

本文引用地址:http://2s4d.com/article/201608/294978.htm

  現(xiàn)在,我們可以打開虛擬網(wǎng)絡(luò)計(jì)算 (VNC) 查看器,并在運(yùn)行 QEMU 的機(jī)器上連接 localhost:5900 以觀看 Doom 游戲。(注意:以上命令行只能重定向 5900 端口,因此當(dāng)開始演示時(shí)只能連接到第一個(gè) Doom 實(shí)例。如果想連接多個(gè)實(shí)例,需要為 QEMU 添加更多 hostfwd 變量,并連接到下個(gè)可用的端口[5901 用于下個(gè)實(shí)例,5902 用于第三個(gè)實(shí)例,以此類推],然后將這些實(shí)例連接。)

  一旦 Doom 啟動(dòng),你就可以使用鍵盤和鼠標(biāo)控制游戲。應(yīng)記住,可能需要點(diǎn)擊 ESC 鍵來開始游戲。還應(yīng)記住,你已經(jīng)很長(zhǎng)時(shí)間沒玩 Doom 游戲了,因此你可能走不了多遠(yuǎn)。 別氣餒。使用自己構(gòu)建的系統(tǒng)絕對(duì)“可行”。

  XEN 深入探討

  正如“ 獲得 Xen 管理程序支持”(賽靈思中國(guó)通訊,第 93 期)中所介紹, Type 1 管理程序在本機(jī)硬件上運(yùn)行,Type 2 管理程序不是軟件的最底層,而是托管在 OS 上。Xen 屬于 Type 1 管理程序(圖 4)。

  

 

  圖 4:作為 Type 1 管理程序,Xen 在本機(jī)硬件上運(yùn)行,虛擬機(jī)在 Xen 之上運(yùn)行 (來源:“帶虛擬化擴(kuò)展的 Xen ARM” 白皮書)。

  以前,我們提到了虛擬處理器(也稱虛擬機(jī))。在 Xen 中,這些被稱為域。特權(quán)最高的域被稱為 Dom0;無特權(quán)的客戶域是 DomU 域。

  Dom0 是 Xen 管理程序在引導(dǎo)時(shí)創(chuàng)建的初始域。它是特權(quán)域,并驅(qū)動(dòng)平臺(tái)上的設(shè)備。Xen 將 CPU、存儲(chǔ)器、中斷和定時(shí)器虛擬化,為虛擬機(jī)提供一個(gè)或多個(gè)虛擬 CPU、系統(tǒng)存儲(chǔ)器的一部分、一個(gè)虛擬中斷控制器和一個(gè)虛擬定時(shí)器。除非配置為其他方式,否則 Dom0 可直接訪問所有設(shè)備并驅(qū)動(dòng)它們。Dom0 還運(yùn)行一組名為半虛擬化 (PV) 后端的驅(qū)動(dòng),為無特權(quán)虛擬機(jī)提供對(duì)磁盤、網(wǎng)絡(luò)等設(shè)備的訪問權(quán)。Xen 提供用于發(fā)現(xiàn)和初始通信設(shè)置的所有工具。作為 DomU 的 OS 通過運(yùn)行相應(yīng)的 PV 前端驅(qū)動(dòng)程序來獲得對(duì)一組通用虛擬設(shè)備的訪問權(quán)。根據(jù) DomU 的數(shù)量,單個(gè)后端可服務(wù)多個(gè)前端。有一對(duì)適用于所有最常見設(shè)備類型(磁盤、網(wǎng)絡(luò)、控制臺(tái)、幀緩沖器、鼠標(biāo)、鍵盤等)的 PV 驅(qū)動(dòng)程序。PV 驅(qū)動(dòng)程序通常位于 OS 內(nèi)核(即 Linux)中。幾個(gè) PV 后端也可以在用戶空間中運(yùn)行,通常在 QEMU 中。前端在存儲(chǔ)器的共享頁(yè)上使用簡(jiǎn)單的環(huán)協(xié)議連接后端。從 Dom0 與管理程序交互要求程序使用定義的管理程序調(diào)用(類似于系統(tǒng)調(diào)用)。Xen 提供一個(gè)名為 Xen Tools (也可寫成 xen-tools)的、帶有庫(kù)的參考工具箱。xen-tools 包含一個(gè)名為 xl 的程序,該程序可與其他程序一起檢查狀態(tài)和創(chuàng)建客戶機(jī)。

  利用設(shè)備半虛擬化,可在管理程序與客戶機(jī)之間就如何進(jìn)行通信達(dá)成協(xié)議。常見的通信協(xié)議為 Xen Bus 和 VirtIO。

  xl 中的“create”命令要用到描述客戶機(jī)的配置文件,如果配置文件規(guī)定客戶機(jī)需要一個(gè)由 VNC 會(huì)話支持的虛擬幀緩沖器 (VFB),那么 xl 會(huì)在 Dom0 用戶空間中自動(dòng)啟動(dòng)虛擬化代碼(本演示中,為每個(gè)客戶機(jī)啟動(dòng)一個(gè))。

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

  # 客戶機(jī)名稱

  name = "guest1"

  # 要引導(dǎo)的內(nèi)核鏡像

  kernel = "/boot/Image"

  # 內(nèi)核命令行選項(xiàng)

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

  # 最初存儲(chǔ)器分配 (MB)

  memory = 56

  # VCPUS 數(shù)量

  vcpus = 1

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

  XEN 中的設(shè)備

  為客戶機(jī)提供設(shè)備有三種常用方法:仿真、半虛擬化和直通 (圖 5)。對(duì)于設(shè)備仿真,當(dāng)客戶機(jī)向仿真設(shè)備的存儲(chǔ)器寫入時(shí),寫入操作會(huì)觸發(fā)陷阱。陷阱通常就是頁(yè)面錯(cuò)誤。陷阱使處理器能夠切換到管理程序,以仿真設(shè)備。仿真是靈活的,但速度慢,因?yàn)橐幚硭邢葳?,而且要有人為所有需要仿真的設(shè)備編寫模型。而且,很難找到方法來加速仿真,因?yàn)閹缀鯖]有硬件加速;完全是軟件方法。

  

 

  圖 5:方案、半虛擬化和直通方案的對(duì)比

  利用設(shè)備半虛擬化,可在管理程序與客戶機(jī)之間就如何進(jìn)行通信達(dá)成協(xié)議。通常有一個(gè)共享的存儲(chǔ)器區(qū)域(以及協(xié)議),這看起來像一個(gè)設(shè)備,而且管理程序在該區(qū)域處理請(qǐng)求。例如,為了在 Linux 上支持半虛擬化幀緩沖器,Linux 前端驅(qū)動(dòng)會(huì)把從用戶空間獲得的幀緩沖器寫入共享存儲(chǔ)器區(qū)域;然后使用管理程序調(diào)用向管理程序發(fā)信號(hào),以通過后端驅(qū)動(dòng)來輸出幀。客戶機(jī)只能通過半虛擬化驅(qū)動(dòng)程序與主機(jī) (Dom0)和其他客戶機(jī) (DomU) 對(duì)話。這種方案的優(yōu)勢(shì)是:用戶可以在很多客戶機(jī)之間共享設(shè)備;運(yùn)行快速;客戶機(jī)可以運(yùn)行大部分都沒修改的內(nèi)核。要求的變動(dòng)在標(biāo)準(zhǔn)接口下面,因此對(duì)于應(yīng)用程序以及內(nèi)核其余部分來說,前端驅(qū)動(dòng)程序看起來就像正常的網(wǎng)絡(luò)接口、磁盤或其他設(shè)備。支持客戶機(jī)通信的兩個(gè)常用協(xié)議是 Xen Bus 和 VirtIO。

  在直通模式下,主機(jī)將設(shè)備“交給”一個(gè)客戶機(jī)。這意味著每次只有一個(gè)客戶機(jī)可以使用該設(shè)備。



關(guān)鍵詞: Zynq MPSoC

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉