天天看點

MIPS wince6.0系統的啟動過程

    總體函數調用的過程步驟,其實與其他ARM等等CPU調用的函數過程都是一樣的,隻是在代碼組織結構上有所不同的,至于ARM資料在網絡上很多,在這裡我就說說MIPS的系統啟動過程,及其每個函數所處的檔案和目錄位置。

1、  StartUp函數,這是系統啟動的第一個函數,這個函數都是BSP實作的,一般都是放在$(_PLATFORMROOT)/BSP的目錄/src/oal/StartUp.s中,在這裡做硬體初始化,其實在裡沒做什麼處理,直接調用了KernelStart函數。

2、  KernelStart函數,這個函數是放在

$(PRIVATEROOT)/WINCEOS/COREOS/NK/LDR/MIPS/mipstart.s中,在這裡關閉中斷,清理上下文寄存器等等硬體初始化、調用KernelRelocate函數重定向、調用FindKernelEntry找到Kernel.dll的入口(也就是下面要說的NKStartup函數)、調用OEMInitGlobals函數初始化OAL與KERNEL之間的全局變量g_pNKGlobal(這個變量在$(PRIVATEROOT)WINCEOS/COREOS/NK/OEMMAIN/oemglobal.c中),在這裡與ARM有點不同,ARM多了個ARMInit函數處理,ARM為什麼要這麼做,就沒做研究。

3、NKStartup函數,這個函數在$(PRIVATEROOT)/WINCEOS/COREOS/NK/KERNEL/MIPS/startup.s中,在這裡調用了KernelInit、FirstSchedule等等其他的函數,開始線程調用。ARM是用C寫的。

大概的啟動過程就這個樣子,其他的CPU的都差不多,具體啟動步驟可能有點不同。

繼續閱讀