天天看點

GBA嵌入式系統學習平台

.為什麼要選用GBA作為嵌入式系統學習平台

我們知道,任天堂公司的GameBoy Advance(簡稱GBA)一款非常出色的掌上遊戲機,該

産品占領了全球90%以上的掌上遊戲機市場。

抛開遊戲功能不說,GBA本身就是一個很好的嵌入式系統開發學習平台,因為GBA采用AR

M7 CPU(RISC),擁有240×160 64K色彩色液晶、立體聲系統、按鍵、DMA、通訊口、3

2K的CPU高速RAM(32Bit)和256K外部RAM(16Bit),還有可外接的遊戲卡,可擴充至2

56Mbit的FLASH ROM以及用于儲存進度的128K EEPROM(或FLASH、帶電池記憶的SRAM)。

現在,許多開發者都開始學習嵌入式開發,并購買ARM實驗闆和JTAG仿真器。從成本的角

度來看,ARM實驗闆和JTAG仿真器價格不菲,但是非常适合于擁有長期硬體開發經驗的開

發者;對于想踏入嵌入式開發殿堂的初學者而言,高昂的硬體價格以及過高的硬體調試

門檻,自然成為阻礙學習嵌入式開發的攔路虎,許多初學者正是因為入門無路而中途放

棄。從許多硬體工程師的開發經驗來看,無論是低級的單片機開發還是進階的嵌入式系

統設計,學習重點都應該在軟體程式設計設計上,因為硬體部分都是有成熟的電路,熟悉以

後自然水到渠成。是以,對于初學嵌入式開發的開發者而言,GBA也就成為最便宜、最容

易入門的硬體平台,GBA可以讓初學者把煩人的硬體調試抛開,而将注意力集中到學習軟

件開發。

開發套件 價格 使用難易程度 備注

ARM實驗闆+JTAG仿真器 昂貴 困難 适合于擁有長期硬體開發經驗的工程師

GBALine+GBA 便宜 容易 适合于嵌入式開發初學者

2.GBA硬體平台的特點

從功能上來看,GBA包括聲效處理,彩色LCD顯示,以及輸入輸出等功能。GBA的顯示螢幕

是240×160像素,可以支援8bit(256色)或16bit(64k色),帶有硬體加速能力、支援A

lpha渲染(alpha blending)、旋轉(rotation)、縮放(scaling)、鑲嵌(mosaic)

等效果。GBA的螢幕模式有6種,分别為Mode 0 – Mode5。

從使用者的角度來看,GBA涉及人的手,眼,耳等感覺器官;從開發者角度看,它是完整

的嵌入式系統。

3. 必備的硬體GBALine

GBALINE是為GBA精心設計的一套外設,它完成PCGBA的高速資料交換,以及資料存儲

,整套的價格也就百來塊錢。

關于GBALine,具體的網址:http://www.sudt.com

編譯好的二進制代碼需要寫入GBA卡帶才能在真實的硬體平台上運作,這就需要一套下載下傳

存儲系統幫助完成最後的工作,GBALine套件正是為實作此功能而誕生的。該套件包括G

BALine下載下傳線以及可擦寫卡帶,下載下傳線直接将GBA遊戲機與電腦連接配接,實作高速資料交換

;可擦寫卡帶用于存儲編譯好的二進制代碼。

4. 如何進行嵌入式開發

GBA的硬體和PC完全不一樣,究竟該如何學習呢?難道還要去買GBA開發工具,要學GBA的

開發語言?許多開發者都會有同樣的疑問。不必緊張,隻要開發者懂得C語言,會使用A

RM C的編譯系統,就可以開發GBA程式,使用GBA作為入門級嵌入式學習平台的優點就在

此。目前,在Linux下和Windows下都有免費的編譯工具,推薦的是DevKitAdv開發包,該

開發包使用的是GCC編譯器。當然,編譯效率比較高的有SDT2.51、ADS1.2、Metaware f

or ARM等等,但是這些都是收費的,對此有興趣的開發者可以自己研究。源代碼編輯工

具推薦Visual C++。

5.模拟運作環境

PC端的模拟運作環境可以采用GBA模拟器,例如VisualboyAdvance等。編譯好的ELF或BI

N檔案用模拟器打開就模拟硬體運作ARM程式。

6.硬體組成

6.1. GBA系統

CPU 32位RISC CPU(ARM7TDMI)/16.78MHz

相容性 內建8位CISC CPU相容于GBC,但是不能和GBA的CPU同時工作

記憶體 系統ROM 16K位元組(GBC是2K)

工作RAM 32K位元組+CPU外部256K位元組(2倍周期)

VRAM 96K位元組

OAM 64位×128

調色闆RAM 16位×512(256色用于精靈,256色用于背景)

卡帶記憶體 最多32M ROM或閃存+最多512Kbit SRAM或閃存

顯示 240×160×RGB點、32,768色模拟顯示、帶有應将加速,支援旋轉(rotation)、縮

放(scaling)、Alpha渲染(alpha blending)、鑲嵌(mosaic);6種螢幕模式,分别為Mod

e0-Mode5。

操作 控制鍵(A、B、L、R、START、SELECT和方向鍵)

聲音 4聲道(相應于GBC的聲道)+2個CPU直接聲道(PCM格式)

通訊 序列槽通訊(8位/32位、UART、多玩家、多用途、JOY總線)

卡帶 同DMG和GBC一樣,GBA的卡帶使用32針接口,GBA自動檢測插入卡帶的類型并切換G

BC或GBA模式。GB卡帶、GB/GBC雙重模式卡帶、GBC專用卡帶、GBA專用卡帶都可以在GBA

系統上使用。

6.2. GBALine下載下傳線, http://www.sudt.com

PC端接口 LPT,自動設定

GBA端接口 SIO,序列槽通訊

資料傳輸率 115K Byte/s(随作業系統負荷的變化相應波動,範圍:90KB/s~115KB/s)

電源 自供電

6.3. 64Mbit Flash Card

Flash容量 64Mbit

Flash擦寫次數 10萬次

NV-SRAM 32K Byte,帶電池記憶

7.編譯環境設定

DevKitAdv是免費的GCC開發包,目前的最新版本是R5-Beta-3,下面将以此版本為例介紹

如何在windows nt、2000、xp平台下使用該開發包。

下載下傳并安裝DevKitAdv開發包到C:/devkitadv-r5-beta-3目錄,進入該目錄運作DevKit-

Advance-R5-Beta-3.lnk檔案,此時會出現藍色的console控制台視窗

在c:/devkitadv-r5-beta-3目錄下有example、testsuite等目錄,現在以testsuite目錄

為例示範如何通過指令行方式編譯檔案。

在上面的視窗中輸入指令:

cd testsuite

make

之後就開始編譯testsuite項目并生成agbmain.bin、agbmain.elf等檔案,此時就可以

先使用模拟器VisualBoyAdvance運作其中一個檔案,或者通過GBALine下載下傳線下載下傳到Fla

sh卡中實際運作。

除了指令行方式之外,也可以自己建立Visual C++的makefile工程檔案,這是強烈推薦

的方式。

最簡單的入門過程就是這樣,祝各位玩的開心! 

繼續閱讀