2010年(49)
分类: 嵌入式
2010-09-07 11:39:54
tornado编译实际上是执行工程底下的makefile,而使用的编译链是gnu的gcc。经测试,在dos命令行中直接执行make是可以完成编译的。
关于其中的gcc编译选项首先可以参考gcc的中文手册(已下载),而特殊的可以在tornad 的文档docs中对gnu的支持中找到。
wtxtcl
D:\Tornado2.0\host\src\hutils\configGen.tcl D:\Tornado2.0\target\proj\TC
执行该脚本后,生成文件:linkSyms.c、prjComps.h、prjConfig.c、prjParams.h
问题:为什么建立工程后对config.h和configall.h的修改没有作用?
在tornado里面建立工程的时候,会把对组件的配置信息记录在xxx.wpj工程文件中,而在tornado里面执行添加或删除组件时会修改xxx.wpj文件中的组件配置信息;
prjConfig.c文件很重要,它是根据用户配置的组件而生成的工程配置文件,与usrconfig.c的关系:
bootrom编译bootConfig,
vxworks命令行下编译usrConfig.c ,
vxworks集成环境(Tornado2.2)下编译prjConfig.c
linkSyms.c里面是符号信息的集合;
ccppc -g -mcpu=860 -ansi -nostdinc -fvolatile -fno-builtin -fno-for-scope -P -x assembler-
with-cpp -ID:\Tornado2.0\target\proj\TC
rnado2.0\target\h -ID:\Tornado2.0\target\config\comps\src -ID:\Tornado2.0\target\src\drv -
DCPU=PPC860 -DPRJ_BUILD -c D:\Tornado2.0\target\config\TC
vxrm D:\Tornado2.0\target\proj\TC
Generating D:\Tornado2.0\target\proj\TC
prjObjs.lst列出了用户工程.o文件
ccppc -BD:\Tornado2.0\host\x86-win32\lib\gcc-lib\ -nostdlib -r -Wl,-X \
-Wl,@D:\Tornado2.0\target\proj\TC
b\libPPC860gnuvx.a -o partialImage.o
注:prjObjs.lst里是所有的工程.o目录;libPPC860gnuvx.a是ppc860静态库文件;partialImage.o是链接出来的文件。
nmppc partialImage.o
@D:\Tornado2.0\target\proj\TC
\host\src\hutils\munch.tcl -asm ppc > ctdt.c
该脚本使得partialImage.o里的初始化先于工程.o,使得vxworks系统级的初始化比用户的初始化先执行。
copy partialImage.o tmp.o
已复制 1 个文件。
D:\Tornado2.0\host\x86-win32\bin\makeSymTbl PPC tmp.o > symTbl.c
ccppc -c -fdollars-in-identifiers -g -mcpu=860 -ansi -nostdinc -DRW_MULTI_THREAD -D_REENTR
ANT -fvolatile -fno-builtin -fno-for-scope
-ID:\Tornado2.0\target\proj\TC
o2.0\target\proj\TC
o2.0\target\proj\TC
o2.0\target\proj\TC
o2.0\target\proj\TC
target\proj\TC
target\proj\TC
h -ID:\Tornado2.0\target\h\snmp -ID:\Tornado2.0\target\config\comps\src -ID:\Tornado2.0\ta
rget\src\drv -DCPU=PPC860 -DPRJ_BUILD symTbl.c -o symTbl.o
ccppc -g -mcpu=860 -ansi -nostdinc -DRW_MULTI_THREAD -D_REENTRANT -fvolatile -fno-builtin
-fno-for-scope
-ID:\Tornado2.0\target\proj\TC
rmtask -ID:\Tornado2.0\target\proj\TC
ar_Manager -ID:\Tornado2.0\target\proj\TC
ux_SM -ID:\Tornado2.0\target\proj\TC
Ctrl -ID:\Tornado2.0\target\proj\TC
-ID:\Tornado2.0\target\proj\TC
-ID:\Tornado2.0\target\config\TC
nmp -ID:\Tornado2.0\target\config\comps\src -ID:\Tornado2.0\target\src\drv -DCPU=PPC860 -D
PRJ_BUILD -c D:\Tornado2.0\target\config\comps\src\dataSegPad.c
该文件申请了一个页,用于保护代码段,详见该文件内部的注释DESCRIPTION
ldppc -X -N -e _sysInit -Ttext 00010000 \
dataSegPad.o partialImage.o ctdt.o symTbl.o -o vxWorks
D:\Tornado2.0\host\x86-win32\bin\vxsize PPC -v 00200000 00010000 vxWorks
vxWorks: 1333300(t) + 322020(d) + 210668(b) = 1865988 (165628 unused)
其中0x00200000是内存的高址RAM_HIGH_ADRS;0x00010000是内存低址RAM_LOW_ADRS;而vxworks映像是下载到低址和高址之间的,所以vxworks大小不能大于0x00200000 -0x00010000 = 0x