VxWorks的一個優(yōu)勢就是它為應(yīng)用代碼提供了高度的架構(gòu)和硬件獨立性。這種可移植性得益于VxWorks的模塊化設(shè)計, 而這種模塊化設(shè)計將所有硬件相關(guān)的功能函數(shù)分離到了一套稱為板級支持包(BSP)的庫中。BSP庫為所有開發(fā)板的硬件相關(guān)功能提供了一個一致的接口。 這些功能包括硬件初始化, 中斷處理, 中斷產(chǎn)生, 硬時鐘和Timer管理, 本地和總線內(nèi)存空間的映射, 以及內(nèi)存尺寸控制等等。
總的來說, 有如下幾種類型的VxWorks移植:
A. 宿主移植: 將Tornado和VxWorks的開發(fā)能力移植到一個以前不支持的宿主機(jī)上。
B. 架構(gòu)移植: 將VxWorks 和Tornado 調(diào)試器移植到一個以前不支持的目標(biāo)處理器或架構(gòu)上。
C. 板級移植: 將VxWorks 移植到一個新的目標(biāo)板上, 在此之前應(yīng)該已經(jīng)有了宿主移植和架構(gòu)移植。
D. 升級pre-Tornado BSPs 使之工作于Tornado 平臺。
E. 移植一個可選的部件。
宿主移植和架構(gòu)移植需要訪問全部的VxWorks源代碼, 超出了本文的范圍。 板級移植是我們要討論的重點, 板級移植只需要訪問VxWorks中硬件相關(guān)的那部分源代碼(BSP)和調(diào)試器。
多年以來, 風(fēng)河公司(Wind River)能夠提供給客戶各種BSP, 然而, 隨著許多新的CPU板的大批流行, 尤其是許多客戶自己設(shè)計的CPU板的大量出現(xiàn), 使得風(fēng)河已經(jīng)不能夠跟上市場對于新的BSP的需求。
本書就是為了解決這個問題, 本書旨在幫住你創(chuàng)建、測試新的BSP、部件和項目。 移植VxWorks到一個新的板子上是一件非常有挑戰(zhàn)性的工作, 尤其是只有在移植完成后那些VxWorks開發(fā)工具才能夠被使用的時候。根據(jù)本書的策略可以使移植變得簡單一點。本書提供了移植策略和系統(tǒng)元件如何相互作用的詳細(xì)描述, 本書也包括了基于Tornado2.0來創(chuàng)建和發(fā)布部件或項目所需要的 技術(shù)信息。
本書所涉及的BSP 工具集與Tornado 2.0 或更高版本兼容, 升級早期的BSP 使之工作于Tornado 2.0 是相當(dāng)容易的, 參考A。升級一個BSP到Tornado 下。
1.1 Tornado 2.0 的新特性介紹:
SCSI 1 廢止: 對于SCSI-1 驅(qū)動和庫的支持已經(jīng)被廢止, 雖然這些庫仍然被包括在Tornado2.0 中,但是它們已經(jīng)被列為廢除并且不會被包括在將來的版本中。
宏 TYCO5_2被刪除:TYCO5_2這個宏不再被支持, 客戶應(yīng)當(dāng)使用Tornado 2.0 下的SIO驅(qū)動 。
BSP封裝被變更: 參考10。2 BSP封裝, P???頁以獲得更詳細(xì)的關(guān)于封裝要求的描述。 參考O。BSP產(chǎn)品內(nèi)容以獲得一個典型產(chǎn)品內(nèi)容的的快速總結(jié)。
文檔: 所有的在線文檔現(xiàn)在是以HTML格式提供, 在系統(tǒng)中包含了一個稱為refgen的工具,用來從現(xiàn)存的nroff輸入產(chǎn)生HTML頁。
VxWorks網(wǎng)絡(luò)協(xié)議棧:VxWorks網(wǎng)絡(luò)協(xié)議棧是Tornado 1.0.1 用戶的可選部件, 現(xiàn)在是唯一被Winriver 支持的協(xié)議棧。 所有的BSP現(xiàn)在都使用為VxWorks網(wǎng)絡(luò)協(xié)議棧而修改的驅(qū)動程序。 VxWorks網(wǎng)絡(luò)協(xié)議棧是基于BSD 44 協(xié)議棧的。在BSP中 BSD44 和 END 驅(qū)動都可被使用。END驅(qū)動是BSP的缺省驅(qū)動。
新的驅(qū)動: 許多新的END網(wǎng)絡(luò)驅(qū)動已經(jīng)被加入到驅(qū)動產(chǎn)品中來以便使盡可能多的產(chǎn)品擁有至少一個可用的END 驅(qū)動。
集成的模擬器: Tornado 2.0包括一個集成的模擬器, 它允許開發(fā)人員在硬件環(huán)境就續(xù)以前就能夠開始應(yīng)用的開發(fā)。
集成的WindView:Tornado 2.0包括一個集成的WindView 工具, 用來檢查運行時的行為, 參考 <<WindView User’s Guide>> 來了解更多關(guān)于WindView的特性。
VTS 測試更新: VTS(驗證測試套件)有了微小的升級以便使它能夠正確地工作于target shell 的新的虛擬輸入輸出特性。
SCSI 測試套件: SCSI性能測試套件在以前的移植工具中被忽略了, 現(xiàn)在可用。
ROM_WARM_ADRS 這個新宏被引入到BSP模板和一些BSP中, 它代表進(jìn)入到boot ROM 代碼的熱啟動入口, 它被用來去除基于不同CPU家族所手工計算出來的入口地址。 正常情況下, ROM_WARM_ADRS是基于一個來自于ROM_TEXT_ADRS的偏移, 例如:
#define ROM_WARM_ADRS (ROM_TEXT_ADRS + 8)
新的SIO IOCTLs: 新的SIO IOCTL 代碼用來支持modem控制線路。 IOCTLs 例如SIO_OPEN和SIO_HUP當(dāng)設(shè)備被打開和關(guān)閉時通知驅(qū)動程序。 而SIO_HW_OPTS_SET 和SIO_HW_OPTS_GET允許用戶管理字符長度、奇偶、停止位和modem 控制線路。 可選位 CLOCAL 禁止了modem 控制線路在驅(qū)動程序中的使用, 為了保持向后兼容性, CLOCAL選項在Wind River BSP中默認(rèn)是選擇的。
Target.txt 文件被刪除: 文本格式的target.nr 文件(為Windows 宿主用戶而產(chǎn)生)已經(jīng)被刪除了, 目前UNIX 和WINDOWS平臺均使用瀏覽器來閱讀HTML格式的文檔。 宿主工具refgen取得nroff的輸入并且產(chǎn)生HTML的輸出。
1.2 進(jìn)行BSP開發(fā)的一些先決條件:
首先, 你應(yīng)當(dāng)有底層C和匯編語言的知識, 熟悉設(shè)備驅(qū)動, 熟悉中斷, 最好具有同硬件接口的軟件開發(fā)經(jīng)驗, 另外, 你應(yīng)當(dāng)熟悉Tornado開發(fā)工具或者至少已經(jīng)讀過了Tornado用戶指南。最后, 你應(yīng)當(dāng)有一個基于你的目標(biāo)系統(tǒng)上所用的CPU的參考BSP, 這可以節(jié)省你的大量時間。
你也應(yīng)當(dāng)有一個適用于你的項目架構(gòu)的模板BSP,以及模板驅(qū)動程序, 大部分客戶購買一個或多個設(shè)備驅(qū)動程序的源代碼。