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

[复制链接]
 楼主| wowow 发表于 2007-4-25 00:43 | 显示全部楼层 |阅读模式
SlickEdit把针对一钟编译器的配置叫做Package,一个非标准的术语。它自带VC++/Java/Borland&nbsp;C++的多个版本的配置,<br />还有Verilog/VHDL,以及一些不常见的语言的编译器配置,但没有ARM/KeilC/DSP等嵌入式处理器的编译配置,不过由于这些编译器跟<br />标准C/C++编译器差别不是很大,可以仿照一个建立自己的配置。最简单的办法是把别人建好的配置拿来用就是了,可以跳过本节^_^。自已建的方法:<br /><br />1.File/New...选Project,下面列出一堆Project类型,是不是很多眼熟的?SlickEdit的确是想一网打尽啊。漏网的不要紧,下面还有<br /><br />个&quot;Customize...&quot;按钮。<br /><br />2.点&quot;Customize...&quot;按钮打开&quot;Customized&nbsp;Packages&quot;页面,可以对已有的Package进行修改,也可以新建一个。我们要新建,点New...<br /><br />3.我们先搞定ARM的,名字取个&quot;RVCT&nbsp;2.2&quot;,copy&nbsp;Setting&nbsp;from&nbsp;选Generic&nbsp;C/C++,即标准C/C++,不要选下面的GNU&nbsp;C/C++&nbsp;Wizard,这个<br /><br />对混合了汇编代码的Project支持得不好。(ARM系统谁不用个汇编的Starup/boot?)<br /><br />4.点确认进入Project&nbsp;Package&nbsp;for&nbsp;&quot;RVCT&nbsp;2.2&quot;页面:<br />a)Seting&nbsp;for下拉框里有Debug/Release/All&nbsp;Configuration三项,表明可以设置两个版本的编译参数。一般在ARM项目中,Debug作为用仿<br /><br />真器加载到RAM中运行的配置,Release为烧写到Flash中运行的版本,配置自然不一样。<br /><br />技巧:实际使用中发现改个参数进页面设置比较麻烦,恰好RVCT可以用via文件保存过长的编译链接选项,用scatter文件保存存贮分配,因<br /><br />此我们可以将有区别的选项放到via和scatter文件里,然后用点小技巧,将Debug和Realse里的设置设成一样的。<br /><br />b)Directories:空着就行了。要设的一般也只需要设Include目录,但RVCT&nbsp;2.2和Keil&nbsp;C8.x的编译器都知道自己的inc目录在哪,就不用设<br /><br />了。如果有用户自定义的库,把相应的include目录加进来就行,也可以加在via文件里。<br /><br />Bug:&nbsp;SlickEdit有个搞笑的Bug,添加目录的地方有一行&quot;&ltdouble&nbsp;click&nbsp;here&nbsp;to&nbsp;add&nbsp;another&nbsp;entry&gt&quot;,有时会出现多行这样的提示,以<br /><br />前老版本的还删不掉,现在2007版改进了些好,你把它关了重打开就消失了。<br /><br />c)Tools:这里是设置的重点!<br />设置举例:点Compiler,默认Debug/Release的参数设置是不一样,所以提示Select&nbsp;a&nbsp;Configuration&nbsp;to&nbsp;View&nbsp;the&nbsp;command,先选一个就<br /><br />是了,如Debug。<br /><br />将以下一行替换掉Command&nbsp;Line的内容:<br />%(RVCT22BIN)armcc.exe&nbsp;&nbsp;-c&nbsp;%i&nbsp;-o&nbsp;&quot;%bd%n.o&quot;&nbsp;&quot;%f&quot;&nbsp;--via&nbsp;viacc_%b.via<br />其含义后面再一起介绍。<br /><br />再选Release,复制同样的命令。<br />以上设置的是C/C++编译器,在Compiler下面有个&quot;*.s&quot;的子项,用来编译汇编代码的(汇编代码的扩展名在这里只能用*.s了,包括后面的<br /><br />Keil&nbsp;C的设置)。命令行用:<br />%(RVCT22BIN)armasm.exe&nbsp;&nbsp;-c&nbsp;&nbsp;-o&nbsp;&quot;%bd%n.o&quot;&nbsp;&quot;%f&quot;&nbsp;--via&nbsp;viaasm.via<br /><br />Link的命令行用:<br />%(RVCT22BIN)armlink.exe&nbsp;&nbsp;-o&nbsp;%RN_%b.axf&nbsp;&nbsp;%f&nbsp;%libs&nbsp;--via&nbsp;vialink_%b.via<br /><br />Build和Rebuil不用改动,里面用的vsbuild是SlickEdit的程序,相当于其它编译器中的make,但make文件是自动维护的。Build的功能<br /><br />是检测哪个源程序有改动,将其以及引用(include)了它的代码重新编译,然后调用link生成目标文件。Rebuil是将项目中的所有代码重新<br /><br />编译一遍,然后link成目标代码。(这个功能比ARM套件里自带的CodeWarror强,经常修改了.h文件但build时没把所有引用了这个.h的代码重新编译)<br /><br />Debug/excute在这里没啥用,不过可以设置成调用仿真软件。比如用AXD的时候设成<br />&lt路径&gtaxd.exe&nbsp;%f&nbsp;(好是这样的,后来换成Rvdeug,命令行太复杂,就没用这个功能了)<br /><br />d)Build页面:<br />Build&nbsp;System选Without&nbsp;a&nbsp;make&nbsp;file(dependencies&nbsp;automaticly&nbsp;checked)<br />Post&nbsp;Build&nbsp;Command也很有用,因为经常要把编译完后要把axf文件转成bin用于烧写,Keil里也要把目标文件转成hex<br />可以只设Release版,axf转bin的命令为:<br />%(RVCT22BIN)fromelf.exe&nbsp;--bin&nbsp;--output&nbsp;%RN_%b.bin&nbsp;%RN_%b.axf<br /><br />后面三个页面暂时可以不用管,这里只提一下<br />e)&nbsp;Compiler/Link页面:<br />Compiler将在目标2中介绍如何设置,对编译没有影响,对编写代码有帮助。<br />Define:&nbsp;暂时无视它,要用也在via&nbsp;file里设就行了<br />Libraies/Object:&nbsp;编译器自带的库不用加进来,编译器自己会找。可以把自己做的库放在这或者放在via文件里。如何做库后文介绍。<br /><br />f)Dependency:后文专门介绍<br /><br />g)Open页面:讲Keil时介绍<br /><br />解释:SlickEdit在很多地方可以使用变量,都是以%打头,其中用%()括起来的是Windows系统的环境变量,比如RVCT22BIN是ARM&nbsp;RealView安装时建的环境变量,指示了编译器的安装目录。其它以%打头的变量是SlickEdit项目相关的变量。在Command&nbsp;Line编译框的右边有个右三角的按钮,点击会列出一堆变量的定义。比如%i是在Directories页面设置的Inculde目录,%b是当前配置的名称Debug或Release,%bd是在当前项目目录建的&quot;Debug&quot;或&quot;Release&quot;目录,%n指文件名如编译main.c代表的&quot;main&quot;等等。<br /><br />via/scatter文件的使用技术。在上面的例子里我用到了5个via文件和两个scatter文件<br />via文件放在via子目录:<br />viaasm.via<br />viacc_debug.via<br />viacc_release.via<br />vialink_debug.via<br />vialink_realese.via<br />看名知义,在命令行中用%d使得debug/release版的命令行相同,命令行只含输入输出文件以及必要的参数,其它编译/链接选项都放到via文件里。<br /><br />scatter文件放在Scatter子目录:<br />Scatterdebug.sct<br />Scatter
elease.sct<br /><br />术语:Pagckage这个语似乎SlickEdit的员工对它也不满意,本意是:&quot;Package&quot;&nbsp;is&nbsp;the&nbsp;terminology&nbsp;used&nbsp;to&nbsp;describe&nbsp;a&nbsp;type&nbsp;of&nbsp;<br /><br />project.&nbsp;对于&quot;Customize&nbsp;packages&quot;&nbsp;更好的说法应该是&quot;Customize&nbsp;project&nbsp;types&quot;.<br /><br />&lt待续&gt
您需要登录后才可以回帖 登录 | 注册

本版积分规则

59

主题

649

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部

59

主题

649

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部