.為什麼要選用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工程檔案,這是強烈推薦
的方式。
最簡單的入門過程就是這樣,祝各位玩的開心!