打印

内核启动之二

[复制链接]
1824|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
high|  楼主 | 2008-1-8 09:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
到这里获得更好阅读效果:
http://groups.google.com/group/wince_cn/web/%E5%86%85%E6%A0%B8%E5%90%AF%E5%8A%A82


 

此前,我们知道了内核启动之前的整个过程.按照这个指导,可以完成oal的设计.整个过程的简要回顾如下:

 

StartUp()

     KernelStart() / KernelInitialize()

          <Main kernel initialization function>

               OEMInitDebugSerial()

               OEMInit()

          KernelInit()

               HeapInit()

               InitMemoryPool()

               ProcInit()

               SchedInit()

     FirstSchedule()

          SystemStartupFunc()

          IOCTL_HAL_POSTINIT

接下来,内核怎么运行的?在FirstSchedule之后发生了什么?

SystemStartupFunc()



    

KernelInit2();

Load:coredll.dll

OEMIoControl();

InitWatchDog ();

CreateThread:PowerHandlerGuardThrd

Load:shimeng.dll

CreateThread:CleanDirtyPagesThread

CreateThread:RunApps

Endless While(1):AlarmThread
 
 

 

 

 

 

 

 

 

OEMIoControl()会透过IOCTL_HAL_POSTINIT命令字调用OAL函数,这给了OEMs最后的机会执行其他初始化工作.

InitWatchDog()会初始化看门狗.默认的情况下,ce不会使用硬件看门狗,而是利用系统tick来设计一个’伪’看门狗功能.如果想使用硬件看门狗指定,需要更改位于privatewinceoscoreos kkernelwatchdog.c文件里面的一个指针变量

void (* pfnOEMRefreshWatchDog) (void) = FakedRefreshWatchDog;

将上面的函数指针重新赋值到自定义的看门狗更新函数.

PowerHandlerGuardThrd是一个优先级为1的线程(最高线程优先级).它不停的等待事件hEvtPwrHndlr,然后调用__debugbreak()函数.我认为这是一个电源监控保护线程,配合电源管理,比如低压,掉电时候可以触发事件hEvtPwrHndlr.来启动这个保护线程.

Shimeng.dll是一个Shim engine.源代码位于PRIVATEWINCEOSCOREOSNKVERIFIER.它可以拦截对内核的系统调用,象是隔离应用程序或者第三方dll与内核之间的一个’垫子’.它配合加载器(loader)工作.loader加载一个exe或者dll时候都会通知shim engine,然后shim engine去检查注册表[HKLMshimengine],看看是否此exe或者dll需要被shim隔离. Douglas Boling在Using the Windows CE and Windows Mobile 5.0 Application Verifier一文中涉及到对shim engine技术的应用.

CleanDirtyPagesThread线程是一个idle优先级的线程,当所有初始化结束,它将清除一些remain memory.

AlarmThread是一个Low Memery警告监控线程.当上诉所有任务完成,系统将自己的优先级降低到idle级别,进入一个死循环.这相当于一个idle的线程,在这个线程里面会等待hAlarmThreadWakeup事件.在HoldPage()会设置这个事件,此后,系统将进行换页等动作改善低内存状态.
相关链接:http://groups.google.com/group/wince_cn/web/%E5%86%85%E6%A0%B8%E5%90%AF%E5%8A%A82

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

1078

帖子

0

粉丝