摘自http://lishutong.me/1170.html
最近对GCC有些兴趣,想使用GCC工具链来编译ARM代码。首先想到的是Eclipse+GCC,但实际使用发现其安装和配置比较复杂,而且在调试ARM代码时,操作界面和易用性很不友好。在Windows下,Keil是其中最常用的ARM开发IDE之一。以前听说过其可以运行GCC工具链,于是今天尝试了一下,小有成果,总结如下。
首先,我们要准备可以编译正确的GCC代码以及其链接脚本文件。Keil安装目录下提供的Demo例程均是基于ARMCC工具链的,如果你没有相应的代码,那重头建一个吧。
然后,我们需要安装GCC工具链。目前网上的GCC工具链版本很多,比较常用的是Sourcery CodeBench Lite Edition,其下载地址可在http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/中找到。这里我用其编译针对LPC1766(Cortex-M3)内核的代码,所以下载其中的EABI版本即可。点击下图中的页面,会要求填写相关的信息并进行邮件验证,验证邮件中包含了软件的下载地址。
接下来,我们需要一个Keil的工程。关于在Keil环境下建立工程的步骤我就不多说了。在打开的工程上右键->[Manage Components],进入组件管理。
在弹出的组件管理对话框中,更换开发工具链。原来默认选择的是[Use RealView Compiler],切换至[Use GNU Compiler],将设置好相应的目录为GCC工具链的安装目录所在的路径。该目录下应包含arm-none-eabi子目录。
设置好工具链好,进入工程的属性配置,切换GCC编译器的配置,设置只生成Thumb代码,因为LPC1766只允许执行Thumb代码。
然后再配置Linker中的链接脚本文件,链接脚本文件用于控制工程中代码和数据的存储布局。
最后,点击编译按钮,编译OK! 编译完成后,就可以进行调试了。借助于Keil强大的外设查看和软仿功能,GCC编译出来的工程也可以在其上跑得很High!