我们公司进行嵌入开发的硬件系统是ARM9200,开发工具是ADS1.2,说实话,这个开发工具实在是不太好用,尤其是codeWarrior这个IDE,一点IDE的风范也没有,什么代码自动提示、自动排版等等全部没有,这让使惯了Eclipse的我实在是很难适应。

没有办法,还是用Eclipse吧,好在Eclipse有CDT,支持C的开发,不过我对于使用Eclipse进行C语言的编程环境的配置属于菜鸟级别,而且工作要紧,没有时间研究如何配置Eclipse进行嵌入式C语言开发,而是简单的把Eclipse当作IDE来使用。

于是我简单的配置了一下,使用MinGW+Eclipse+CDT配置了一套简单的C语言开发环境,这个很简单,网上有很多资料,随便一搜就是一大把,这里就不说了。但是这样配置下来的问题在于这套环境编译出来的是Windows环境下运行的程序,只能用来做高层业务逻辑的测试用。

于是我的工作环境就是Eclipse作为IDE进行代码编辑,codeWarrior用作编译目标板上的调试程序和bin文件,AXD作为调试工具。呵呵,写个小破程序还要打开三个工具不停的切换,实在是比较郁闷呀。

最近工作告一小段落,总算有些时间研究工具了,这不,有了一点小成果,就是可以在Eclipse下完成目标板调试程序和bin文件的编译,这样以后工作时至少可以不用打开codeWarrior了。

其实这个工作很简单,因为codeWarrior只是一个IDE开发环境,真正的编译工具还是需要使用ARM公司提供的
   armcc   : C/C++ 源程序编译工具(ARM/THUMB)
   armmsm  : 汇编语言编译工具(ARM/THUMB)
   armlink : 链接工具
   armar   : 打包工具,可以将多个.o文件打包为一个.a库文件
   fromelf : 可执行文件生成工具,可以将编译后的axf调试文件生成为ELF格式的ROM烧写文件

这样我们就有一个思路,写一个makefile,然后在Eclipse中调用make命令,通过该makefile实现命令行编译不就不需要codeWarrior了吗。

CodeWarrior for ARM ADS 1.2的IDE开发工具本身不提供直接生成makefile文件的功能,但结合一个小工具mcp2make就可以实现生成makefile文件。

首先你要从www.arm.com上下载mcp2make工具,先进行安装,一般默认安装路径是ADS的安装路径,你可以从ADS路径下找到一个mcp2make目录,进入该目录就可以看到mcp2make工具的可执行文件mcp2make.exe。

然后你用CodeWarrior打开工程,把当前工程的设置输出为xml文件,生成这个文件很重要,它是mcp2make进行转换的重要文件。

最后执行mcp2make.exe,先填入xml文件名,然后填入编译选项,最后生成makefile文件。

详细生成makefile文件的步骤,可以参考mcp2Make目录下的readme.txt,里面写得很详细。生成的makefile文件,可以直接用VC下的nmake /f ********.mk all就可以对工程进行构建了。

使用nmake对makefile文件验证通过后,在Eclipse的Run->External Tools菜单下增加一个新的外部命令,参数为/f *****.mk rebuild即可。

这样平时可以使用Eclipse自己的Clean命令编译Windows下的程序,可以运行测试程序验证上层逻辑,然后调用外部工具编译目标程序,再用AXD进行加载调试就可以了。

后记:网上还有很多据说直接用Eclipse调试嵌入式系统的方法,可是我都没有试验通过,也许是我们使用的环境不一样吧,算了,使用Eclipse+AXD进行开发和调试也没什么不方便,等以后有时间和兴致再研究这个问题吧。