wince5 0核心的啟動流程(MIPS為例)

2021-05-22 08:36:43 字數 1742 閱讀 7945

本文簡單描述一下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也是玩不轉的,登錄檔的初始化就是由檔案系統來完成。

wince 5 0 核心啟動順序 ARM

kernel startup sequence startup kernelstartup arminit oeminitdebugserial oeminit kernelinit heapinit initmemorypool procinit schedinit firstschedule s...

WinCE 5 0 核心啟動過程

本文簡單描述一下wince5.0核心的啟動流程,以mips cpu為例。msdn有一篇文章叫做microsoft windows ce 5.0 board support package,boot loader,and kernel startup sequence非常不錯,可以參考。1.start...

WinCE 5 0 核心啟動過程 中文版

標籤 wince microsoft 彙編object file windows 2009 07 08 09 58 837人閱讀收藏 舉報 arm9 24 wince 5.0 核心啟動過程 中文版 2008 08 23 11 19 分類 oal 字型大小 大中 小 wince 5.0 核心啟動過程 ...