Windows CE.Net有五个主要的模块:内核模块、内核系统调用接口模块、文件系统模块、图形窗口和事件子系统模块、通讯模块。其最大的特点是能提供与PC机类似的图形界面和主要的应用程序。Windows CE.Net嵌入式操作系统的界面显示大多数在Windows里出现的标准部件,包括桌面、任务栏、窗口、图标和控件等。这样只要是对PC机上的Windows比较熟悉的用户,可以很快地使用基于Windows CE.Net嵌入式操作系统的嵌入式设备。
2 WindOWS CE.Net平台下的驱动开发
Windows CE.Net的分层结构给驱动程序的开发带来极大的方便,使得驱动开发只需要针对不同的BSP进行修改,很大程度上减少了开发的工作量。而完成这一工作需要了解两部分的内容,分别是:Windows CE.Net的中断机制和Windows CE.Net.的层次模型。
2.1 Windows CE.Net的中断机制
Windows CE.Net系统的大多数外围设备都是通过产生中断从操作系统获得服务的,如PC卡、板上定时器、键盘、触摸屏等。当设备需要驱动程序服务时,基于Windows CE.Net的平台使用中断信号通知操作系统。
Windows CE.Net把中断处理分成两部分:内核模式的中断服务程序(Interrupt Serice Routine,ISR)和用户模式的中断服务线程(Int-errupt Setice Thread,IST)。ISR通常都比较短,是快速的汇编代码,一般在0AL层代码中,能够直接访问硬件注册表。ISR的唯一任务就是向操作系统返回逻辑中断标志符。中断服务线程(IST)是用户模式线程,在IST中完成大多数中断处理。IST在大多数时间里是空闲的,只有当从函数WaitForSingeObiect()得到中断已经发生的信号后,IST被唤醒去处理它需要处理的中断。通过相关联的带有中断标志的事件可以完成这些。IST需要首先创建一个事件并且用逻辑中断与它相联系。当中断过程完成时,IST应该通知内核重新使能中断。
2.2 Windows CE.Net的驱动模型
Windows CE.Net所有驱动都以动态链接库(DLL)的形式存在,在驱动的实现过程中可以调用Windows CE.Net支持的所有标准API函数。