當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀]VxWorks是嵌入式實時操作系統(tǒng),具有高性能、可裁減性好等特點,能支持多種微處理器(如PowerPC、X85、ARM、SPARC);自問世以來,以其良好的町靠性和卓越的實時性被廣泛地應用

VxWorks是嵌入式實時操作系統(tǒng),具有高性能、可裁減性好等特點,能支持多種微處理器(如PowerPC、X85、ARM、SPARC);自問世以來,以其良好的町靠性和卓越的實時性被廣泛地應用于通信、航空、航天等高精尖技術及實時性要求極高的領域中。BSP(Board Support Package,板級支持包)的作用是針對特殊的硬件平臺,為操作系統(tǒng)內(nèi)核提供操作接口,使操作系統(tǒng)能夠獨立于底層硬件。對上層應用屏蔽具體硬件,VxWorks的高可移植性就是通過BSP實現(xiàn)的。AT91RM9200是Atmel公司生產(chǎn)的一款ARM9核芯片,本文重點介紹將VxWorks移植到該芯片過程中BSP的定制過程。

1 BSP概念

BSP通常是指針對具體的硬件平臺,用戶所編寫的啟動代碼和部分設備驅動程序的集合。它所實現(xiàn)的功能包括初始化和驅動部分設備。最基本的BSP僅需要支持處理器復位、初始化、驅動串口和必要的時鐘處理。BSP是相對于操作系統(tǒng)而言的,不同的操作系統(tǒng)對應不同形式的BSP,因此,在寫B(tài)SP時一定要按照要求的操作系統(tǒng)對BSP的定義形式來寫。在VxWorks系統(tǒng)中,BSP是介于底層硬件環(huán)境和VxWorks之間的一個軟件接口,它的主要功能是系統(tǒng)加電后初始化目標機硬件和VxWorks,并提供部分硬件驅動程序。BSP在VxWorks系統(tǒng)中的層次關系如圖1所示。

BSP為各種板卡的硬件功能提供了統(tǒng)一的軟件接口,包括硬件初始化、中斷的捕捉和處理、硬件時鐘和定時器管理、內(nèi)存地址映射,以及內(nèi)存分配等。每個BSP還包括一個ROM啟動或其他啟動機制。

2 VxWorks的引導過程

在編寫B(tài)SP之前,首先要了解整個系統(tǒng)的啟動過程。VxWorks的映像由代碼段、數(shù)據(jù)段和BSS段3部分組成。VxWotks內(nèi)核可以分為3種:可加載類型映像、基于ROM的VxWorks映像和RoM駐留型映像。這3種類型的映像組織是不一樣的,因此啟動過程有所區(qū)別。

可加載映像包括VxWorks和Boot ROM兩部分內(nèi)容,兩部分是獨立創(chuàng)建的。首先,由系統(tǒng)引導代碼把ROM引導程序搬到RAM_HIGH_ADRS。然后,ROM引導程序開始運行,將VxWorks映像加載到RAM_LOW_ADRS,之后跳轉到VxWorks映像裝入點。

基于ROM的VxWorks映像在BSP初始化時,會把lmage完全搬到RAM中執(zhí)行,包括代碼段和數(shù)據(jù)段。在拷貝執(zhí)行完畢后,系統(tǒng)控制權轉移給RAM中VxWorks映像的初始化代碼。

ROM駐留型映像只是將ROM中VxWorks映像的數(shù)據(jù)段和BSS段拷貝到RAM中,完成后系統(tǒng)控制權轉移給ROM/Flash里VxWorks映像的初始化代碼,代碼段留在ROM中并在ROM中運行。在ROM中運行的VxWorks映像主要足為了節(jié)省RAM空間,帶來的不利則是運行速度慢。

圖2和圖3分別是下載型和ROM型VxWorks映像的初始化流程。

下面以ROM型VxWorks內(nèi)核啟動流程為例,說明各文件的作用:

romlnit()保存啟動類型,屏蔽中斷;初始化內(nèi)存和寄存器,屏蔽Cache;初始化CPU,將堆棧指針定位于被拷貝Boot ROM映像在RAM的地址;跳到romStart()。

roraStart()根據(jù)不同的映像類型將VxWorks映像的不同部分解壓縮

3 VxWorks在AT91RM9200上的BSP設計

3.1 AT91RM9200簡介

AT91RM9200的片上資源包括:ARM920T處理器棱、16KB的內(nèi)部SRAM和128KB的內(nèi)部ROM存儲器;支持SDRAM、SRAM、Burst Flash和CompactFlash、SmartMedia以及NANDFlash的無縫連接;16KB的數(shù)據(jù)Cache,16KB的指令Cache,完全可編程的外部總線接口EBI,4個32位的PIO控制器可以達到122個可編程I/O引腳(每個都有輸入控制、可中斷及開路的輸出能力);帶有8個優(yōu)先級、可單獨屏蔽中斷源的先進中斷控制器、6組硬件定時器、4個通用同步/異步收發(fā)器USART。

