Windows Mobile boot 過程詳解

來源:互聯網
上載者:User
Wince 中可以比較方便的查看系統啟動的過程。
OEM開發時,需要寫一些初始的代碼。這些初始代碼要和核心部分的HAL (hardware abstraction layer)相一致。當OEM根據自己的硬體平台搭建一個系統時,HAL和Wince的核心是通過靜態連結來產生NK.exe的。
實際上,當OEM Porting 一個Wince新平台時候,他們所寫的代碼要遠遠多於HAL。他們還需要寫一些Graphics Windowing and Event Subsystem (GWES)下的thin layer代碼,以便和GWE使用的一些基本驅動相串連。此外,OEM還必須寫一系列裝置驅動,包括顯示屏,鍵盤,觸摸板,串口,音訊裝置等等。HAL和驅動通常被稱作OEM
適配層,即OAL(OEM Adaptation Layer) .
下面以Reset的過程來分析一下啟動的過程:
1. 當系統Reset後,CPU跳到NK.exe的入口地址,即Wince的核心模組的地址。進入點的代碼通常是由OEM來寫的而不是微軟.這部分代碼通常是用彙編來寫,一般被命名為“Startup”,他主要負責初始化CPU,使核心能操作他。因為Wince上用的大部分是嵌入式的CPU,而這樣的CPU通常有大量的寄存器,這些寄存器必須被設定好以便配置系統的速度等。有時還需要配置寄存器的基地址。Startup 也常常用來對一些緩衝進行初始化,以確保ensuring that the system is in an uncached, flat addressing mode.
當Startup 完成任務後,他將跳轉到核心的進入點--KernelStart。這是微軟為NK寫的代碼。KernelStart開始配置虛擬記憶體管理器,初始化預設handler的中斷向量列表;並且調用下層的OEM層初始化debug串口。
2.
然後KernelStart通過KernelRelocate從ROM拷貝已初始化好的堆資料到RAM中,以初始化他的本地堆。現在本地的堆已經為NK.exe初始化好了,此時代碼的動作更像一個程式而不是Loader了。然後核心回調下面的HAL的OEMInit 程式。OEMInit通常是用C寫的,他的工作是去初始化所有的OEM制定的硬體。主要包括:hooking interrupts, initializing timers, and testing memory.
3.
系統對整合的外圍裝置做一些初始的配置,然後放置他們為啞態,直到他們的驅動能被載入。在啟動過程中,OEMInit 通常畫一些閃點在顯示屏上。當OEMIint返回後,核心回調進入HAL,詢問系統是否有可用的RAM。當OEM在建立一個ROM Image時應該大概估計一下RAM的大小和位置,並定義一下他們的大小和分配。OEM用程式OEMGetExtensionDRAM來告訴核心是否有可用的RAM.一旦OEMGetExtensionDRAM返回,核心能中斷並調用發送器來安排系統的第一個線程。此時,核心開始尋找檔案“FileSys.exe” 並開始那個應用。系統載入器(用來把EXEs和 DLLs載入到記憶體)按照一定的順序尋找並定位FileSys.exe.
核心通過擴充可以來決定是否把系統串連到debugging station。debugging station是指運行著特定調試軟體的PC.
4.
PC和Wince系統可以通過串口,並口或者專用的乙太網路來串連。如果系統發現存在這樣的連結的話,當系統要求載入一個檔案時,載入器將在PC上尋找這個模組(EXEs或者DLLs)。常用的技巧是,我們可以無縫的擴充Wince的\Windows目錄去包括任何Debugging PC上特定目錄下的模組。這樣系統會載入那些BOOT過程中沒載入的模組。然後,當系統開始運行後,你可以直接載入PC上的模組,而不用把他們拷貝到Wince的目標儲存區。FileSys 用來管理檔案系統,資料庫函數和註冊。當FileSys被載入時,他會在RAM中尋找是否有已經初始化好的檔案系統。如果找到了,他就使用這個已經初始化好的檔案系統,並允許Wince的裝置存放資料到RAM的檔案系統上。如果沒找到的話,他會建立一個能和ROM裡的檔案融合的空RAM檔案系統。FileSys通過一個ROM Image 內建的列表可以知道那些檔案是存在ROM中的。(ROM Image 是通過ROM builder program來產生的,ROM builder program可以把所有單獨的程式合并為一個Image)。FileSys通過一個儲存在ROM上的檔案來讀取系統預設的目錄結構。目錄結構的入口組成是由微軟推薦的。除了初始設定檔案系統以外,FileSys還建立預設的資料庫Images和預設註冊表。預設資料庫和和註冊表的初始化images也是被微軟和OEM定義在ROM的檔案中的,這個檔案驅動的初始化過程,允許OEMs自訂檔案系統的初始化images。
一旦檔案系統初始化完成後,系統初始化就能夠繼續進行。但是,在這個時候核心需要去等待,因為他需要來自的註冊表的資料去繼續啟動的過程。特別是,核心會尋找註冊表裡面[HKEY_LOCAL_MACHINE]\Init下面的值。這個鍵下面的值將提供,name,order以及一些依賴關係。那些能被啟動的進程都是通過Launchxx來指定的,其中xx是一個啟動順序的數字。一個可選的值Dependxx,用來啟動一個有依賴關係的應用,即他的啟動依賴於指定的XX,其中XX在順序隊列裡要比他早。
例如:
Value                   Data            Comments
Launch10                SHELL.EXE

