要想在RealView MDK中使用GNU工具链,首先要明白RealView MDK中是没有GNU的工具的,需要另外地安装。下面就介绍一下如何安装使用,以及一些错误的DEBUG方法。
1、 先在网上下载一个GNU FOR ARM的工具。这里可以提供一下地址:http://www.gnuarm.com/bu-2.16.1_gcc-4.1.0-c-c++_nl-1.14.0_gi-6.4.exe 用这个地址下载,然后安装。这是4.1版本的,新一点的我也试过,不过好像不行。为什么不行我也不知道,希望大家能仔细研究给我一个答案。
2、 安装好后,打开Keil,点击Profect-Component Enviroment Books,选Folder/Extensions选项卡,进行如下图设置:
这里假设你将GNUARM装在C:\Program Files\GNUARM目录下,如果装在不同目录请按你的目录修改。上面的那个GNU-Tool-Prefig要写arm-elf-。记得噢。
3、 修改完这些以后,新建一个工程,芯片选LPC2132,然后加入STARTUP.S。再写一个main.c,写一个最简单的死循环程序:
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
int main(void)
{
while(1);
}
4、 然后你一编译,发现不能通过,分析错误主要有两个问题,一个是关于什么hardware FP的,另一个是关于什么_start地址的。第一个问题很好解决。点Profect-Options for target ‘target 1’ ,点选Assembler选项卡,就是汇编器的意思。进行如下图所示:
所做的改动就是将MISC Controls中添加了-mno-fpu。这么改的目地是告诉编译器这个片子不支持浮点运算,用软件进行浮点运算就得了。
5、 改完之后再编译一遍,发现错误的确少了一点。下面来解决_start地址混乱的问题。其实这个问题有点非主流,好像是什么Keil这个软件和GNUARM没有商量好才有的。不过也有解决的方法。
我的ReilView MDK安装在C:\Keil目录下,我就从C:\Keil\ARM\GNU目录下找到一个文件,文件名为:LinkerScript.ld。复制到我的工程目录下。然后点Profect-Options for target ‘target 1’ ,点选Linker选项卡,就是连接器的意思进行如下图设置:
其实我所做的就是点Link Script右边的…按钮,找到工程目录下的LinkerScript.ld文件,然后把Do not use Standard System Startup File前面的勾勾给弄掉。
然后你再编译一下,这下就好了,世界太平了,一个错误也没了,呵呵。
下面秀一张图:
没有错误,通过了。
不过现在能不能编译出可以运行的代码,我的心里还没有底,我手头上没有硬件,所以不知道,大家试一试。
附上解决这个问题时找到的一些网页,希望大家多看看。我只告诉大家怎么做,这些网页告诉大家为什么这样做,而且遇到新问题的解决方法。
http://www.mcuzone.com/bbs/dispbbs.asp?boardid=7&replyid=7859&id=1304&skin=0&page=1&star=2
http://www.keil.com/support/docs/2851.htm
http://www.keil.com/arm/gnu.asp
http://www.keil.com/forum/docs/thread7576.asp
http://www.keil.com这个网站是个好网站,上面有很多人的问答,就是一个知识库,找什么几乎都有。
用户1359795 2009-3-2 17:11
用户177011 2009-3-2 15:09