1 引言
vxworks是美國windriver公司設計開發的一款嵌入式實時作業系統。能支援多種微處理器:powerpc,x86,mips,arm,sparc等。它採用微核心結構,具有高可靠性、實時性、豐富的網路協議、良好的相容性以及可裁減性等特點,同時具有友好的使用者開發環境。其中vxworks很好的移植性通過bsp來實現,bsp使作業系統能夠獨立於具體硬體,對上層遮蔽具體的硬體,為系統元件以及應用程式提供統一的介面。
本文主要研究如何將vxworks作業系統移植到基於三星s3c2410處理器硬體平台上,即bsp的設計。主要內容包括下面兩點:熟悉並掌握vxworks映像種類,系統的啟動順序和過程,以及bsp軟體包中各檔案的組成和作用以及相應的設定檔案的修改;二是熟悉系統底層驅動,也就是要對開發板的硬體環境有乙個初步了解,這樣才可以結合具體硬體開發板設計出相應的底層驅動程式。
2 bsp組成
2.1 bsp概念
對於嵌入式系統而言,並沒有像pc那樣的標準,存在著各種不同的嵌入式硬體平台,這就使得無法完全由作業系統來實現上層軟體與底層硬體的無關性。bsp正是採用當今嵌入式分層設計的介於作業系統和底層硬體的中間層。bsp通常是指針對具體的硬體平台,使用者所編寫的啟動**和部分裝置驅動程式的集合。它所實現的功能包括初始化,驅動部分裝置.最基本的bsp僅需要支援處理機復位,初始化,驅動串列埠和必要的時鐘處理。bsp的概念只是針對嵌入式作業系統而言的,而像dos,windows,unix等bios作業系統是無bsp可言的。不過到目前為止,
嵌入式系統中也沒有對bsp有明確統一的定義,不同的嵌入式系統bsp實現的功能有所差別。在vxworks系統中,對bsp描述為介於底層硬體環境和vxworks之間的軟體介面,它的主要功能是系統加電後初始化目標機硬體,初始化作業系統及提供部分硬體的驅動程式。
2.2 bsp組成
其主要的兩部分組成為:初始化**,硬體驅動程式.
bsp的初始化部分是指從上電復位開始直到wind核心和usrroot()函式啟動的這段時間內系統的執行過程.具體包括:cpu初始化,裝置初始化以及系統初始化.cpu初始化cpu內部暫存器,裝置初始化智慧型i/o的暫存器,將板上裝置打通;系統初始化為系統的執行準備資料結構,進行資料初始化.其初始化過程如圖1所示:
圖1初始化過程
驅動程式就是一些包含i/o操作的子函式.vxworks系統的驅動程式也可以抽象為三個層次:常規操作,與i/o的介面,以及與元件的介面.其抽象邏輯如圖2所示.驅動程式與i/o系統的介面使驅動具有更好的層次性,驅動程式與元件的介面使驅動具有更好的抽象性.
圖2驅動程式抽象邏輯
3 vxworks映像分類及啟動過程
兩種型別的映像都可以分成兩步,第一步為系統加電後對必要的硬體進行初始化,這一步目的就是為了載入系統映像,所以在這一步不需要做太多的工作;第二步為系統載入後首先就是對系統硬體作完整的初始化過程,然後完成系統核心初始化,這一切處理完之後跳入使用者應用程式。兩種型別的啟動過程如圖3所示。
圖3 vxworks映像啟動過程
可載入映像包括兩部分:boot rom以及vxworks。這兩部分是獨立建立的。載入型映像引導主要是用於開發除錯階段。
可載入型映像引導過程如下:
1)引導**的裝入。系統加電後執行首段引導**,把引導**段和資料段從rom或者flash中裝入ram中的ram-high-adrs。boot rom可分為如下三種型別:被壓縮的boot rom映像,非壓縮的boot rom映像以及駐留rom的boot rom映像。對於壓縮型引導**,這種型別的引導**在拷貝時對它進行解壓操作;對於非壓縮型引導**,這種型別的引導**直接進行拷貝操作;駐留型引導**僅僅拷貝它的資料段到ram中。
2)vxworks映像的載入。引導**執行後,把vxworks映像裝入到ram中ram-low-adrs,然後跳轉到vxworks映像裝入點.
3)系統初始化.由vxworks映像中的系統初始化**來執行,完成系統初始化操作.
可引導型映像引導包括不駐留rom的映像和駐留rom的映像兩種型別.對於駐留rom的vxworks映像,引導程式只把vxworks映像的資料段和堆疊段複製到ram的ram-low-adrs,**段則駐留在rom中。駐留型vxworks映像主要是為了節省ram空間,以便應用程式有更大的空間執行,但缺點是執行速度慢。隨著片外擴充套件ram空間越來越大,不需要採用不駐留rom映像。其引導過程與可載入型類似,主要不同在系統加電時候,首先執行的是rominit.s中的函式rominit(),完成最基本的初始化後跳入到bootinit.c中的romstart()函式,來完成裝載vxworks映像的工作。接下來的啟動過程和上面所描述的可載入型一樣。
原文閱讀
U Boot在S3C2410上的移植
摘 要 在嵌入式系統的開發中,首先移植乙個穩定且功能強大的 u boot 對後續軟體的開發至關重要。本文將詳細介紹 u boot 在 s3c2410 開發板上的移植與執行。u boot 移植 引言 u boot 是用於初始化目標板硬體,為嵌入式作業系統提供目標板硬體配置資訊,完成嵌入式作業系統裝載 ...
S3C2410讀寫Nand Flash分析
2009 01 15 16 51 321人閱讀 收藏舉報 s3c2410讀寫nand flash分析 一 結構分析 s3c2410處理器整合了8位nandflash控制器。目前市場上常見的8位nandflash有三星公司的k9f1208 k9f1g08 k9f2g08等。k9f1208 k9f1g0...
s3c2410的nand flash的驅動分析
以前都是把別人寫好的 直接拿過來用,而沒有去關心裡面到底怎麼實現的,昨晚對照著samsung 2410和k 9f1208的晶元資料把這些 讀了一遍,終於明白了對nand flash的操作一步步是怎麼實現的了。以下的這些 可以在vivi或者kernel裡面找到 對乙個nand flash的操作,總體上...