3.2 BSP中幾個重要文件的修改

由于AT91RM9200的內(nèi)核是ARM920T,所以BSP文件主要在VxWorks編澤環(huán)境Tornado的目錄target/config/all和target/config/integrator920t文件夾里。其中,a11文件夾里的文件對于絕大多數(shù)BSP都是共用的,一般來說不需要修改,特別是“configAll.h”;integrator920t文件夾里的文件就是所要編寫的BSP文件,這些文件往往與系統(tǒng)硬件密切相關。

3.2.1 修改Makeflie

Makefile文件定義編譯和鏈接整個BSP的規(guī)則,如編譯工具的選擇、編譯選項和包含文件路徑等;控制生成VxWorks映像文件的類型,同時含有存儲區(qū)大小的信息,對于存儲區(qū)大小信息的改動必須與Config.h的對應改動同步。有些參數(shù)需在該文件中定義,如處理器類型、編譯工具、目標地址等。下面介紹一些須修改的參數(shù)和地址:

3.2.2 修改Config.h

Config.h文件包含了所有頭文件和與CPU相關的特殊定義。VxWorks內(nèi)核組件的配置由Config.h文件定義。Config.h中的主要修改內(nèi)容有定義引導行和修改地址。

(1)定義引導行

其中,mac(O,0)為AT91RM9200芯片中的EMAC設備;host為主機名;VxWorks為要下載的文件名;h為主機IP地址;e為目標板IP地址;u為用戶名;pw為密碼;tn為目標板名稱。

(2)修改地址

該文件中的地址定義,如ROM_TEXT_ADRS、ROM_SIZE、RAM_LOW_ADR、SRAM_HIGH_SIZE等要與Makefik文件中的相關定義一致。本設計中代碼段存儲在連接ARM芯片外部片選CSO上的Flash里面,基地址為Oxl0000000,因此.定義如下:

VxWorks的缺省配置由configAll.h來確定。一般來說,缺省配置的設置與自行開發(fā)的硬件系統(tǒng)的配置不同,用戶可通過Cotlfig.h來改變?nèi)笔∨渲谩S脩繇毑榭碿onfigAll.h,并在Config.h中將不需要的軟硬件配置和初始化去掉。例如,缺省配置中一般包含浮點處理器,而AT9lRM9200中沒有浮點寄存器,因此就要刪掉相關配置。[!--empirenews.page--]

3.2.3 修改integrator920t.c

該文件中設置所有非可選的、與AT91RM9200芯片相關的信息,如各硬件相關寄存器的地址定義,設備寄存器中對應位的定義,各硬件中斷矢量和中斷優(yōu)先級的定義,DBUG和USART的控制,網(wǎng)口的定義,系統(tǒng)時鐘和輔助時鐘參數(shù)設置等。VxWorks所要使用的目標板包含設備的驅動程序頭文什應當包含在該文件的開始。該文件中的各項宏定義均是基于AT91RM9200芯片的,并根據(jù)具體要求定義。例如,電源管理控制器中用到兩個鎖相環(huán)PLLA和PLLB,對它們的部分參數(shù)設定代碼如下:

3 2.4 修改rornlnit.s

該文件包含引導ROM和基于ROM的VxWorks映像的入口初始化匯編代碼。入口點為romInit()函數(shù),是系統(tǒng)加電啟動后首先執(zhí)行的代碼。主要功能是:保存啟動類型,使處理器復位;初始化Flash和SDRAM;設置MMU到已知狀態(tài);指令Cache使能;初始化MMU控制寄存器(指令32位、數(shù)據(jù)32位、寫緩沖使能);開漏寫緩沖,并且使指令和數(shù)據(jù)Cache都兀效;通過設置CPSR的IRQ禁止位、FIR禁止位和先進中斷控制器AIC中的中斷禁止寄存器來屏蔽中斷,跳轉到bootInit.c中的rom-Start(),同時傳遞啟動類型。其中,中斷屏蔽代碼如下:

在調(diào)試這段代碼時,由于串口和網(wǎng)口都沒有啟動,因此只能通過點燈程序來跟蹤程序的執(zhí)行情況,設置不同的LED亮來顯示程序執(zhí)行到哪一步。例如,如果要并行輸入/輸出口C的32位中的第15位亮,則可以編程為;

在編寫本文件時,需要注意的地方是:不要在該文件里進行過多的初始化操作,大部分硬件初始化操作在sysLib.c文件中的sysHwInit()函數(shù)中進行。

