VxWorks移植到AT91RM9200的BSP定制過(guò)程
VxWorks是嵌入式實(shí)時(shí)操作系統,具有高性能、可裁減性好等特點(diǎn),能支持多種微處理器(如PowerPC、X85、ARM、SPARC);自問(wèn)世以來(lái),以其良好的町靠性和卓越的實(shí)時(shí)性被廣泛地應用于通信、航空、航天等高精尖技術(shù)及實(shí)時(shí)性要求極高的領(lǐng)域中。BSP(Board Support Package,板級支持包)的作用是針對特殊的硬件平臺,為操作系統內核提供操作接口,使操作系統能夠獨立于底層硬件。對上層應用屏蔽具體硬件,VxWorks的高可移植性就是通過(guò)BSP實(shí)現的。AT91RM9200是Atmel公司生產(chǎn)的一款ARM9核芯片,本文重點(diǎn)介紹將VxWorks移植到該芯片過(guò)程中BSP的定制過(guò)程。
1 BSP概念
BSP通常是指針對具體的硬件平臺,用戶(hù)所編寫(xiě)的啟動(dòng)代碼和部分設備驅動(dòng)程序的集合。它所實(shí)現的功能包括初始化和驅動(dòng)部分設備。最基本的BSP僅需要支持處理器復位、初始化、驅動(dòng)串口和必要的時(shí)鐘處理。BSP是相對于操作系統而言的,不同的操作系統對應不同形式的BSP,因此,在寫(xiě)BSP時(shí)一定要按照要求的操作系統對BSP的定義形式來(lái)寫(xiě)。在VxWorks系統中,BSP是介于底層硬件環(huán)境和VxWorks之間的一個(gè)軟件接口,它的主要功能是系統加電后初始化目標機硬件和VxWorks,并提供部分硬件驅動(dòng)程序。BSP在VxWorks系統中的層次關(guān)系如圖1所示。
BSP為各種板卡的硬件功能提供了統一的軟件接口,包括硬件初始化、中斷的捕捉和處理、硬件時(shí)鐘和定時(shí)器管理、內存地址映射,以及內存分配等。每個(gè)BSP還包括一個(gè)ROM啟動(dòng)或其他啟動(dòng)機制。
2 VxWorks的引導過(guò)程
在編寫(xiě)BSP之前,首先要了解整個(gè)系統的啟動(dòng)過(guò)程。VxWorks的映像由代碼段、數據段和BSS段3部分組成。VxWotks內核可以分為3種:可加載類(lèi)型映像、基于ROM的VxWorks映像和RoM駐留型映像。這3種類(lèi)型的映像組織是不一樣的,因此啟動(dòng)過(guò)程有所區別。
可加載映像包括VxWorks和Boot ROM兩部分內容,兩部分是獨立創(chuàng )建的。首先,由系統引導代碼把ROM引導程序搬到RAM_HIGH_ADRS。然后,ROM引導程序開(kāi)始運行,將VxWorks映像加載到RAM_LOW_ADRS,之后跳轉到VxWorks映像裝入點(diǎn)。
基于ROM的VxWorks映像在BSP初始化時(shí),會(huì )把lmage完全搬到RAM中執行,包括代碼段和數據段。在拷貝執行完畢后,系統控制權轉移給RAM中VxWorks映像的初始化代碼。
ROM駐留型映像只是將ROM中VxWorks映像的數據段和BSS段拷貝到RAM中,完成后系統控制權轉移給ROM/Flash里VxWorks映像的初始化代碼,代碼段留在ROM中并在ROM中運行。在ROM中運行的VxWorks映像主要足為了節省RAM空間,帶來(lái)的不利則是運行速度慢。
圖2和圖3分別是下載型和ROM型VxWorks映像的初始化流程。
評論