Tornado編譯vxworks本質及過程

2021-07-30 02:40:41 字數 3971 閱讀 6968

tornado編譯vxworks本質及過程

本文**:

tornado編譯實際上是執行工程底下的makefile,而使用的編譯鏈是gnu的gcc。經測試,在dos命令列中直接執行make是可以完成編譯的(將tornado中make.exe的路徑新增到環境變數中,如c:\tornado2.2\host\x86-win32\bintornado\host\x86-win32\bin即tornado 的可執行程式的路徑,這樣只要在dos介面中找到makefile檔案所在的路徑,然後使用make命令就可以編譯了)。

wtxtcl d:\tornado2.0\host\src\hutils\configgen.tcl d:\tornado2.0\target\proj\tc1600a\tc160

0a.wpj

執行該指令碼後,生成檔案:linksyms.c、prjcomps.h、prjconfig.c、prjparams.h

問題:為什麼建立工程後對config.h和configall.h的修改沒有作用?

在tornado裡面建立工程的時候,會把對元件的配置資訊記錄在***.wpj工程檔案中,而在tornado裡面執行新增或刪除元件時會修改***.wpj檔案中的元件配置資訊;

prjconfig.c檔案很重要,它是根據使用者配置的元件而生成的工程配置檔案,與usrconfig.c的關係:

bootrom編譯bootconfig,

1 i6 }1 `1 o& wvxworks命令列下編譯usrconfig.c ,

0 r( @4 l+ c7 v5 x) u1 r# ~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\tc1600a -id:\tornado2.0\target\config\tc1600a -id:\to

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\tc1600a\sysalib.s -o sysalib.o

vxrm d:\tornado2.0\target\proj\tc1600a\prjobjs.lst

generating d:\tornado2.0\target\proj\tc1600a\prjobjs.lst...

prjobjs.lst列出了使用者工程.o檔案

ccppc -bd:\tornado2.0\host\x86-win32\lib\gcc-lib\ -nostdlib -r -wl,-x \

-wl,@d:\tornado2.0\target\proj\tc1600a\prjobjs.lst  version.o  d:\tornado2.0\target\li

b\libppc860gnuvx.a -o partialimage.o

nmppc partialimage.o @d:\tornado2.0\target\proj\tc1600a\prjobjs.lst | wtxtcl d:\tornado2.0

\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\tc1600a -id:\tornad

o2.0\target\proj\tc1600a\datar_manager -id:\tornado2.0\target\proj\tc1600a\eos -id:\tornad

o2.0\target\proj\tc1600a\fomux_sm -id:\tornado2.0\target\proj\tc1600a\hdlcctrl -id:\tornad

o2.0\target\proj\tc1600a\lcdctrl -id:\tornado2.0\target\proj\tc1600a\snmp -id:\tornado2.0\

target\proj\tc1600a\smagent -id:\tornado2.0\target\proj\tc1600a\rtl8366sr -id:\tornado2.0\

target\proj\tc1600a\testctrl -id:\tornado2.0\target\config\tc1600a -id:\tornado2.0\target\

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\tc1600a -id:\tornado2.0\target\proj\tc1600a\ala

ar_manager -id:\tornado2.0\target\proj\tc1600a\eos -id:\tornado2.0\target\proj\tc1600a\fom

ux_sm -id:\tornado2.0\target\proj\tc1600a\hdlcctrl -id:\tornado2.0\target\proj\tc1600a\lcd

ctrl -id:\tornado2.0\target\proj\tc1600a\snmp -id:\tornado2.0\target\proj\tc1600a\smagent

-id:\tornado2.0\target\proj\tc1600a\rtl8366sr -id:\tornado2.0\target\proj\tc1600a\testctrl

-id:\tornado2.0\target\config\tc1600a -id:\tornado2.0\target\h -id:\tornado2.0\target\h\s

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

l***c -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)

01 tornado練習 tornado簡介

coding utf 8 啟動乙個tornado的web服務 import tornado.web from tornado.options import define,options 定義tornado.options能夠從命令列中讀取的命令 此處定義乙個port,預設值為8000,使用optio...

Vmware中執行起了多個個Vxworks

前提 已經在vmware中執行起了乙個vxworks。這裡執行兩個vxworks的困難在於 1 同乙個host,要支撐兩個vxworks的訪問,這裡要涉及ip位址 bootrom vxworks映像的共同使用問題。2 網絡卡設定 目前未解決正在嘗試 以上來自但該帖沒有解決辦法。什麼問題呢?網絡卡!怎...

故障處理 vxwork 大端序和變數指標

1.問題描述 有如下函式 int my read reg euint16 slot,euint16 chip,euint16 reg,euint16 pvalue 在vxwork shell 上敲入如下命令 buf malloc 2 my read reg 0,0,0x44,buf buf 的值是0...