文章目錄
VxWorks可加載型啓動方式流程梳理
1 VxWorks 的兩種基本啓動方式
1.1 加載型啓動方式
在這種啓動方式下,VxWorks鏡像文件不能獨立完成啓動,需要bootrom程序先啓動,然後通過網絡、串口、usb、Tffs等方式將VxWorks鏡像從flash、硬盤、網絡等其他介質時上加載至RAM中,從而完成VxWorks系統的啓動。在這種情況下需要以下兩種鏡像文件:
- bootrom鏡像文件
- VxWorks系統鏡像
1.1.1 bootrom 文件
bootrom文件的組成:
bootrom需要完成以下功能完成最原始的上電啓動,初始化各種硬件設備,加載VxWorks系統鏡像、加載 Shell [VxWorks Boot]等工作,通常有以下源文件組成:
romInit.s
usrConfig.c
usrConfig.c
bootInit.c
version.c
ctdt.c
sysNet.c
sysNetif.c
sysNvRam.c
sysScsi.c
sysSerial.c
sysTffs.c
sysTherm.c
sysUefi.c
sysUltraEnd.c
sysWindML.c
usbPciStub.c
...
這種情況下bootrom可以看成一個小型的VxWorks系統。
bootrom 文件的格式
我們再利用VxWorks的集成開發環境 WorkBench創建 bsp項目時會提示創建的bootrom的類型如下圖所示:
至於以上三總文件的不同,在這裏不做詳細解釋,需要了解的朋友可以自行查閱相關資料
一般我們選擇 bin二進制文件。
bootrom 文件的類型
下面簡要介紹這幾種文件的區別:
- bootrom
可以理解爲一個帶有引導加載程序的VxWorks映像,一般被燒到Flash中去。然後將自己解壓到RAM中執行。此類鏡像文件需要的ROM空間最小,但是需要較大RAM空間。
- bootrom_uncmp
與bootrom唯一不同是不需要解壓,而是直接將自身複製到RAM中去,相比而言此類鏡像啓動較快,但是佔用較大的ROM空間,需要的RAM空間和bootrom相同。
- bootrom_res
與bootrom不同的是,鏡像只拷貝數據段到RAM中機執行,存取相關的指令在ROM中,此類鏡像需要較大的ROM空間,但是需要的RAM空間很小 。
- bootrom_res_high
從名稱上就可以看出 此類鏡像和bootrom_res 唯一的不同就是將鏡像文件載入到RAM的高地址空間中(默認載入低地址空間).
1.1.2 VxWorks鏡像文件
通常VxWorks鏡像文件有以下幾種類型:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-DdRZoCDc-1588167644440)(./images/VxWorks鏡像類型.png)]
而可加載類型則爲第一個,文件的格式爲 ELF類型 ,這種鏡像不具備獨立的啓動能力。
- vxWorks
可加載型鏡像文件,此類文件不具備獨自啓動的能力,必須和bootrom進行配合使用。
1.2 可啓動型啓動方式
在這種情況下 VxWorks的進行具備獨立啓動的能力不需要專門的bootrom鏡像就可以實現啓動,這種鏡像通常固化在flash上。通常具有三種類型:
-
vxWorks_rom
-
vxWorks_romCompress
vxWorks_romResident
這三種鏡像文件和前面bootrom類似,所以不再這裏進行詳細解釋,可以參閱《VxWorks Kernel Programmer’s Guide 6.x》相關章節內容
1.3 兩種啓動方式的應用場景
- 可加載型
這種方式一般用於開發的前期,可以頻繁的更換VxWorks鏡像文件,尤其是通過網絡加載VxWorks鏡像文件,只需要一片bootflash就可以實現VxWorks的加載,不需要加載硬盤、大容量的flash,但是到後期程序比較穩定之後就應該考慮程序程序自啓動的問題,對於可加載型通常的實現方式是採用硬盤或者flash掛載文件系統,將鏡像文件放在固定的路徑下,bootrom啓動時通過文件系統將VxWorks鏡像加載進RAM從而實現系統的自啓動,VxWorks系統中通常會啓動一個TFTP或者TFP服務器,方便開發人員隨時替換VxWorks鏡像文件。 - 可引導型
此類型的鏡像可以自己實現自啓動,不需要額外的bootrom鏡像,經VxWorks_rom鏡像直接燒寫進flash中,一般VxWorks鏡像文件大約3M左右,所以選用FLASH一定要大於4M,這樣才能保重有充足的空間來進行存儲,此情況不需要配置文件系統,有一個缺點就是替換程序不太方便,更新程序需要重新固化。
2 可加載型啓動流程梳理
本章介紹可加載型啓動方式的基本流程,重點梳理啓動的流程。
本次啓動過程以FTP啓動方式爲例,重點介紹啓動的流程,而不是對啓動細節進行講解,如果讀者需要自己修改相關的環節,可以詳細查看相關文檔或者源碼。
3 參考文檔
- VxWorks6.8 bsp 源碼文件
- 《VxWorks BSP Developer’s Guide, 6.8》
- 《VxWorks Kernel Programmer’s Guide, 6.8》