VxWorks組件技術(shù)的研究
1.組件概述
VxWorks的配置和裁剪是以組件為基本單位。組件是VxWorks相對(duì)獨(dú)立和完整的一個(gè)功能模塊,也是系統(tǒng)中最小的、可升級(jí)的單元,它通常不再包含子節(jié)點(diǎn)。
VxWorks用CDF文件來描述系統(tǒng)中的組件。CDF(Common Data Format)稱作通用數(shù)據(jù)格式文件,是一種用于存儲(chǔ)數(shù)據(jù)、訪問多維數(shù)據(jù)集的文件格式。CDF文件的后綴為.cdf,用戶可以使用CDF文件非常方便地定義系統(tǒng)的特征參數(shù),描述一個(gè)組件,并將其配置到不同的系統(tǒng)中。
使用組件技術(shù),使用用戶在開發(fā)過程中能夠高效構(gòu)建VxWorks系統(tǒng),避免傳統(tǒng)構(gòu)造頭文件帶來的低效、復(fù)雜、易出錯(cuò)等缺點(diǎn)。而且,Tornado 2.x的圖形配置工具和工程管理工具增強(qiáng)了組件相互依賴的可視性。
2.組件構(gòu)成
組件實(shí)際上是一個(gè)功能部件具體實(shí)現(xiàn)部分的描述信息,它定義了與組件相關(guān)的源代碼或目標(biāo)代碼、集成信息以及與組件相關(guān)的參數(shù)。組件包含以下元素:
(1)NAME:一個(gè)可讀的名稱,在工程組件管理器中出現(xiàn)在組件圖標(biāo)旁邊。
(2)SYNOPSIS:對(duì)組件的簡(jiǎn)潔的描述。
(3)MODULES:與組件關(guān)聯(lián)的目標(biāo)文件。
(4)HDR_FILES:使用該組件時(shí)需要用到的相關(guān)頭文件。
(5)CFG_PARAMS:與組件相關(guān)的一些配置參數(shù),通常為一系列的宏。
3.組件描述文件的讀取順序
組件描述文件必須有.cdf后綴。所有的CDF文件名稱以兩個(gè)十進(jìn)制數(shù)字開始(即00xxxx.cdf),開始的這兩個(gè)數(shù)字控制一個(gè)目錄中CDF文件讀取順序。
組件描述文件通常在工程創(chuàng)建時(shí)被讀取,如果兩個(gè)文件描述同一組件的同樣特征,則它將讀取后一個(gè)而不考慮以前的。優(yōu)先權(quán)通常以兩種約定方式建立:
(1)CDF文件存放在確定目錄下。這些目錄以如下順序讀取:
<1>$(WIND_BASE)\target\config\comps\VxWorks:包含一些通用組件;
<2>$(WIND_BASE)\target\config\comps\VxWorks\arch\arch:包含特定體系結(jié)構(gòu)的組件;
<3>$(WIND_BASE)\target\config\bsp:包含特定BSP的組件;
<4>工程目錄:包含該工程的一些特定組件。
(2)在同一目錄下,文件頭部的兩個(gè)數(shù)字決定讀取順序。
4.組件的封裝規(guī)則
Wind River公司將部分組件安裝在其傳統(tǒng)位置上。
(1)源碼模塊可在target/src或target/config目錄下找到。
(2)標(biāo)題頭至于target/h中;目標(biāo)模塊在target/lib/objARCH中。
(3)組件描述文件在target/config/comps/VxWorks中。
(4)組件配置文件(源碼片段)位于target/config/copms/src。
第三方受限于這些規(guī)定,組件元素在組件描述文件中完全給出。建議第三方把組件源和目標(biāo)元素置于一個(gè)特定目錄下,如target/config/vendor_name。組件描述文件(CDF)的位置取決于組件集成在系統(tǒng)中的位置。
若要在一個(gè)完整系統(tǒng)中集成新的組件,CDF應(yīng)該置于target/config/comps/VxWorks目錄下。凡是在該文件夾下的說明這些配置通用于各種BSP。
若它是一個(gè)BSP特定組件,則應(yīng)該放在BSP目錄下,表示它是針對(duì)當(dāng)前BSP的特殊配置。若其特別服務(wù)一個(gè)單一工程,則它放在工程目錄(target/proj/project_name)下。
第三方組件不允許覆蓋WindRiver支持的文件,但可在其自身組件描述文件中忽略Wind River的組件描述。
5.組件的可視化
Vxworks通過CDF文件為Tornado配置工具提供了BSP的配置信息。Tornado集成開發(fā)環(huán)境使用CDF文件把文件夾、組件、參數(shù)、選項(xiàng)文件夾等配置項(xiàng)構(gòu)建成VxWorks系統(tǒng)的配置樹,通過VxWorks組件管理器界面供用戶查看和修改。
一旦我們創(chuàng)建了一個(gè)新的組件,那么在Tornado的VxWorks組件管理器中可以展開組件樹,找到新定義的組件,然后選擇配置或裁減。
(1)通過選擇include/exclude實(shí)現(xiàn)裁剪。在開發(fā)一個(gè)BSP的初期,往往需要裁減掉一些高級(jí)功能支持,先構(gòu)建一個(gè)支持時(shí)鐘中斷的最小內(nèi)核。調(diào)試通過后,逐步增加高級(jí)功能模塊組件支持,最后開發(fā)出一個(gè)功能相對(duì)完整的VxWorks操作系統(tǒng)。
(2)通過修改屬性參數(shù)(選項(xiàng))實(shí)現(xiàn)配置。例如我們可能要到“VxWorks->hardware->memory->BSPMemory Configuration”中去修改一些內(nèi)存配置相關(guān)的宏。
當(dāng)然,一切都是代碼或腳本描述的,IDE只是一種可視化交互編輯環(huán)境。在Tornado運(yùn)行期間,試圖去修改腳本或代碼可能不會(huì)實(shí)時(shí)同步體現(xiàn)到Tornado中,此時(shí)先關(guān)閉Tornado,修改完源文件再開啟Tornado重新加載,即可看到修改后的結(jié)果。在Tornado IDE中配置或裁減組件,在合適的時(shí)候(dependency or build)會(huì)反饋到源文件代碼中。
Tornado工程配置工具把收集到的用戶配置信息反饋體現(xiàn)到工程的相關(guān)源文件中,從而實(shí)現(xiàn)了VxWorks的自動(dòng)配置和裁剪。組件包含開關(guān)宏(COMPONENTS INCLUDED)和宏參數(shù)(PARAMETERS)將體現(xiàn)在動(dòng)態(tài)生成的prjParams.h和prjComps.h文件中。prjParams.h通常被config.h包含,prjComps.h將被target\config\comps\src\configAll.h包含。