原创 在RealView MDK中使用GNU工具链方法详解

2009-3-2 17:58 6001 7 9 分类: MCU/ 嵌入式

要想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这个网站是个好网站,上面有很多人的问答,就是一个知识库,找什么几乎都有。

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户1359795 2009-3-2 17:11

ARM板?可以呀。不过你要自己焊。

用户177011 2009-3-2 15:09

学长是不是应该送我一套板子啊。。都是arm工程师了,可板子都没有。。。
相关推荐阅读
用户1359795 2010-09-08 11:27
如何有效利用FPGA中的触发器
    本文是《我不是只懂verilog语法》系列文章的第一篇,今后我会根据我的开发经历,介绍一些FPGA优化设计的经验。作者水平有限,难免有考虑不周全的地方,希望大家可以指出。另外,如果有人希望转载...
用户1359795 2010-09-07 17:27
C6能比C8快多少(Altera的FPGA速度等级)
    很小白地说,Altera的同一型号FPGA一般会提供若干个速度等级供选用(如cyclone 2系列器件提供3个速度等级),在FPGA芯片的名字中就有体现。    就比如说我所用的EP2C20F...
用户1359795 2009-05-05 20:45
Cyclone II的A系列器件
       今天在进行FPGA器件的选型,在看到Cyclone II器件的时候,感到有个地方非常奇怪,同为EP2C20,却有两个版本,一个是EP2C20,还且个是EP2C20A。这个A是从哪来的,真...
用户1359795 2009-03-02 17:59
TS101的链式DMA操作方法
       最近在用TS101进行采集图像数据,需要将FPGA内建的双口RAM里的数据通过FLYBY的方式读到SDRAM里。这就要用到DMA了。       FLYBY这个东西是个好东西,可以通过D...
用户1359795 2009-02-24 22:23
谈谈这几天调板子遇到的问题
    这几天在调一个蛮复杂的板子。现在我还是个小菜鸟,这是我碰到的最复杂的一个板子啦。从前我做的东西都很山寨,常常都是在通用板或是高频板上面焊东东,只是些简单的MCU电路或是运放、AD/DA之类的东...
EE直播间
更多
我要评论
2
7
关闭 站长推荐上一条 /3 下一条