WINCE启动流程

wince6.0的详细启动流程,主要讲OAL这一部分:http://www.cnblogs.com/we-hjb/archive/2008/10/12/1309596.html

WINCE实际上是由一些运行中的进程组成的,当系统启动时,至少会创建以下4个进程:

1> NK.exe:提供内核服务,是操作系统核心部分。

2> GWES.exe:提供用户界面服务和消息管理机制。

3> Device.exe:加载和维护系统设备驱动程序。

4> Filesys.exe:加载和管理文件系统。

由于运行WINCE的硬件平台较多,所以要求设备提供商提供一些初始化代码,即Bootloader。当为特定平台建立系统时,OAL层代码与WINCE内核静态代码连接产生NK.exe。

系统复位后,跳转到Bootloader入口处。这部分代码一般由汇编编写,完成初始化系统内核的功能。

启动程序完成任务以后,跳转到内核入口函数Kernelstart。该函数负责配置虚拟内存管理器,初始化默认处理程序的中断向量表,以及向下调用OEM层来初始化调试串行端口。

然后,在一个称为“Kernel Relocate”的过程中,Kernelstart通过将已初始化的堆数据从ROM复制到系统RAM中来初始化它的本地堆。此时,用于NK.exe的本地堆已经初始化完成,内核向下调用HAL层中的OEMInit函数。

OEMInit函数通常用C编写,它的工作是初始化专用的硬件设备。包括开启中断,初始化调试端口等。OEMInit函数通常还负责在启动过程中在显示设备上绘制LOGO图像。当OEMInit函数执行完毕后,内核将回调至OAL来查询系统是否有额外的可用内存。

当系统运行至此处,内核将查找并运行文件系统管理进程Filesys.exeFilesys.exe是管理文件系统,数据库系统和注册表的进程。

当Filesys.exe进程被加载后,它将查看RAM中是否存在已初始化的文件系统。如果存在这样的文件系统,Filesys.exe将使用这个初始化的文件系统。这个特性保证了WINCE设备在断电重启后可以保存注册表数据。

如果Filesys.exe并没有找到任何文件系统,它将创建一个文件系统。清空RAM文件系统。将ROM中的文件合并。Filesys通过读取由RAM生成器程序建立在ROM映像中的结构表,能够获知ROM中的哪些文件存在。

Filesys.exe从存储在ROM中的文件来读取默认的目录结构。文件系统的初始化过程中,允许用户自定义文件系统的初始映像,其范围包含从目录树到注册表中的单个条目。

Filesys.exe的另一个特性起到了文件系统的“后门”作用。在初始化期间,Filesys.exe查看系统是否与调试工作站相连,这个工作站一般是一台运行CESH程序的PC。早期版本中,PC机与WINCE设备之间通过并行端口来实现连接,新版本的WINCE操作系统,一般是通过以太网或者USB进行连接。

Filesys.exe加载后,接下来会加载Shell.exe程序。它是一个运行在WINCE设备端基于命令行的CESH监视程序。

因为Shell.exe程序不在ROM中,所以加载它的唯一途径是将WINCE系统连接到PC调试工作站,这样文件就能自动从PC下载至WINCE设备端。CESH程序不会直接打开PC端的文件,而是启动PC端得控制台程序间接打开文件。CESH调试程序为WINCE开发人员提供了一些有用的API函数。首先,它提供开发人员一个运行在PC机上的命令外壳程序。可以通过该程序来运行应用程序,查询系统状态以及读取和写入系统内存。设备开发人员还可以通过CESH程序查看调试区域的输出信息。在开发软件时,插入调试消息是很有用的。在WINCE操作系统中,这些调试信息是通过调试串口进行发送的。

Shell.exe加载完成后,接下来会加载设备管理器Device.exe。这个进程的主要功能是加载和管理系统中设备驱动程序,包括一些必须动态加载和释放的驱动程序。例如PCMCIA卡驱动程序等。

当Device.exe运行时,它将首先枚举注册表中形如[HEKY_LOCAL_MACHINE/Drivers/BuiltIn]的注册表项,如果其中包含某个驱动程序的信息,那么Device.exe将在系统启动时加载该驱动程序。

接下来被加载的进程模块是图形消息时间子系统GWES.exe。GWES负责提供运行于基本操作系统之上的图形用户界面,直接访问用户界面的硬件,如键盘,鼠标,触摸屏和显示器的驱动程序是有GWES.exe负责加载和管理的。 GWES.exe加载完成后,系统核心进程就已经全部开始加载完毕了。

此时一般还会启动explorer.exe,即WINCE得桌面服务程序,提供用户与操作系统的人际交互界面。一般应在explorer.exe启动后,再运行其他的机遇用户界面的应用程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值