打印

使用SlickEdit编写、编译ARM/KeilC代码(二)

[复制链接]
3546|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wowow|  楼主 | 2007-4-25 00:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
SlickEdit把针对一钟编译器的配置叫做Package,一个非标准的术语。它自带VC++/Java/Borland C++的多个版本的配置,
还有Verilog/VHDL,以及一些不常见的语言的编译器配置,但没有ARM/KeilC/DSP等嵌入式处理器的编译配置,不过由于这些编译器跟
标准C/C++编译器差别不是很大,可以仿照一个建立自己的配置。最简单的办法是把别人建好的配置拿来用就是了,可以跳过本节^_^。自已建的方法:

1.File/New...选Project,下面列出一堆Project类型,是不是很多眼熟的?SlickEdit的确是想一网打尽啊。漏网的不要紧,下面还有

个"Customize..."按钮。

2.点"Customize..."按钮打开"Customized Packages"页面,可以对已有的Package进行修改,也可以新建一个。我们要新建,点New...

3.我们先搞定ARM的,名字取个"RVCT 2.2",copy Setting from 选Generic C/C++,即标准C/C++,不要选下面的GNU C/C++ Wizard,这个

对混合了汇编代码的Project支持得不好。(ARM系统谁不用个汇编的Starup/boot?)

4.点确认进入Project Package for "RVCT 2.2"页面:
a)Seting for下拉框里有Debug/Release/All Configuration三项,表明可以设置两个版本的编译参数。一般在ARM项目中,Debug作为用仿

真器加载到RAM中运行的配置,Release为烧写到Flash中运行的版本,配置自然不一样。

技巧:实际使用中发现改个参数进页面设置比较麻烦,恰好RVCT可以用via文件保存过长的编译链接选项,用scatter文件保存存贮分配,因

此我们可以将有区别的选项放到via和scatter文件里,然后用点小技巧,将Debug和Realse里的设置设成一样的。

b)Directories:空着就行了。要设的一般也只需要设Include目录,但RVCT 2.2和Keil C8.x的编译器都知道自己的inc目录在哪,就不用设

了。如果有用户自定义的库,把相应的include目录加进来就行,也可以加在via文件里。

Bug: SlickEdit有个搞笑的Bug,添加目录的地方有一行"<double click here to add another entry>",有时会出现多行这样的提示,以

前老版本的还删不掉,现在2007版改进了些好,你把它关了重打开就消失了。

c)Tools:这里是设置的重点!
设置举例:点Compiler,默认Debug/Release的参数设置是不一样,所以提示Select a Configuration to View the command,先选一个就

是了,如Debug。

将以下一行替换掉Command Line的内容:
%(RVCT22BIN)armcc.exe  -c %i -o "%bd%n.o" "%f" --via viacc_%b.via
其含义后面再一起介绍。

再选Release,复制同样的命令。
以上设置的是C/C++编译器,在Compiler下面有个"*.s"的子项,用来编译汇编代码的(汇编代码的扩展名在这里只能用*.s了,包括后面的

Keil C的设置)。命令行用:
%(RVCT22BIN)armasm.exe  -c  -o "%bd%n.o" "%f" --via viaasm.via

Link的命令行用:
%(RVCT22BIN)armlink.exe  -o %RN_%b.axf  %f %libs --via vialink_%b.via

Build和Rebuil不用改动,里面用的vsbuild是SlickEdit的程序,相当于其它编译器中的make,但make文件是自动维护的。Build的功能

是检测哪个源程序有改动,将其以及引用(include)了它的代码重新编译,然后调用link生成目标文件。Rebuil是将项目中的所有代码重新

编译一遍,然后link成目标代码。(这个功能比ARM套件里自带的CodeWarror强,经常修改了.h文件但build时没把所有引用了这个.h的代码重新编译)

Debug/excute在这里没啥用,不过可以设置成调用仿真软件。比如用AXD的时候设成
<路径>axd.exe %f (好是这样的,后来换成Rvdeug,命令行太复杂,就没用这个功能了)

d)Build页面:
Build System选Without a make file(dependencies automaticly checked)
Post Build Command也很有用,因为经常要把编译完后要把axf文件转成bin用于烧写,Keil里也要把目标文件转成hex
可以只设Release版,axf转bin的命令为:
%(RVCT22BIN)fromelf.exe --bin --output %RN_%b.bin %RN_%b.axf

后面三个页面暂时可以不用管,这里只提一下
e) Compiler/Link页面:
Compiler将在目标2中介绍如何设置,对编译没有影响,对编写代码有帮助。
Define: 暂时无视它,要用也在via file里设就行了
Libraies/Object: 编译器自带的库不用加进来,编译器自己会找。可以把自己做的库放在这或者放在via文件里。如何做库后文介绍。

f)Dependency:后文专门介绍

g)Open页面:讲Keil时介绍

解释:SlickEdit在很多地方可以使用变量,都是以%打头,其中用%()括起来的是Windows系统的环境变量,比如RVCT22BIN是ARM RealView安装时建的环境变量,指示了编译器的安装目录。其它以%打头的变量是SlickEdit项目相关的变量。在Command Line编译框的右边有个右三角的按钮,点击会列出一堆变量的定义。比如%i是在Directories页面设置的Inculde目录,%b是当前配置的名称Debug或Release,%bd是在当前项目目录建的"Debug"或"Release"目录,%n指文件名如编译main.c代表的"main"等等。

via/scatter文件的使用技术。在上面的例子里我用到了5个via文件和两个scatter文件
via文件放在via子目录:
viaasm.via
viacc_debug.via
viacc_release.via
vialink_debug.via
vialink_realese.via
看名知义,在命令行中用%d使得debug/release版的命令行相同,命令行只含输入输出文件以及必要的参数,其它编译/链接选项都放到via文件里。

scatter文件放在Scatter子目录:
Scatterdebug.sct
Scatter elease.sct

术语:Pagckage这个语似乎SlickEdit的员工对它也不满意,本意是:"Package" is the terminology used to describe a type of 

project. 对于"Customize packages" 更好的说法应该是"Customize project types".

<待续>

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

59

主题

649

帖子

3

粉丝