wince 5 0 核心啟動順序 ARM

2021-05-24 14:44:39 字數 2396 閱讀 8069

kernel startup sequence

startup()

kernelstartup()

arminit()

oeminitdebugserial()

oeminit()

kernelinit()

heapinit()

initmemorypool()

procinit()

schedinit()

firstschedule()

systemstartupfunc()

ioctl_hal_postinit

上表是基於arm 的wince核心啟動順序.

粗體字表示oem 需要定製的部分.

1. startup() -> startup.s 

位於%_winceroot%/platform//src/kernel/oal 目錄下

這個函式是bootloader調轉到run-time映象後最先執行的**,位於我們的bsp開發包中,由oem定製.程式最後啟動kernelstart().

2. kernelstart() -> armtrap.s (private)

位於 %_winceroot%/private/winceos/coreos/nk/kernel/arm 目錄下

這個函式是核心的main entry 點.

3. arminit() -> mdarm.c (private)

位於 %_winceroot%/private/winceos/coreos/nk/kernel/arm 目錄下

這個函式呼叫4,5來對main arm 進行初始化動作.

4. oeminitdebugserial() -> mdarm.c (private)

位置同上.

初始化串列埠,呼叫bsp 包中的串列埠函式(由oem定製的部分).

5. oeminit() -> init.c

%_winceroot%/platform//src/kernel/oal

這個位於我們bsp開發包中,由oem自行定製,不用多說,做過oal開發的都知道.

6. kernelinit() -> kwin32.c (private)

%_winceroot%/private/winceos/coreos/nk/kernel 目錄下

該函式呼叫7,8,9,10函式對內進行初始化動作.

7. heapinit() -> heap.c (private)

%_winceroot%/private/winceos/coreos/nk/kernel 目錄下

初始化核心堆.

8. initmemorypool() -> physmem.c (private)

%_winceroot%/private/winceos/coreos/nk/kernel 目錄下

初始化核心記憶體池

9. procinit() -> schedule.c (private)

%_winceroot/private/winceos/coreos/nk/kernel

初始化核心程序.

10. schedinit() -> schedule.c (private)

_winceroot/private/winceos/coreos/nk/kernel

初始化排程管理器(scheduler) ,建立systemstatupfunc 執行緒.

11. firstschedule() -> schedule.c (private)

%_winceroot/private/winceos/coreos/nk/kernel

啟動排程管理器(scheduler), 呼叫systemstartupfunc(),ioctl_hal_postinit

12. systemstartupfunc() -> schedule.c (private)

%_winceroot/private/winceos/coreos/nk/kernel

當所有核心需要的初始化動作完成之後並且當系統準備啟動和執行核心執行緒,systemstartupfunc被呼叫.systemstartupfunc以ioctl_hal_postinit為引數呼叫oemiocontrol,oemiocontrol,

13. oemiocontrol,這個我也不多說了,由我們oem定製.

以上為wince 基於arm cpu 的核心啟動的過程.

參考:1. microsoft windows ce 5.0 board support package, boot loader, and kernel startup sequence

;2. wince 5.0 核心啟動過程  .

WinCE 5 0 核心啟動過程

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

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

本文簡單描述一下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 核心啟動過程 ...