WinCE 5.0 核心啟動過程

來源:互聯網
上載者:User

轉自:http://blog.csdn.net/ln2002/archive/2007/06/29/1671360.aspx

 

本文簡單描述一下wince5.0核心的啟動流程,以mips cpu為例。msdn有一篇文章叫做Microsoft Windows CE 5.0 Board support Package,Boot Loader,and Kernel Startup Sequence非常不錯,可以參考。

1. startup.首先,核心最先執行的代碼位於oal當中,叫做startup,這段代碼由微軟留給開發人員定製。當然,各個參考bsp裡面都有現成的代碼,開發人員只需在此基礎上改動。在startup()的末尾,會跳轉到kernelstart函數。

2. kernelstart. 位於WINCEROOT/Private/winceos/coreos/nk/kernel/mips/startup.s 這裡面是彙編代碼。是所有的mips開發板都要執行的操作。所以這裡面會根據不同cpu類型作判斷。雖然是彙編代碼,好在裡面還是有不少注釋,通過這些注釋,可以看出它裡面主要在幹什麼。

3. KernelRelocate. kernelstart在完成一些必要的初始化之後,會調用KernelRelocate函數,這是一個比較重要的函數,位於WINCEROOT/Private/winceos/coreos/nk/kernel/loader.c. 它會把kernel用到的資料copy的ram裡面。具體的功能msdn裡面有解釋。 這裡的ram就是在config.bib裡面指定的具有ram屬性的儲存地區,不是ramimage. kernelRelocate以pToc為參數,那麼pToc的值從何而來呢?即便你搜尋完所有的檔案也找不到在那裡pToc被賦值。因為pToc是在makeimage階段被romimage.exe賦值的,也就是說pToc並不是在代碼中被賦值的,是由外力(romimage.exe)改動nk.bin的內容賦值的。

4。MIPSInit.  KernelRelocate處理完成之後,MIPSInit會被調用。位於WINCEROOT/Private/winceos/coreos/nk/kernel/mips/mdsched.c.這裡是通用的mips的處理,其中會調用oal當中的OEMInitDebugSerial去初始化調試用的串口。

5。OEMInit。接下來就是大名鼎鼎的OEMInit了。這個函數由開發人員定製。是c語言的。由上面的分析我們知道,在進入OEMInit的時候,串口已經初始化完畢,所以現在我們已經可以通過串口列印出一些調試資訊了。而在此之前,我們只能通過led的方式作一些簡單的顯示。

6。KernelFindMemory. 位於WINCEROOT/Private/winceos/coreos/nk/kernel/loader.c
OEMInit返回之後調用該函數。這個函數主要是把ram劃分為兩部分:object store和應用程式可以使用的部分。object store就是用於存貯wince的ram file system的,例如開機以後我們看到的/windows目錄就是位於ram file system.

7。KernelInit. 位於WINCEROOT/Private/winceos/coreos/nk/kernel/kwin32.c
這部分跟cpu無關,是kernel要完成自己的初始化。至此,kernel得初始化全部完成,可以開始線程調度。

還有一點需要說明的時,kernel在完成初始化之後,會以IOCTL_HAL_POSTINIT為參數調用OEMIoControl,所以我們可以在這裡列印出一句話表明kernel已經初始化完成。

除了kernel本身(nk.exe)之外,第一個被建立的進程是誰呢,對,就是檔案系統,filesys.exe.
雖然他不是kernel本身的一部分,但是如果沒有檔案系統,wince也是玩不轉的,註冊表的初始化就是由檔案系統來完成。

相關文章

聯繫我們

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