于是又在伟大的Eclipse上搭开发环境~~
首先需要
devkitPro http://devkitpro.org
带CDT的Eclipse http://www.eclipse.org/
GNU ARM插件 http://gnuarmeclipse.livius.net/blog/
devkitPro安装:
过程就不用说了,自动安装的。我装在D盘根目录下。
devkitPro安装完后把d:\devkitPro\devkitARM\bin添加到环境变量Path里。
不加的话就得在Eclipse里设置一下Path。
GNU ARM插件:
1.help->install new software
2.添加 http://gnuarmeclipse.sourceforge.net/updates
3.选择 GNU ARM C/C++ Development Support
4.装完重启Eclipse
项目设置:
1.File->new->c++ project
2.选ARM Cross Target Applicatio->Empty Project
3.Toolchains:下面选devkitPro然后点Next,别点Finish哟
4.把Configurations下的Debug前的勾去掉。
(我试过VBA模拟器不认编译出来的ELF,我很努力的让他认了,GDB连接也连上了,也还是不能在线调试)
5.点Advanced settings
5.1.设置C/C++ Build->Settings
5.1.1在Target Processor下把Processor设置为ARM7DTMI。把Thumb跟Thumb interwork都勾上。你可能会发现选项里有个ARM7DTMI-S是支持浮点的型号,任天堂真抠门,换个型号就好玩多了。
5.1.2在C Compiler跟C++ Compiler下的Optimization下的Other optimization flags里添加-fomit-frame-pointer -ffast-math。这只是个优化选项,加不加都不影响编译,devkitPro的makefile里加了,于是我也跟着加了。5.1.3.先择C++ Linker,把General下的-nostartfiles前的勾去掉。然后把-specs=gba.specs添加到Miscellaneous下的Other flags里。这是个连接脚本,告诉链接程序具体的内存地址跟分配位置。如果你想程序通过multiBoot传到GBA上运行而非烧录卡就选gba_mb.specs
5.1.4.设置GUN Create Flash Image的Command line pattern为${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${ProjName}.gba ${INPUTS}作用就是编译好的文件后缀改成.gba,我实在找不到更好的方法了。设置GUN Create Flash Image下的Output的输出格式为binary。
5.2.C/C++ General->Paths and Symbols设置头文件跟库了,其实在上面也能设置,不过下面那里设置会比较方便一点。
5.2.1在Includes下点Add,找到devkitPro\libgba\include,把两个add to all选项也勾上会把另外的配置跟语言也同时设置好。
5.2.2在Libraries->add,填gba。库的文件名是libgba.a,链接的时候填gba就会找到这个。
5.2.3在Library Paths->add,找到devkitPro\libgba\lib。(告诉链接器库的所在目录)
6.设置完后点Finish就OK了。
给个简单的例子
- #include
- int main(void) {
- irqInit();
- irqEnable(IRQ_VBLANK);
- consoleDemoInit();
- iprintf("FUCK ME!");
- while (1) {
- VBlankIntrWait();
- }
- }
最后编译后的GBA文件可能烧录卡不认,这时你在devkitPro里找到gbafix.exe,把ROM拖上去就可以了。原理很简单,ROM里头里会存着这个ROM的CRC,这个FIX工具就是重新把你算好。
转自:http://blog.youkuaiyun.com/eszeta/article/details/10762879