3.2.5 修改sysLib c

sysLib.c是BSP初始化的核心代碼。在這個文件中,必須復位所有的硬件,使其處于初始化狀態(tài),保證后面開中斷后不會產(chǎn)生假中斷。這個文件包含了由目標機體系結構決定的、與系統(tǒng)有關的C程序。這些C程序提供板級接口?;谶@些接口,VxWorks和應用程序的構造與系統(tǒng)無關。該文件的功能包括:定義了RRAM、SRAM、ROM、外部片選芯片的物理地址和虛擬地址;定義中斷優(yōu)先級寄存器中各個位對應的優(yōu)先級;調(diào)用sysHwInit()初始化串口和網(wǎng)口,安裝IRQ/SVC中斷堆棧分配程序;總線中斷功能等。本文件中有兩個重要的函數(shù):sysHwInit()和sysHwInit2()。sysHwInit()的代碼如下:

sysHwInit2()用來連接系統(tǒng)中斷,安裝ISR,進行其他配置。它在初始化系統(tǒng)時鐘時,由sysClkConnect()調(diào)用,主要用來初始化中斷庫和中斷驅動,安裝系統(tǒng)時鐘和輔助時鐘的中斷以及串口等設備的中斷。

4 編譯生成映像

系統(tǒng)定制完成后,有兩種編譯方式:一種是在Tornado下進行編譯,生成映像文件;另一種是直接用Make工具編譯,但要寫好腳本文件。裝載到目標板中的VxWorks映像取決于使用的下載方式,其中主要包括以下幾種:

①VxWorks。這是基于RAM的映像,VxWorks需要通過目標板上的引導程序從串口或網(wǎng)口把它下載到目標板的RAM中運行。在Tornado開發(fā)環(huán)境下,這是一個默認選項,主要用在調(diào)試階段。使用宿主機上的WindSh工具和符號表。

②VxWorks.st。這也是基于RAM的映像,需要通過引導ROM把VxWorks映像下載到目標機內(nèi)存中才能執(zhí)行。該對象文件內(nèi)置符號表。

③VxWorkS_rom。這是一個非壓縮、基于ROM的映像。在這個對象文件執(zhí)行前,先把自己拷貝到目標機RAM中。這種類型的映像通常在啟動階段速度比較慢,因為代碼在ROM中執(zhí)行,但執(zhí)行階段比ROM駐留型的映像要快。

④VxWorks.st_rom。這是基于ROM壓縮的VxWorks映像。它在執(zhí)行前先把自己解壓并拷貝到目標機RAM中執(zhí)行。

⑤VxWorks.res_rom。這是ROM駐留型的非壓縮VxWorks的映像。它在執(zhí)行前把數(shù)據(jù)段拷貝到目標機RAM中。這種類型的映像在啟動階段比較快,但在目標機上執(zhí)行的速度比基于ROM類型的映像慢(因為CPU訪問ROM比訪問RAM要慢)。通常在RAM空間比較小的目標機上使用這種類型的映像。

5 需要注意的問題

首先,應該避免在romInit.s中進行過多的初始化操作。該史件中只是進行必要的最小硬件初始化,大部分硬件的初始化都是在sysHwInit()中完成的。另外,romTnit.s中的代碼不應當被其他模塊或函數(shù)調(diào)用。

其次,應該避免sysAlib.s中工作太少。BSP開發(fā)人員通常錯誤地認為在romInit.s里初始化過的設備不需要在sysAlib.s中重新初始化。實際上,VxWorks映像并不認為它是由引導映像程序引導的,因此,它必須重新設置和初始化所有它自己需要使用的設備。sysInit()是該文件中最主要的一個函數(shù),也是第一個函數(shù)。該例程中很多工作與romInit()是相同的,目的是保證內(nèi)核映像在運行與冷啟動時,軟硬件環(huán)境高度一致。

最后,對特定的BSF。驅動程序的修改,只能在特定的BSP目錄下。此設計中目錄為target/config/integra-tor920t,不要直接在target/src/drv以及target/h/drv中修改。只有風河公司的源程序才能存放在這些目錄下。

6 結論

本文在介紹BSP的概念、作用和vxWorks映像分類以及系統(tǒng)啟動流程的基礎上,以Atmel公司生產(chǎn)的ARM9處理器AT91RM9200為例,重點介紹了VxWorks的BSP設計中需要修改的幾個重要文件,最后提出了需要注意的問題。盡管目標板硬件不同,BSP的實現(xiàn)也不盡相同,但基本思想是一樣的。本設計對各類開發(fā)板的系統(tǒng)移植和后續(xù)的應用程序開發(fā)有一定的參考價值。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