Eclipse+devkitPor搭个GBA开发环境

捡起Arduino的同时也捡起了GBA。。

于是又在伟大的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工具就是重新把你算好。


你可能感兴趣的:(GBA)