现在的位置: 首页 > 综合 > 正文

QC AMSS BUILD

2012年05月17日 ⁄ 综合 ⁄ 共 2736字 ⁄ 字号 评论关闭

  编译ARM9的source有两种方式:在windows(cmd.exe)下编译 ,
在linux下编译。因为我们没有linux下的RVCT2.2的licence,所以如果要在linux环境下编译的话必须使用cygwin。下面分别
介绍这两种方式下的编译,在linux环境下的编译只稍微讲一下,基本和windows一样的。
一、cmd.exe
1) tools
     RVDS (RVCT) 2.2.1      BLD593   
     GNU make                                
     GNU awk                     3.1.4 or later
     Perl                             5.8.5 or later
     Python                        2.4.3

     注意:必须是Python2.4.3

     官方下载地址:http://www.python.org/ftp/python/2.3.4/



     RVCT安装以后必须打上官方的593的patch才能正常编译,打好patch以后执行下面的操作来使用patch的armcc来进行编译:
     cd yourmenu/ARM/RVCT/Programs/2.2/593/win_32-pentium
     cp armcc tcc
     cp armcc armcpp
     cp armcc tcpp
     除了Python
2.4.3必须单独下载安装之外,其他的工具都可以通过Cygwin打包下载。Cygwin默认的Python版本是2.5,必须使用2.4.3的版本来
替换它,默认Python会装在Cygwin的user/local/bin目录下,back一下/bin目录下的python.exe,将usr
/local/bin/python2.4.exe改名为python.exe,并且将c:/cygwin/usr/local/bin加入PATH。

2) compile
 
   1、首先修改M76XXTSNCJNLYM4725/HY11-VR356-8_4.7.25/AMSS/products/76XX/build
/ms下的然rvct22.bat,将里面的环境变量修改成正确的值(RVCT和Cygwin的安装目录) ,并添加变量ARMTOOLS =
RVCT221
     2、在cmd.exe下执行M76XXTSNCJNLYM4725/HY11-VR356-8_4.7.25/AMSS/products/76XX/build/ms/rvct22.bat   
 
   3、修改M76XXTSNCJNLYM4725/HY11-VR356-8_4.7.25/AMSS/products/76XX/build
/ms/TSNCJNLYM.cmd,去除BUILD_UNIX和USE_BUILD_NATIVELINUX_MODEM这两个编译选项
     4、在cmd.exe下进入M76XXTSNCJNLYM4725/HY11-VR356-8_4.7.25/AMSS/products/76XX/build/ms,执行TSNCJNLYM.cmd开始编译source

3)  问题
     在编译的时候会碰到三个问题,一个是python解析的时候报cp936错误,另一个就是-mno-cygwin导致的c库找不到,最后一个是Cygwin提供的YACC和FLEX在分析的时候总是致命错误退出。
     1、python
    
 去掉BUILD_UNIX这个选项以后,QC默认使用它自己提供的一个propgen.exe来解些Python,但这样会导致错误cp936错误,因
为无法修改这个可执行程序的配置,就直接在M76XXTSNCJNLYM4725/HY11-VR356-8_4.7.25/AMSS/products
/76XX/dal/dal.min里面将python的解析工具换成了cygwin的python2.4.exe。
     2、-mno-cygwin
 
   这个选项的作用就是让生成的.exe不需要依赖cygwin1.dll这个第三方库,所有的库都使用OS提供的库。因为默认使用gcc在
cygwin下编译出的可执行程序都是依赖cygwin1.dll的。要想生成的应用程序不依赖cygwin1.dll,在编译的时候指定这个选项就可以
了。但是指定这个选项以后cygwin默认不再使用它提供的标准库,而使用mingw提供的标准库进行编译,如果你的Cygwin没有正确安装mingw
的库的话,就会报找不到头文件的错误。详细的文档可以参考这里:http://www.delorie.com/howto/cygwin/mno-cygwin-howto.html

     解决这个问题的方法要么就是正确安装mingw的标准库,另外就是去掉这个编译选项。在这里我去掉了这个编译选项,并把cygwin1.dll的路径加入了PATH。
    3、YACC/FLEX
   
这个问题是陈琦解决的,方法就是使用标准linux机器里面的YACC/FLEX工具生成相应的.c和.h文件,然后将相应的文件拷到相应目录下就可以
了,然后修改products/76XX/secboot/cfg_data/Config_Gen.mak,去除里面对FLACC和FLEX的使用,并
删除clean规则中对生成文件的删除。

二、Cygwin
1) tools 同上
2) compile
 
   1、首先修改M76XXTSNCJNLYM4725/HY11-VR356-8_4.7.25/AMSS/products/76XX/build
/ms下的然rvct22.bat,将里面的环境变量修改成正确的值(RVCT和Cygwin的安装目录) ,并添加变量ARMTOOLS =
RVCT221
     2、在cmd.exe下执行M76XXTSNCJNLYM4725/HY11-VR356-8_4.7.25/AMSS/products/76XX/build/ms/rvct22.bat   
     3、在cmd.exe下进入M76XXTSNCJNLYM4725/HY11-VR356-8_4.7.25/AMSS/products/76XX/build/ms,执行bash ./TSNCJNLYM.cmd开始编译source
3) 问题
1、因为BUILD_UNIX=yes,所以makefile会选择cifc和hostdl_gen这两个linux可执行程序,而cgywin环境不认
识linux的可执行程序,所以直接把这两个程序干掉,makefile会自动选择cifc.exe和hostdl_gen.exe来代替。
2、同上 3)

抱歉!评论已关闭.