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

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

GBA 开发简单入门相关推荐

  1. linux如何将图片转为gba数组,GBA 开发简单入门

    GBA 开发简单入门 一. GBA开发包--DevKitAdv 简介 DevKitAdv 主要包括两部分,一是GCC++编译器,二是 GBA库. GCC++编译器功能和我们常用的VC差不多,只不过少了 ...

  2. 微信开发简单入门01

    微信开发简单入门 微信的交互原理 消息推送 消息推送 微信的交互原理 手机的微信关注某个公众号,向公众号发送消息到微信服务器,微信服务器转发到指定的URL的服务器;这台指定URL的服务器返回数据到微信 ...

  3. 微信小程序云开发简单入门教程

    文章目录 ###开场白: 云开发顾名思义 就是后端开发,应该是微信上周才推出的开放能力,现在这让我想起了以前的leancloud,和更早的bmob了,而leancloud一早就开始支持微信小程序开发了 ...

  4. 安卓智能Pos开发简单入门总结

    文章目录 前言 一.智能POS开发和手机开发的区别? 1.硬件区别 2.软件区别 二.开发初步测试参数准备 三.密钥下发 1.主密钥下发 2.工作密钥下发 三.交易流程开发 1.流程界面准备 2.85 ...

  5. cocos2dx游戏开发简单入门视频教程 (cocos2d-x)- 第1天

    转载请注明出处:http://blog.csdn.net/xingxiliang/article/details/18557631 2014-03-16更新:出品了box2d编辑工具PhysicsEd ...

  6. android nfc后台,android NFC开发简单入门

    前言: 说道NFC,是Near Field Communication缩写,就是近距离无线通讯技术.NFC采用主动和被动两种通信模式,工作的模式有三种,读写标签,点对点,仿真卡模式,今天我们只是简单的 ...

  7. Java微信服务号的开发(简单入门)

    进行微信服务号开发的步骤 一个别人已经搭建好的项目参考地址:下载链接 1.搭建微信服务号的服务器 项目配置maven <dependency><groupId>com.soec ...

  8. cocos2dx游戏开发简单入门视频教程 (cocos2d-x)- 第5天

    第1天的地址: http://blog.csdn.net/xingxiliang/article/details/18557631 2014-03-03更新:终于出进阶篇了http://blog.cs ...

  9. cocos2dx游戏开发简单入门视频教程 (cocos2d-x)- 第4天

    第1天的地址: http://blog.csdn.net/xingxiliang/article/details/18557631 书接上回:今天我们让我们的游戏加点背景音乐,而且可以切换场景. 20 ...

最新文章

  1. Jeff Dean回顾谷歌2021
  2. 【云计算的1024种玩法】轻松将其他云的对象储存迁移至阿里云OSS
  3. 听“汉代风云”,看“晁错之死”
  4. Random Forest算法中的参数详解
  5. 移动端H5 腾讯地图sdk 当前位置 地址你解析 距离计算
  6. c语言排队系统,【分享】C语言 银行取票排队系统
  7. 二阶等差数列的性质及应用
  8. python读音有道-Python版有道翻译
  9. MySQL 百万级数据,怎么做分页查询?
  10. net如何在aspx页面中将html页面快速的加入runat,asp.net中在aspx.cs向aspx页面写代码有哪几种方法?...
  11. 基于情感词典的文本情感分析(一个最简单的举例能直接运行)
  12. PDF编辑器中文版怎么插入PDF空白页面
  13. 冲击波病毒内幕点滴(2) (转)
  14. wordpress采集插件自动采集伪原创免费插件
  15. ebookpk-java手机英中电子词典_关于理解和支持的句子
  16. EMS、CEM、OEM、ODM、IDH、IDM介绍
  17. android 动画闪屏问题,Android中闪屏实现方法小结(普通闪屏、倒计时闪屏、倒计时+动画...
  18. 管理是管事,领导是带人!
  19. Binet-Cauchy公式
  20. 如何成为java架构师?2023版Java架构师学习路线总结完成,真实系统有效,一切尽在其中

热门文章

  1. 猿创征文|2022年前端之路——我的前端开发好帮手
  2. 计算机画图学生作品小学,电脑绘画作品_需要一件小学生电脑绘画作品
  3. 基于FPGA的LD3320语音识别模块驱动设计
  4. 被AI潮抛弃的企业?对话微软CTO韦青,如何应对“变革”焦虑
  5. ThinkPad T14、ThinkPadT16 2022款 评测
  6. 少儿编程网站:scratch课程如何学习和教学?
  7. html跑马灯编程,求一个HTML无缝的跑马灯代码。
  8. 吴恩达提出了著名的二八定律
  9. ChinaSoft 论坛巡礼 | 软件工程研究与实践
  10. MATLAB/ArcGIS读取nc数据并进行可视化