新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM Linux的Gameboy模擬器移植和優(yōu)化

ARM Linux的Gameboy模擬器移植和優(yōu)化

作者: 時(shí)間:2012-12-06 來源:網(wǎng)絡(luò) 收藏

引言

本文引用地址:http://www.butianyuan.cn/article/148219.htm

面向A R M微處理器構(gòu)架的嵌入式操作系統(tǒng)的使用量這些年持續(xù)增長(zhǎng),在各種嵌入式操作系統(tǒng)中, L inux是獲得支持最多的第三大力量。

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

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

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

硬件環(huán)境

本實(shí)驗(yàn)測(cè)試板采用Motorola公司的MX1 Lite,系統(tǒng)的主要模塊有處理器內(nèi)核模塊、用戶接口模塊、連接設(shè)備模塊等,如圖1所示,下面分別進(jìn)行介紹。

系統(tǒng)主要功能模塊圖

1)處理器內(nèi)核模塊采用v4T體系結(jié)構(gòu)的arm920T 內(nèi)核擁有16K的指令緩存和16K的數(shù)據(jù)緩存; 外部接口模塊提供了最多6 個(gè)片選信號(hào)來訪問外部設(shè)備,其中連接的12Kx16bits的NOR Flash 經(jīng)過配置用于系統(tǒng)啟動(dòng); SDRAM 控制器提供了對(duì)使用32Mx32bits的SDRAM的訪問控制。

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

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

Gnuboy軟件結(jié)構(gòu)和一些工具軟件

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

系統(tǒng)軟硬件結(jié)構(gòu)圖

QT/Embedded和Qtopia

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

QT應(yīng)用程序的執(zhí)行方式及系統(tǒng)結(jié)構(gòu)

一些工具軟件

移植前需要在宿主機(jī)上建立arm 的交叉編譯環(huán)境,主要用到的開發(fā)工具包括三個(gè)部分: binutils、gcc、glibc。

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

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

● Glibc —所有應(yīng)用程序?qū)㈡溄拥降腃庫(kù)。

可以直接從Internet上下載已經(jīng)編譯的二進(jìn)制文件安裝到PC機(jī)上,并相應(yīng)設(shè)置比如路徑等這樣一些比較簡(jiǎn)單的參數(shù)即可使用,但必須保證編譯時(shí)所用的函數(shù)庫(kù)版本與目標(biāo)板上運(yùn)行時(shí)所使用的函數(shù)庫(kù)版本的一致。ARM Developer Suite它是全套的實(shí)時(shí)開發(fā)軟件工具包,編譯器生成的代碼密度和執(zhí)行速度優(yōu)異,可快速低價(jià)地創(chuàng)建arm結(jié)構(gòu)應(yīng)用。

移植和

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

這個(gè)抽象層次也適用于在arm 平臺(tái)下用C語(yǔ)言編寫的一般虛擬技術(shù)應(yīng)用。越是頂層越是抽象,代碼可移植性就越好;越是底層,越是硬件相關(guān),代碼可移植性就越差,但代碼執(zhí)行速度越快。這也是一般虛擬機(jī)移植和思想的體現(xiàn),提高移植性,多運(yùn)用抽象的接口,提高速度,多一些直接操作硬件的代碼。

移植

Gnuboy在此平臺(tái)上的正確運(yùn)行需要解決中斷、提供Framebuffer支持、數(shù)據(jù)存儲(chǔ)格式、字符串到64位整數(shù)轉(zhuǎn)換等問題。

中斷問題

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

在本文構(gòu)建的平臺(tái)下,需要編寫相應(yīng)的鍵盤和游戲控制終端的Linux驅(qū)動(dòng)程序,以模塊方式加載后,在Gnuboy中打開該設(shè)備。對(duì)應(yīng)鍵盤處理,在Gnuboy中需要調(diào)整相應(yīng)的鍵盤設(shè)置代碼使之與系統(tǒng)一致。

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

linux相關(guān)文章:linux教程



上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

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

關(guān)閉