Launch20                DEVICE.EXE

Launch30                GWES.EXE
Depend30                0014            Depends on Device (0x14 == 20)

Launch50                EXPLORER.EXE
Depend50                0014 001E       Depends on Device and GWE
核心啟動這些應用的順序是按照他們Lannch後面數位大小來的。核心要載入每一個列出的應用。當應用成功的完成初始化後,他通過函數SignalStarted 發送成功初始化訊號給核心,同時把XX也傳給核心。核心通過這些應用對SignalStarted的調用,能知道任何相關的進程現在能被啟動。這個啟動列表通常是由OEM使用。你可以插入其他的應用到這個列表。只要保證了你的應用所以懶得應用已經被提前載入了就行。例如:你可以寫一個應用,在Device之後,GWES之前載入他,只要你的應用在GWES被初始化之前不調用任何window manager or the graphics functions等就可以。註:如果你在Explorer之前開始一個具有標準使用者介面的應用的時候,你會給Explorer代碼麻煩,所以除非你要啟動一個應用來支援系統的服務,否則你應該使用Explorer在StartUp來啟動你的應用。此外,你不會獨立的成功啟動依賴於Explorer的應用,因為Explorer.exe初始化時不調用SignalStarted。
Shell.exe
Shell是一個比較有趣的應用,因為在大多數系統中他甚至不在ROM中。Shell.exe是CESH的Wince部分,命令列監視器。因為Shell不在ROM中,所以只有通過把系統和PC debugging station相串連後才能載入他。通常他都是自動載入的。
CESH 使用核心去串連debugging PC來和程式員交流資訊。CESH在PC上開啟一個console session,可以替代一個在PC上正開啟的檔案。CESH 調試器給OEM提供了大量有用的函數。 首先,他給OEM開發人員一個命令列的SHELL,在PC上運行他能開始一個應用,查詢系統狀態,讀寫系統的記憶體等等。
CESH調試器也讓開發人員方便的操作Wince debug zones 的調試資訊。當你開發時,調試資訊的輸出是很有用的。Wince 中調試資訊是通過串口發送的。這樣常常有 很多無關的資訊煩擾你去發現有用的資訊。debug zones允許開發人員能夠通過使用宏,選擇性地開啟和關閉來自代碼的調試訊息輸出。這允許您跟蹤代碼的執行狀況,而無需暫停作業系統。每個資訊被分配到16個debug zones之一,因此,開發人員能使用CESH來開啟或關閉16個zones的每一個。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.