<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 在 Zynq MPSoC 上運行 DOOM 游戲

在 Zynq MPSoC 上運行 DOOM 游戲

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

  最后,一旦處理器進(jìn)入 HYPER 模式,其指令就可以操作 RegisterHyper 和 HyperProgramCounter,而且程序可執行 SWITCH-SUPER 和 EXITHYPER。

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

  

 

  圖 2:各種模式如環(huán)形所示

  HYPER 模式還允許處理器讀寫(xiě)所有虛擬存儲器,0x0000_0000 至 0xFFFF_FFFF,以及讀寫(xiě)實(shí)際物理存儲器。這些特權等級通常被直觀(guān)地用環(huán)形來(lái)描述(圖 2)。主環(huán),即 HYPER 環(huán)為特權等級較低的環(huán)賦予權限,最終可控制整個(gè)系統。

  理論結合實(shí)踐

  ARM® 創(chuàng )建處理器設計,供 ARM 合作伙伴構建芯片用。ARM 處理器包含一個(gè)或多個(gè)內核。每個(gè)內核實(shí)現一個(gè) ARM 架構。例如, UltraScale+ 包含一個(gè) ARM Cortex™-A53 處理器及四個(gè) ARMv8-A 物理內核(圖 3)。

  當查看 ARM 處理器的文檔和代碼時(shí),這種區別很重要;為了全面理解具有一個(gè) ARM 內核的“芯片”,可參考有關(guān)架構 (如 ARMv8-A) 和處理器 (如 Cortex-A53) 的文檔。ARMv8 架構中有四個(gè)例外等級 (來(lái)源:ARM 架構參考手冊,D1-1404):

  1、例外等級 0 (EL0),無(wú)需特權即可執行;

  2、例外等級 1 (EL1),執行 OS 以及任何執行特權指令的內容;

  3、例外等級 2 (EL2),允許硬件被虛擬化;以及

  4、例外等級 3 (EL3),允許在安全與非安全處理器狀態(tài)之間切換。

  以下程序通常在這些模式下運行,如ARM 架構參考手冊 (D1–1404)中所述:EL0,應用程序;EL1,OS 內核以及通常所描述的相關(guān)特權函數;EL2,管理程序;EL3,安全監控器。我們的理論實(shí)例直接對應 ARMv8 執行模式 EL0 至 EL2:USER 對應 EL0,SUPER 對應 EL1,HYPER 對應 EL2。ARM 添加第四個(gè)特權等級,即 EL3;利用這個(gè)特權等級,我們可在安全與非安全環(huán)境之間切換 EL0 和 EL1。盡管 EL3 的使用是一個(gè)很重要的論題,能夠為架構增加大量的功能,但是在本實(shí)例中我們將其忽略,并著(zhù)重介紹 EL0-EL2(利用管理程序的虛擬化)。如果對計算機如何保護金融交易感興趣,可以參閱 ARMv8 EL3 文檔(免費提供,需注冊)。這是非常好的參考文檔,從中可以獲得極為詳細的介紹。

  

 

  圖 3: UltraScale+ 架構

  進(jìn)入和退出例外模式

  在真實(shí)系統中,模式之間的切換比我們的實(shí)例更復雜一些。ARM 總結了 ARMv8-A 架構的行為并在參考手冊中給出。手冊中介紹,只有在接到例外或從例外返回時(shí),才能改變執行所處的例外等級。在接到例外時(shí),例外等級只能升高或保持不變;在從例外返回時(shí),例外等級只能降低或保持不變。只有三個(gè)指令能生成針對下個(gè)例外等級的例外:SVC (Supervisor Call),生成針對 EL1 的例外;HVC (Hypervisor Call),生成針對 EL2 的例外;SMC (Secure Monitor Call),生成針對 EL3 的例外。這些指令取值范圍為 0-65,555,允許每個(gè)例外等級有 216 個(gè)系統調用。這些指令針對下個(gè)例外等級,而且是唯一可供運行在較低例外等級的程序從運行在較高例外等級的程序請求某些內容的機制。在我們的理論實(shí)例中,SVC 是 SWITCHSUPER,HVC 是 SWITCHHYPER。

  PetaLinux 工具包含一組命令,以供用戶(hù)在賽靈思 FPGA 和 SoC 上輕松創(chuàng )建和擴展 Linux 系統。

  在前一個(gè)部分,我們介紹了能夠讓運行在 USER 模式(EL0)的程序進(jìn)入 SUPER 模式 (EL1) 的事件。大多數運行在 USER 模式的程序生成的事件是請求存儲器。當運行在 EL0 中的用戶(hù)空間程序從運行在 EL1 中的 OS 請求存儲器時(shí),這個(gè)用戶(hù)空間程序的 C 代碼可能調用函數 malloc(),再由該函數調用 mmap() 或 sbrk(),以從 OS 請求一個(gè)指向可用存儲器的指針。在 ARMv8-A 架構中的 Linux 上,這個(gè)過(guò)程在幕后轉化為 SVC 系統調用。該系統調用會(huì )把處理器轉換為 EL1,從而將控制權送回 OS,后者會(huì )解讀調用內容并提供正確的響應——本例中是指向所請求存儲器區域的指針,或者是一個(gè)錯誤,用以指出沒(méi)有可用存儲器。

  演示創(chuàng )建和工具

  現在我們來(lái)介紹我們團隊在 UltraScale+ QEMU Model 上運行 Doom 時(shí)所采用的步驟。這些步驟展示了如何獲得和構建運行演示所需的每個(gè)組件,如何運行以及以什么順序運行每個(gè)組件,以及如何與演示交互。成功完成該演示之后,你會(huì )獲得一個(gè)環(huán)境,用來(lái)在上面進(jìn)行實(shí)驗,以了解 Xen 管理程序在仿真的 Zynq UltraScale+ 上的運行情況。還需要將此遷移植 Zynq UltraScale+ MPSoC 芯片,這可作為練習由用戶(hù)來(lái)完成。

  想玩 DOOM 嗎?

  為了讓過(guò)程更簡(jiǎn)單,賽靈思提供基礎的根文件系統,這樣用戶(hù)就無(wú)需花時(shí)間和精力自己構建。此演示所需的所有下載內容在以下網(wǎng)址中均有提供: www.wiki.xil- inx.com/Doom+on+Xen+Demo。

  該演示首先通過(guò)更新由賽靈思提供的預編譯根文件系統 (rootFS),可包含所需的組件。然后,利用賽靈思的 PetaLinux 工具運行演示。rootFS 包含運行于 Linux 系統上的大部分程序——具體來(lái)說(shuō)就是用來(lái)啟動(dòng)系統的一組腳本,以及用來(lái)實(shí)現系統的應用程序與函數庫集。我們用來(lái)擴展演示中的基礎 rootFS 所使用的兩個(gè)工具分別是 Buildroot 和 PetaLinux。我們使用 Buildroot 為賽靈思提供的基礎 rootFS 構建 Doom 二進(jìn)制文件,同時(shí)使用 PetaLinux 創(chuàng )建 rootFS 的剩余部分并引導演示。

  Buildroot

  Buildroot 是一個(gè)簡(jiǎn)單的構建系統,用于為 Linux 系統創(chuàng )建 rootFS。它使用 make menuconfig 接口,這是一個(gè)用來(lái)配置 Linux 內核本身的常用方法。Buildroot 包含對 PrBoom 的默認支持,這對于本演示很有幫助。(PrBoom 是我們所使用的 Doom 游戲的 GNU 通用公共許可證 [GPL] 版本。這里我們會(huì )穿插使用 PrBoom 和 Doom 這兩個(gè)術(shù)語(yǔ)。 )Buildroot 對 Xen 構建不提供本地支持(盡管它可創(chuàng )建用于構建 Xen 所需的所有庫和工具鏈),因此賽靈思提供 Xen、Xen 工具和為用戶(hù)預編譯的 Xen 庫以及其他一些所需的庫,以讓過(guò)程簡(jiǎn)單直觀(guān)。



關(guān)鍵詞: Zynq MPSoC

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>