从GBA开始,步入ARM开发的殿堂(初学者入门篇)

原创 2004年02月03日 13:48:00
GBA开始,步入ARM开发的殿堂(初学者入门篇)

1.为什么要选用GBA作为嵌入式系统学习平台
我们知道,任天堂公司的GameBoy Advance(简称GBA)一款非常出色的掌上游戏机,该产品占领了全球90%以上的掌上游戏机市场。
抛开游戏功能不说,GBA本身就是一个很好的嵌入式系统开发学习平台,因为GBA采用ARM7 CPU(RISC),拥有240×160 64K色彩色液晶、立体声系统、按键、DMA、通讯口、32K的CPU高速RAM(32Bit)和256K外部RAM(16Bit),还有可外接的游戏卡,可扩充至256Mbit的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色),带有硬件加速能力、支持Alpha渲染(alpha blending)、旋转(rotation)、缩放(scaling)、镶嵌(mosaic)等效果。GBA的屏幕模式有6种,分别为Mode 0 - Mode5。
从使用者的角度来看,GBA涉及人的手,眼,耳等感觉器官;从开发者角度看,它是完整的嵌入式系统。

3. 必备的硬件GBALine 
GBALINE是为GBA精心设计的一套外设,它完成PC<=>GBA的高速数据交换,以及数据存储,整套的价格也就百来块钱。
关于GBALine,具体的网址:url.gifhttp://www.sudt.com
编译好的二进制代码需要写入GBA卡带才能在真实的硬件平台上运行,这就需要一套下载存储系统帮助完成最后的工作,GBALine套件正是为实现此功能而诞生的。该套件包括GBALine下载线以及可擦写卡带,下载线直接将GBA游戏机与电脑连接,实现高速数据交换;可擦写卡带用于存储编译好的二进制代码。

4. 如何进行嵌入式开发
GBA的硬件和PC完全不一样,究竟该如何学习呢?难道还要去买GBA开发工具,要学GBA的开发语言?许多开发者都会有同样的疑问。不必紧张,只要开发者懂得C语言,会使用ARM C的编译系统,就可以开发GBA程序,使用GBA作为入门级嵌入式学习平台的优点就在此。目前,在Linux下和Windows下都有免费的编译工具,推荐的是DevKitAdv开发包,该开发包使用的是GCC编译器。当然,编译效率比较高的有SDT2.51、ADS1.2、metaware for ARM等等,但是这些都是收费的,对此有兴趣的开发者可以自己研究。源代码编辑工具推荐Visual C++。

5.模拟运行环境
PC端的模拟运行环境可以采用GBA模拟器,例如VisualboyAdvance等。编译好的ELF或BIN文件用模拟器打开就模拟硬件运行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种屏幕模式,分别为Mode0-Mode5。
操作 控制键(A、B、L、R、START、SELECT和方向键)
声音 4声道(相应于GBC的声道)+2个CPU直接声道(PCM格式)
通讯 串口通讯(8位/32位、UART、多玩家、多用途、JOY总线)
卡带 同DMG和GBC一样,GBA的卡带使用32针接口,GBA自动检测插入卡带的类型并切换GBC或GBA模式。GB卡带、GB/GBC双重模式卡带、GBC专用卡带、GBA专用卡带都可以在GBA系统上使用。

6.2. GBALine下载线, url.gifhttp://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下载线下载到Flash卡中实际运行。
 除了命令行方式之外,也可以自己创建Visual C++的makefile工程文件,这是强烈推荐的方式。

 最简单的入门过程就是这样,祝各位玩的开心!

GBA编程和汉化常用软件汇总

内容来自GBA吧中的痴狂小黑,本人只是做个汇总和搬运。 1.简易图片导入导出套装(PicSimpleImEx & AutoPicRock)Ver1.0 这两个软件是用C#写的,想要用,先装...
  • u012260499
  • u012260499
  • 2016年10月19日 10:33
  • 536

自己动手丰衣足食-自己动手修改GBA ROM游戏文件

经过一天的努力终于琢磨出怎么修改GBA的游戏文件也就是俗称的ROM文件,起因是因为偶然看到二手GBM,顿时抑制不住买了一台,可惜买得晚了,完美运行游戏又带金手指功能的烧录卡买不到了。SUPERCARD...
  • l198738655
  • l198738655
  • 2017年03月21日 12:06
  • 3179

linux强大的游戏模拟器--GBA

Linux强大的游戏模拟器,模拟的效果以及CPU的占用都非常低,主要是用来玩GBA和FC的游戏,玩GBA游戏比Linux版VBA强的不是一点半点,Linux版VBA可以说就是一个半成品,不说功能方面,...
  • qinxiongxu
  • qinxiongxu
  • 2013年01月31日 21:50
  • 8394

教程 修复GBM和GBA SP的耳朵键(LR键)(NDS系列通用)(不需要焊接)

相信大家都遇到GBA或NDS耳朵键(L或R键)失灵的情况。这个故障在任天堂掌机里算非常常见的故障。楼主有一台GBM和一台GBA SP,前段时间耳朵键都有个失灵了,十分不爽。自己网上搜索了半天,找到了这...
  • shallen320
  • shallen320
  • 2015年04月28日 10:55
  • 1969

黑莓Q10 bb10 系统 gba等模拟器 retroArch全教程

先看最终成果 这是之前在发掘黑莓原生软件的时候无意中找到的好东西 retroArch是什么 是一个集合了很多模拟器的模拟器,支持的模拟器内核很多,我已经亲测FC,GBA等等都可以完美运行 ...
  • sinat_18497785
  • sinat_18497785
  • 2016年10月21日 16:30
  • 5689

(转载)Halcon学习(二十一)摄像机标定常用函数(二)

1.read_cam_par( : : CamParFile : CameraParam) 从文件夹中读取相机的内参数。 2.disp_caltab( : : WindowHandle...
  • u013404374
  • u013404374
  • 2015年07月18日 14:39
  • 472

Spring boot干货系列:(一)优雅的入门篇

后端编程嘟 2017-02-26 00:15 前言 Spring一直是很火的一个开源框架,在过去的一段时间里,Spring Boot在社区中热度一直很高,所以决定花时间来了解和...
  • gebitan505
  • gebitan505
  • 2017年04月11日 17:10
  • 707

GBA游戏卡带的几种记忆类型

转自maxzhou88:http://tieba.baidu.com/p/1513244819 由于没有全面找到原装的GBA卡带,所以我一直没有真正见过不同记忆类型的GBA游戏卡。非常感谢一...
  • lrb2010
  • lrb2010
  • 2013年05月23日 18:29
  • 1329

html从这里开始(初学者必读!!!)

HTML从这里开始 Nettuts +运营最困难的方面是为很多技能水平不同的用户提供服务。如果我们发布太多高级教程,我的新手用户将无法从中受益。相反也是如此。我们尽我们最大的努力,但...
  • lintlx
  • lintlx
  • 2015年04月16日 13:11
  • 322

java初学者从这里开始

(1)JAVA程序开发步骤: 源代码–>编译成*.class–>执行(将.class交给JVM) jvm–java虚拟机(解释器) (2) JDK — java开发工具包(编译器、解释器、...
  • huanglei201502
  • huanglei201502
  • 2015年04月29日 13:08
  • 212
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:从GBA开始,步入ARM开发的殿堂(初学者入门篇)
举报原因:
原因补充:

(最多只允许输入30个字)