• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > ARM Linux的Gameboy模擬器移植和優化

    ARM Linux的Gameboy模擬器移植和優化

    作者: 時間:2012-12-06 來源:網絡 收藏

    引言

    本文引用地址:http://www.czjhyjcfj.com/article/148219.htm

    面向A R M微處理器構架的嵌入式操作系統的使用量這些年持續增長,在各種嵌入式操作系統中, L inux是獲得支持最多的第三大力量。

    目前, L inux支持包括610、A RM710、720T cores、ARM920T cores、StrongARM 110、StrongARM1100、XScale等系列的arm處理器。

    是目前比較流行的8位掌上游戲機,通常被簡稱為GB,它的最終態Game Boy Color (GBC)是完全向后兼容的。Gnuboy是GB /GBC的軟件,是一種自由軟件,它是基于Qt系統的,能夠運行幾乎所有的黑白和彩色的GB /GBC游戲ROM,但運行復雜一些的游戲需要在速度上得到加強,同時它的聲音還沒有得到測試。

    Gnuboy已經實現了i386匯編代碼的一些工作,能夠在奔騰機器上運行良好,除此之外,到目前為止,它能夠運行的平臺還很有限。隨著嵌入式系統設計技術的發展,PDA、Smartphone等嵌入式產品的功能不斷地得到擴展,適應用戶的需要, Gnuboy在嵌入式產品中的應用非常具有前景。目前Gnuboy在ARM 下還沒有得到很好的應用,本文就是在構建的基于ARM920T 的嵌入式平臺上對gnuboy運用進行的嘗試性工作,同時, Gnuboy作為一種虛擬機技術,本文的工作對研究虛擬機技術在arm L inux中的應用也具有一定的價值。

    硬件環境

    本實驗測試板采用Motorola公司的MX1 Lite,系統的主要模塊有處理器內核模塊、用戶接口模塊、連接設備模塊等,如圖1所示,下面分別進行介紹。

    系統主要功能模塊圖

    1)處理器內核模塊采用v4T體系結構的arm920T 內核擁有16K的指令緩存和16K的數據緩存; 外部接口模塊提供了最多6 個片選信號來訪問外部設備,其中連接的12Kx16bits的NOR Flash 經過配置用于系統啟動; SDRAM 控制器提供了對使用32Mx32bits的SDRAM的訪問控制。

    2)用戶接口模塊由于MX1 L ite沒有模擬信號處理模塊,無法直接接收觸摸屏的輸入,所以本系統采用了TI的TSC2301芯片來支持觸摸屏的輸入功能,它與主芯片通過連續外設接口協議連接,它不僅可以接收觸摸屏的輸入,而且它還支持聲音數模轉換和輸入輸出等功能; LCD 控制器用于給外部液晶顯示屏提供顯示數據,LCD采用了Sharp 的20x240 HR - TFT LCD,它支持觸摸屏輸入,分辨率為320x240。

    3)連接設備模塊包含有多媒體卡/數字安全主機控制模塊、內存棒控制器和智能卡接口,以此來連接用于外部存儲的多媒體卡。

    Gnuboy軟件結構和一些工具軟件

    Gnuboy是基于Qt系統的,可從圖2中看出它和整個系統的關系。本文構建的基于arm920T的嵌入式L inux平臺下采用的是嵌入式系統的QT 版本: QT/Embedded 和Qtop ia(QPE) ,這有助于

    系統軟硬件結構圖

    QT/Embedded和Qtopia

    QT/Embedded和Qtopia是著名的QT庫開發商TrollTech開發的基于Framebuffer、面向嵌入式系統的QT版本。它的特點是界面美觀、色彩配比好,使用與QT/Windows和QT/X11 完全一致的AP I接口,許多基于QT的程序可以非常方便地到嵌入式系統。Qtopia 包括了全套的個人信息管理PIM,如地址本、日程安排、游戲、配置工具等。QT/Embedded實現了對下層輸入設備的驅動和底層圖形接口以及各基類和AP I,它在編譯后生成函數庫被應用程序調用。Qtopia也是以客戶/服務器的方式,通過消息機制來管理各種應用程序。圖3描述了QT應用程序的執行方式及系統結構,其中X Server是核心。

    QT應用程序的執行方式及系統結構

    一些工具軟件

    移植前需要在宿主機上建立arm 的交叉編譯環境,主要用到的開發工具包括三個部分: binutils、gcc、glibc。

    ● Binutils — 用于操作二進制文件的實用程序集合,包括諸如匯編器as、二進制轉換工具( objdump、objcopy) 等這樣的實用程序;

    ● Gcc — GNUC編譯器(C編譯器gcc和C + +編譯器g + + ) ;

    ● Glibc —所有應用程序將鏈接到的C庫。

    可以直接從Internet上下載已經編譯的二進制文件安裝到PC機上,并相應設置比如路徑等這樣一些比較簡單的參數即可使用,但必須保證編譯時所用的函數庫版本與目標板上運行時所使用的函數庫版本的一致。ARM Developer Suite它是全套的實時開發軟件工具包,編譯器生成的代碼密度和執行速度優異,可快速低價地創建arm結構應用。

    移植和

    Gnuboy是一種虛擬機機制,它對具體硬件的操作是通過操作系統(這里是L inux)來進行的,圖4 為它對基于armlinux平臺硬件操作的抽象層次。

    這個抽象層次也適用于在arm 平臺下用C語言編寫的一般虛擬技術應用。越是頂層越是抽象,代碼可移植性就越好;越是底層,越是硬件相關,代碼可移植性就越差,但代碼執行速度越快。這也是一般虛擬機移植和思想的體現,提高移植性,多運用抽象的接口,提高速度,多一些直接操作硬件的代碼。

    移植

    Gnuboy在此平臺上的正確運行需要解決中斷、提供Framebuffer支持、數據存儲格式、字符串到64位整數轉換等問題。

    中斷問題

    Gnuboy需要依賴宿主操作系統(這里是L inux)來提供輸入/輸出等基本服務,讓宿主操作系統作為它與硬件設備的中間人,這種游離于硬件通信細節之外的方法具有良好的可移植性,本文要解決的主要是提供對鍵盤輸入和游戲控制終端的中斷響應和處理。

    在本文構建的平臺下,需要編寫相應的鍵盤和游戲控制終端的Linux驅動程序,以模塊方式加載后,在Gnuboy中打開該設備。對應鍵盤處理,在Gnuboy中需要調整相應的鍵盤設置代碼使之與系統一致。

    linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

    linux相關文章:linux教程



    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 朝阳县| 和田县| 洞头县| 吉林市| 抚宁县| 阿勒泰市| 根河市| 汉中市| 阿拉善盟| 湘西| 清远市| 昆明市| 合作市| 永定县| 河南省| 将乐县| 六枝特区| 南川市| 襄城县| 霍城县| 凤凰县| 赣榆县| 凤凰县| 旬邑县| 菏泽市| 高陵县| 景泰县| 夏邑县| 沂水县| 景德镇市| 永福县| 遂宁市| 什邡市| 新津县| 黄浦区| 棋牌| 甘孜县| 阿克苏市| 宕昌县| 温泉县| 林西县|