VxWorks元件技術的研究
1.元件概述
VxWorks的配置和裁剪是以元件為基本機關。元件是VxWorks相對獨立和完整的一個功能子產品,也是系統中最小的、可更新的單元,它通常不再包含子節點。
VxWorks用CDF檔案來描述系統中的元件。CDF(Common Data Format)稱作通用資料格式檔案,是一種用于存儲資料、通路多元資料集的檔案格式。CDF檔案的字尾為.cdf,使用者可以使用CDF檔案非常友善地定義系統的特征參數,描述一個元件,并将其配置到不同的系統中。
使用元件技術,使用使用者在開發過程中能夠高效建構VxWorks系統,避免傳統構造頭檔案帶來的低效、複雜、易出錯等缺點。而且,Tornado 2.x的圖形配置工具和工程管理工具增強了元件互相依賴的可視性。
2.元件構成
元件實際上是一個功能部件具體實作部分的描述資訊,它定義了與元件相關的源代碼或目标代碼、內建資訊以及與元件相關的參數。元件包含以下元素:
(1)NAME:一個可讀的名稱,在工程元件管理器中出現在元件圖示旁邊。
(2)SYNOPSIS:對元件的簡潔的描述。
(3)MODULES:與元件關聯的目标檔案。
(4)HDR_FILES:使用該元件時需要用到的相關頭檔案。
(5)CFG_PARAMS:與元件相關的一些配置參數,通常為一系列的宏。
3.元件描述檔案的讀取順序
元件描述檔案必須有.cdf字尾。所有的CDF檔案名稱以兩個十進制數字開始(即00xxxx.cdf),開始的這兩個數字控制一個目錄中CDF檔案讀取順序。
元件描述檔案通常在工程建立時被讀取,如果兩個檔案描述同一元件的同樣特征,則它将讀取後一個而不考慮以前的。優先權通常以兩種約定方式建立:
(1)CDF檔案存放在确定目錄下。這些目錄以如下順序讀取:
<1>$(WIND_BASE)\target\config\comps\VxWorks:包含一些通用元件;
<2>$(WIND_BASE)\target\config\comps\VxWorks\arch\arch:包含特定體系結構的元件;
<3>$(WIND_BASE)\target\config\bsp:包含特定BSP的元件;
<4>工程目錄:包含該工程的一些特定元件。
(2)在同一目錄下,檔案頭部的兩個數字決定讀取順序。
4.元件的封裝規則
Wind River公司将部分元件安裝在其傳統位置上。
(1)源碼子產品可在target/src或target/config目錄下找到。
(2)标題頭至于target/h中;目标子產品在target/lib/objARCH中。
(3)元件描述檔案在target/config/comps/VxWorks中。
(4)元件配置檔案(源碼片段)位于target/config/copms/src。
第三方受限于這些規定,元件元素在元件描述檔案中完全給出。建議第三方把元件源和目标元素置于一個特定目錄下,如target/config/vendor_name。元件描述檔案(CDF)的位置取決于元件內建在系統中的位置。
若要在一個完整系統中內建新的元件,CDF應該置于target/config/comps/VxWorks目錄下。凡是在該檔案夾下的說明這些配置通用于各種BSP。
若它是一個BSP特定元件,則應該放在BSP目錄下,表示它是針對目前BSP的特殊配置。若其特别服務一個單一工程,則它放在工程目錄(target/proj/project_name)下。
第三方元件不允許覆寫WindRiver支援的檔案,但可在其自身元件描述檔案中忽略Wind River的元件描述。
5.元件的可視化
Vxworks通過CDF檔案為Tornado配置工具提供了BSP的配置資訊。Tornado內建開發環境使用CDF檔案把檔案夾、元件、參數、選項檔案夾等配置項建構成VxWorks系統的配置樹,通過VxWorks元件管理器界面供使用者檢視和修改。
一旦我們建立了一個新的元件,那麼在Tornado的VxWorks元件管理器中可以展開元件樹,找到新定義的元件,然後選擇配置或裁減。
(1)通過選擇include/exclude實作裁剪。在開發一個BSP的初期,往往需要裁減掉一些進階功能支援,先建構一個支援時鐘中斷的最小核心。調試通過後,逐漸增加進階功能子產品元件支援,最後開發出一個功能相對完整的VxWorks作業系統。
(2)通過修改屬性參數(選項)實作配置。例如我們可能要到“VxWorks->hardware->memory->BSPMemory Configuration”中去修改一些記憶體配置相關的宏。
當然,一切都是代碼或腳本描述的,IDE隻是一種可視化互動編輯環境。在Tornado運作期間,試圖去修改腳本或代碼可能不會實時同步展現到Tornado中,此時先關閉Tornado,修改完源檔案再開啟Tornado重新加載,即可看到修改後的結果。 在Tornado IDE中配置或裁減元件,在合适的時候(dependency or build)會回報到源檔案代碼中。
Tornado工程配置工具把收集到的使用者配置資訊回報展現到工程的相關源檔案中,進而實作了VxWorks的自動配置和裁剪。元件包含開關宏(COMPONENTS INCLUDED)和宏參數(PARAMETERS)将展現在動态生成的prjParams.h和prjComps.h檔案中。prjParams.h通常被config.h包含,prjComps.h将被target\config\comps\src\configAll.h包含。代碼詳情可參考《VxWorks BSP for Intel's IXDP425(ARM)》裡面的target目錄。
參考:
《VxWorks程式開發實踐》
3.1.2 VxWorks元件介紹
10.1.3 CDF元件定制
《VxWorks核心、裝置驅動與BSP開發詳解》
4.2 管理元件
第24章 珠聯璧合——BSP與開發環境的結合
《Vxworks下裝置驅動程式及bsp開發指南》
第10章 VxWorks作業系統配置