加载中,请稍候...
|
|
WinCE_5.0_内核启动过程_
关键词:
WinCE,5.0,内核启动过程,
|
|
简介:/* Generator: eWebEditor */p.MsoNormal, li.MsoNormal, div.MsoNormal {margin:0cm;margin-bottom:.0001pt;text-align:justify;text-justify:inter-ideograph;font-size:10.5pt;font-family:"Times New Roman";}div.Section1 {page:Section1;}/* Generator: eWebEditor */p.MsoNormal, li.MsoNormal, div.MsoNormal {margin:0cm;margin-bottom:.0001pt;text-align:justify;text-justify:inter-ideograph;font-size:10.5pt;font-f... |
品 牌
|
葩星
|
|
产 地
|
中国
|
型 号
|
PXF0248
|
折 扣
|
其他电询
|
|
咨询专家:
|
产品说明:
WinCE 5.0 内核启动过程 k‑m9l8 本文简单描述一下wince5.0内核的启动流程,以mips cpu为例。msdn有一篇文章叫做Microsoft Windows CE 5.0 Board support Package,Boot Loader,and Kernel Startup Sequence非常不错,可以参考。
91B:mK 1. startup.首先,内核最先执行的代码位于oal当中,叫做startup,这段代码由微软留给开发者定制。当然,各个参考bsp里面都有现成的代码,开发者只需在此基础上改动。在startup()的末尾,会跳转到kernelstart函数。 $,.7MpZ 2. kernelstart. 位于WINCEROOT\Private\winceos\coreos\nk\kernel\mips\startup.s 这里面是汇编代码。是所有的mips开发板都要执行的操作。所以这里面会根据不同cpu类型作判断。虽然是汇编代码,好在里面还是有不少注释,通过这些注释,可以看出它里面主要在干什么。 !W
+Vbw 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的内容赋值的。 8@CgF)9, 4.MIPSInit. KernelRelocate处理完成之后,MIPSInit会被调用。位于WINCEROOT\Private\winceos\coreos\nk\kernel\mips\mdsched.c.这里是通用的mips的处理,其中会调用oal当中的OEMInitDebugSerial去初始化调试用的串口。 arDG]r@p 5.OEMInit.接下来就是大名鼎鼎的OEMInit了。这个函数由开发者定制。是c语言的。由上面的分析我们知道,在进入OEMInit的时候,串口已经初始化完毕,所以现在我们已经可以通过串口打印出一些调试信息了。而在此之前,我们只能通过led的方式作一些简单的显示。 YjloW8P 6.KernelFindMemory. 位于WINCEROOT\Private\winceos\coreos\nk\kernel\loader.c p
: $DER OEMInit返回之后调用该函数。这个函数主要是把ram划分为两部分:object store和应用程序可以使用的部分。object store就是用于存贮wince的ram file system的,例如开机以后我们看到的\windows目录就是位于ram file system. -R'j~h}d 7.KernelInit. 位于WINCEROOT\Private\winceos\coreos\nk\kernel\kwin32.c $o`RjT&u 这部分跟cpu无关,是kernel要完成自己的初始化。至此,kernel得初始化全部完成,可以开始线程调度。 .WV#j>/:+s 还有一点需要说明的时,kernel在完成初始化之后,会以IOCTL_HAL_POSTINIT为参数调用OEMIoControl,所以我们可以在这里打印出一句话表明kernel已经初始化完成。 4m'w@ssZG 除了kernel本身(nk.exe)之外,第一个被创建的进程是谁呢,对,就是文件系统,filesys.exe. n
U-7d5 虽然他不是kernel本身的一部分,但是如果没有文件系统,wince也是玩不转的,注册表的初始化就是由文件系统来完成。
免责声明/版权申明 Passiontech
所有文章为网上搜集或私下交流学习之用,任何涉及商业盈利目的均不得使用,否则产生的一切后果由您自己承担!
本站仅仅提供一个观摩学习的环境,将不对任何资源负法律责任。所有资源请在下载后24小时内删除。
若无意中侵犯到您的版权利益,请来信联系我们,我们会在收到信息三天内给予处理!
参数资料:
|
WinCE_5.0_内核启动过程_WinCE,5.0,内核启动过程,
|
价格列表:
WinCE_5.0_内核启动过程_WinCE,5.0,内核启动过程,
|
相关产品:
WinCE_5.0_内核启动过程_WinCE,5.0,内核启动过程,
|
|
咨询历史:
|
|