WinCE6.0 EBOOT概要

來源:互聯網
上載者:User

 

為一個新的硬體裝置定製WinCE6、0作業系統的主要步驟如下:

1、針對特定的硬體裝置建立板級支援包(Board Support Package縮寫為BSP),BSP必須包括BOOTLOADER、OEM適配層(OEM
Adaptation Layer縮寫為OAL)和一些必要的驅動。

2、利用建立的BSP,定製一個系統設計(OS Design)。即通過VS2005建立一個Platform
Builder的工程。該工程可編譯產生最終的運行時映像檔案(Rum-time Image)。

3、針對板上的外圍裝置建立相關驅動,並添加到BSP中。

4、通過建立子工程和Catalog Items的方式,修改OS Design。

5、編譯OS Design,下載編譯得到的運行時映像檔案到目標裝置。此時,可通過遠端偵錯工具進行調試。

6、在完成所有的調試工作之後,匯出該運行時映像對應的SDK(Software Development Kit),應用程式的開發人員可基於此SDK編寫該裝置的應用程式。

     可以看出,在整個WinCE作業系統的移植過程中,BSP的移植是最基礎也是最關鍵的一步。而建立BSP的過程主要包括以下幾個內容:

1、建立BOOTLOADER。BOOTLOADER在開發的過程中用於下載作業系統映像檔案。

2、建立OAL。OAL最終被連結到核心映像檔案,它主要完成硬體的初始化和管理。

3、建立裝置驅動。裝置驅動是板上外圍裝置的軟體支援。

4、修改運行時映像的設定檔。設定檔主要包括BIB、REG等檔案。

BOOTLOADER的主要作用是將作業系統運行時映像載入到記憶體,並跳轉到OS的啟動程式處。它的這一作用跟前一篇介紹的NBOOT的作用完全一致。BOOTLOADER擷取運行時映像(一般對應的檔案名稱為NK)一般有兩種方法。它可以通過有線串連的方式象網路(Ethernet)、USB或串口從外部下載NK。它也可以從本地的儲存空間(Flash、Hard
Disk)中載入NK。通常,BOOTLOADER通過Ethernet下載作業系統映像故將其稱為EBOOT。在開發的過程中使用EBOOT,可以提高開發效率。通過使用EBOOT,你可以很快速的下載NK到目標裝置中。而利用Flash編程工具或者是通過JTAG下載則很慢。在一些產品最終發布時,EBOOT是可以去掉的,但也有一些則必須包括BOOTLOADER,像X86的平台就是如此。

基於不同的硬體設計,Bootloader會有不同的引導方式:

NORFlash Boot:

一般ARM處理器的片選0都會接有NORFlash,這樣在ARM上電以後,會從0地址開始執行程式,也就是從NORFlash的0地址開始執行。所以把EBOOT燒到NORFlash的0地址開始的地方,這樣在上電以後,EBOOT開始執行,可以在NORFlash裡面執行,也可以自拷貝到SDRAM中執行。最後載入WinCE
image並運行。

NANDFlash Boot with EBOOT

由於NORFlash容量小,價格貴,現在很多ARM處理器支援NandFlash引導。不同廠家的處理器對Nandflash的引導略有區別,具體要看datasheet。但是本質就是先從Nandflash中讀出一個小的Loader來運行,這個Loader再從Nandflash中載入EBOOT到SDRAM中運行,最後EBOOT載入WinCE
image,就是NK.bin。

NANDFlash Boot without EBOOT:

如果在NandFlash引導的時候不需要EBOOT,也可以不用EBOOT。這樣就是系統啟動後從Nandflash中載入一個小的Loader,小的Loader對硬體系統作基本的初始化,然後直接載入WinCE
image,一般應該是NK.nb0,然後運行。

至此,我們已經瞭解了EBOOT的主要功能,為了實現這些功能,EBOOT必須完成以下工作:

1、初始化MCU。包括初始化MCU的相關寄存器、中斷、看門狗、系統時鐘、記憶體和MMU。前面幾項跟NBOOT基本一致,但這裡增加了對MMU的初始化。

2、在完成所有的初始化工作之後,調用BootloaderMain()。這個函數的定義在WinCE6、0中對應的檔案是C:"WINCE600"PLATFORM"COMMON"SRC"COMMON"BOOT"BLCOMMON"blcommon、c

3、 BootloaderMain()主要依次調用以下幾個函數,OEMDebugInit()、OEMPlatformInit()、OEMPreDownload()、OEMLaunch(),而這些函數必須由EBOOT的代碼來實現。

4、最終跳轉到OAL、exe的StartUp處,進而啟動WinCE作業系統。

整個流程如所示:

EBOOT的代碼可參考C:"WINCE600"PLATFORM"DEVICEEMULATOR"SRC"BOOTLOADER"EBOOT目錄。這裡針對S3C2410的EBOOT做幾點說明。前一篇介紹NBOOT載入EBOOT的方法時提到,NBOOT必須將EBOOT放在記憶體中指定的位置,這個位置是由EBOOT的來決定的。具體的,在EBOOT中的體現是boot、bib裡的記憶體配置,如所示。

NBOOT載入EBOOT到記憶體的地址必須與此地址對應。由於在NBOOT中沒有使用MMU,所以NBOOT使用的實際地址應該為0x30021000,否則系統將不能正常啟動。第二點,如果沒有採用NBOOT載入EBOOT的方法,而是將EBOOT直接儲存在NOR Flash中,此時必須在EBOOT的代碼中實現自載入的過程,即將NOR Flash中的EBOOT全部載入到RAM中,並執行,實現代碼如下:

;------------------------------------------------------------------------------
;    Copy boot loader to memory

         ands     r9, pc, #0xFF000000      ; see if we are in flash or in ram
         bne      %f20                     ; go ahead if we are already in ram

         ; This is the loop that perform copying、
         ldr      r0, = 0x21000            ; offset into the RAM
         add      r0, r0, #PHYBASE         ; add physical base
         mov      r1, r0                   ; (r1) copy destination
         ldr      r2, =0x0                 ; (r2) flash started at physical address 0
         ldr      r3, =0x10000             ; counter (0x40000/4)
10       ldr      r4, [r2], #4
         str      r4, [r1], #4
         subs     r3, r3, #1
         bne      %b10

         ; Restart from the RAM position after copying、
         mov pc, r0
         nop
         nop
         nop

         ; Shouldn't get here、
         b       、

EBOOT在實現必備功能的前提下,我們還可以擴充其功能,譬如說初始化LCD,並顯示特定的啟動畫面,顯示載入映像的進度等。

    本文粗略的介紹了WinCE6、0下EBOOT的內容,但沒有涉及具體的代碼實現,相關代碼可以參考目錄C:"WINCE600"PLATFORM"DEVICEEMULATOR"SRC"BOOTLOADER"EBOOT。總的來說,EBOOT的核心功能就是引導作業系統映像。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.