VxWorks是一款優秀的嵌入式實時多任務操作系統,以良好的持續發展能力、高性能的內核以及友好的用戶開發環境,在嵌入式實時操作系統領域佔據了重要的一席之地,受到越來越多的用戶的青睞。但是作為初學者而言,VxWorks提供了眾多的程序映像類型,在開發過程中十分容易讓人感到困惑,而且相關的參考資料對這個問題的描述也不集中,因此,本文擬對VxWorks的幾種映像作詳細的分析。
1 系統映像
VxWorks的映像主要包括兩大類,一類是BootRom類型,一類是VxWorks類型。
(1)BootRom類型
BootRom類型映像是一個最小化、專用的VxWorks引導映像,實現最少的系統初始化,主要用於啟動裝載VxWorks映像,其功能類似於PC機的BIOS。BootRom運行時也建立起多任務環境,包括usrRoot任務、網路任務、TFFS任務和FTP任務等。引導映像在運行時,可能在ROM/Flash中執行(例如ROM駐留型引導映像),也可能在RAM 中執行。在系統中其對應的編譯規則文件是rules.bsp。
BootRom類型分為三種:BootRom_res、BootRom_uncmp和BootRom。第一種是一直運行在rom 中的映象,只把data段拷貝到ram 裡面;第二種是非壓縮方式的映象,data段和text段都要拷貝到ram裡面,並在ram裡面運行;第三種是壓縮方式的映象,生成的時候編譯器會把除掉romlnit.s和bootInit.c之外的目標文件壓縮並“彙編”成一個bootrom.Z.s,最後和romInit.o,bootInit.o,version.o進行鏈接,生成bootrom映像。所以它也是要全部拷貝到ram 中,並必須要進行解壓縮的工作。而這些工作基本上都是在bootInit.c中進行的。
(2)VxWorks類型
VxWorks類型映像是系統的主映像,也即是系統最終要運行的映像。該映像在運行時至少有一部分(如:數據段和BSS段)需要在RAM中運行。在系統中其對應的編譯規則文件是rules.vxWorks。
VxWorks類型映像分為四種:VxWorks、VxWorks_rom、VxWorks_romResident和VxWorks_romCompress。如表1。
文件名 | 說明 |
VxWorks | RAM運行的VxWorks映像 |
VxWorks_rom | ROM 自動RAM 運行的VxWorks映像,不需要BootRom輔助 |
VxWorks_romCompress | VxWorks_rom 的壓縮形式 |
VxWorks_romResiden | ROM啟動ROM運行的VxWorks映像,不需要BootRom輔助 |
(3)BootRom 類型映像和VxWorks類型映像的聯繫與區別
對於沒有自啟動功能的VxWorks類型映像(例如:VxWorks型),在映像運行前就需要一段程序將該映像拷貝到RAM 中運行,而BootRom類型映像在此時就扮演了這種“搬運工”的角色,當VxWorks系統下載完畢,BootRom的任務也就完成了。二者在系統初始化的時候,所做的功能基本相同,但是區別在於BootRom 類型映像調用bootConfig.c,而VxWorks類型映像調用usrConfig.c。
2 映像裝載過程
(1)VxWorks_romCompress和VxWorks_rom(如圖1)
(2)VxWorks_romResident(如圖2)
(3)VxWorks
3 結束語
總之,VxWorks系統包括多種不同的映像,各自之間的差別造成裝載過程的不同,正確的理解這些差異,靈活地使用這些映像,將給開發者帶來事半功倍的效果。
[admin via 研發互助社區 ] VxWorks系統的映像及其裝載過程解析已經有1958次圍觀
http://cocdig.com/docs/show-post-42230.html