1. 程式人生 > >VxWorks啟動過程詳解(上)

VxWorks啟動過程詳解(上)

vxworks有三種映像:

VxWorks Image的檔案型別有三種

  1.  Loadable Images:由Boot-ROM引導通過網口或串列埠下載到RAM
  2.  ROM-based Images(壓縮/沒有壓縮):即將Image直接燒入ROM,執行時將Image拷入RAM中執行。
  3. ROM-Resident Images:Image的指令部分駐留在ROM中執行,僅將資料段部分拷入RAM。

注意這裡說的三種映像都是包含真正作業系統VxWorks的映像,其中後兩種可以直接啟動並執行起來,但是第一種不行,它必須藉助另一個叫做Boot Image的映像(可以在Tornado 中的build->build boot rom中生成)才能執行起來,也就是利用Boot Image引導起來然後通過網口或串列埠下載真正包含VxWorks的Loadable Image,然後才能執行起來。也就是說Boot Image是和Loadable Image 結合使用的。

現在看來一共有四種映像檔案,讓我們看看它們的組成吧:

  1. Boot Image:包含一段叫做BootStrap Programs的程式+一段ROM  BOOT Program程式。
  2. Loadable Images:有作業系統VxWorks和應用組成的映像。
  3. ROM-based Images(壓縮/沒有壓縮):包含一段叫做BootStrap Programs的程式+ Loadable Images(即有作業系統VxWorks和應用組成的映像)
  4. ROM-Resident Images:同上

通過上面我們可以看出,ROM-based Images,ROM-Resident Images,Boot Image

三種映像都包含一段叫做BootStrap Programs的程式,它具有啟動功能,可以把ROM中的程式碼段和資料段拷貝到RAM中;下面讓我們看看三種VxWorks的啟動過程:

  • Boot Image + Loadable Images:

我們說過Loadable Images是依靠Boot Image載入啟動的,首先有Boot Image中的程式BootStrap Programs把Boot Program程式載入到RAM中的RAM_HIGH_ADRS處,然後控制權交給Boot Program,由Boot Program負責一系列簡單的硬體初始化(網口,串列埠等),開始下載Loadable Images(即包含應用的VxWorks作業系統)到RAM_LOW_ADRS,然後控制權交給VxWorks作業系統開始執行。

下面的圖一是一個簡單的流程圖,後面的圖二是更為詳細的流程圖。


圖一

圖二(1)

 

圖二(2)

  • ROM-based Images(壓縮/沒有壓縮):

這種映像因為其本身就包含BootStrap Programs程式,因此可以直接啟動,所以這種映像中也就不需要Boot Programme了,首先BootStrap Programs啟動,把映像中的VxWorks載入到記憶體的RAM_LOW_ADRS處並開始執行。圖三是一個簡圖,圖四是更為詳盡的流程圖。

圖三

圖四

  • ROM-Resident Images:

這種映像的載入和上一種是基本相同的,只不過是載入的只有data段和bss段而已。