windows环境下arm gcc+Keil开发环境的搭建

操作系统:Window7 64bit

Keil版本 V4.70

交叉工具链:arm-none-eabi-gcc v4.7.2

    由于刚开始学习嵌入式时用的linux环境下的arm-linux-gcc,但是随着工程文件的增加,每次都要修改Makefile。总之不太习惯Linux-Style编程,后来终于找到了好的方法,就是Keil+gcc。这样可以继续使用gcc编译器,意味着一些命令选项和链接脚本还有汇编代码都不用修改,直接拿过来就可以编译了。希望对喜欢使用gcc但是又不习惯敲命令的朋友有所帮助。当然IDE的好处可不止这些。OK,Let's begin!

    Keil的官网www.keil.com。建议下载最新版本的Keil,因为从4.7版本开始就支持代码提示功能了(这个很给力)。Sourcery CodeBech Lite交叉工具链的获取网址,选择EABI版本。注意这两个网站都是要注册才能下。

     安装Keil同普通的程序安装没有任何区别,不再详细说明。Sourcery CodeBench lite的安装注意

1.选择Custom

2.建议选择Documentation,这些文件是交叉工具链的说明,包含很多有用的东西。


3.建议选择Modify PATH,这样在命令窗下也可以调用。然后就是next开始安装。

 

安装后测试交叉工具链是否安装完成。开始---->运行,输入cmd进入命令窗口。在窗口中输入arm-none-eabi-gcc -v ,如果出现一大堆信息如下:

                                               

说名安装成功。如果提示命令不存在,说明工具链的路径没加入Path。

    在使用工具链之前还要先了解工具链的一些信息。假设工具链的安装路径为~,在~\share\doc\arm-arm-none-eabi\pdf找到第三章,在3.2节有如下信息:


从文档中可以知道,工具链默认的是armv4体系结构,如果要支持Thumb指令需要加上选项-mthumb。如果你用的处理器的体系结构不是默认需要加上相应的命令行(文档上都有提示)。我用的芯片是S3C2440,体系结构是armv4T,工具链为arm-2012.09-63-arm-none-eabi.exe。从图中可知该工具链是默认支持armv4的,所以使用时不用加入命令选项。

 Keil和arm-none-eabi-gcc安装完成后,下面就是将工具链加入Keil中,启动Keil随便打开一个例子工程(如果没有工程大部分选项是灰色的)。点击Project-->Manage-->components或直接点击工具栏中的图标。然后弹出对话框如下:

 

安装时默认是选择Use RealView,使用工具链就选择Use GCC。然后在GNU-Tool-Prefix中填入arm-none-eabi-,GNU-Tool Folder中填入工具链安装的路径。点击OK就可以了。就是这么简单。

     然后开始建立第一个项目,Project-->new project 命名project后选择开发设备

其实这步不重要,因为工具链支持的架构在getting-started.pdf中已经写的很清楚了。进入工程后会提示

点击否,因为这个启动代码的汇编是为Keil自己的工具链armcc提供的,格式和gnu gcc的不兼容。这个工作空间和其他IDE差别不大,添加文件什么的就不说了。添加文件后就是配置工程,这个非常重要。进入工程选项对话框后,点击CC。如下:

 

如果你的处理器架构不是工具链默认的,要在Misc Controls中加入选项-mach=你的处理器架构。在Assembler中也要这样修改。在Include Paths添加用到的非系统头文件,在Optimization中选择代码优化选项。修改链接选项:

  

在Linker Script File中添加你的链接脚本。注意如果编译裸机程序要在Do not use Standard System Startup Files前打钩。OK,点击生成,Output窗口出现以下信息:

 

成功编译出first.elf。

在使用时要注意以下:

1.工程文件和源代码文件(夹)以及编译的.o文件必须在同一路径下,否则会提示Multiple Define(为什么我也不知道)

2.如果提示--- Error: failed to execute 'arm-none-eabi-gcc',说明你的工具链路径设置有问题。一定要设置为工具链安装的跟目录。如C:/SourceryCodebench/文件下是工具链,路径就应该设置为C:/SourceryCodebench/。

3.Winarm工具链不能使用,其他工具链是否能成功还不知道。



你可能感兴趣的:(嵌入式)