Windows Embedded CE 6.0特性及系统结构

开发
文章是对部分内核知识的整理和总结,Windows Embedded CE 6.0是非常优秀的嵌入式系统,对其内核的学习对我们开发、移植驱动和应用程序,对开发、移植嵌入式系统都非常有好处。

Windows Embedded CE 6.0是非常优秀的嵌入式系统,对其内核的学习对我们开发、移植驱动和应用程序,对开发、移植嵌入式系统都非常有好处。

1.Windows Embedded CE 6.0系统的一些关键特性

◆32位多任务操作系统。
◆多任务抢占、硬实时。
◆支持的处理器体系结构:ARM, x86, SH4, MIPS。
◆组件化。
◆Based on Win32 API Set,桌面系统的一个扩展子集,超过2000个函数可以使用。
◆标准的Portable Executable(PE)文件格式。

另外需要注意的是Platform Builder开发工具集成的Visual Studio中,作为后者的一个插件。开发Windows Mobile 6.x时使用的还是独立的Platform Builder for Windows Mobile,相信到Windows Mobile 7.0时会有所变化。

作为通用性桌面操作系统的Windows XP取得了巨大的成功,关于其系统特性请看这。所以微软又推出了Windows XP Embedded。与Window XP Embedded需要借助第三方插件才能实现实时操作系统相比,Windows Embedded CE 6.0是具有32 位本机实时支持的统一内核的。微软另一款具有本机实时支持统一内核的嵌入式操作系统是Windows Embedded NavReady。

2.系统架构

下图为Windows CE 5.0系统架构,与下下6.0的架构图相比,我们发现:

Windows Embedded CE 6.0系统架构

(1).5.0时的NK.EXE被分为6.0的NK.EXE(交给OEM开发)和Kernel.DLL(微软开发)。
(2).驱动分成内核态和用户态。
(3).从图上看不出来的内存架构变化。 #p#

以下为Windows Embedded CE 6.0系统总架构:

Windows Embedded CE 6.0系统总架构

以下为更详细的架构图,结合上图我们可以看到:

1.OEM商主要承担OAL模块(包括:NK.EXE和Bootloader)以及内核态驱动的开发。

2.其实从现在的市场来看OEM商有时也会负责应用和用户态驱动的开发。

注:ISV(Independent Software Vendors):独立软件开发商。

3.中断机制

下图为中断模型:

中断模型

(1).设备发起一个硬件中断。->
(2).内核(Kernel.DLL)响应该中断,并call对应的中断服务例程(ISR)。->
(3).中断服务例程快速处理该中断。->
(4).驱动中的中断服务线程(IST)被通知处理该中断,这里内核使用Event通知IST。

这个过程中涉及到的ISR和IST都会处理中断,但有所不同,前者的中断级别更高,所做的工作也很简单,而后者做主要的处理工作。

4.线程、线程调度、线程同步

线程是被系统独立调度和分派的基本单位,当系统创建一个进程时,至少会存在一个线程(主线程)。所以进程可以被理解为一个壳子。关于线程更多基本知识在此略去。应用程序一般运行在248-255优先级,被创建的线程默认优先级为251。

另外我们要注意的一个很重要问题是优先级反转(Priority Inversion)问题,比如现在有三个优先级不同的线程A、B、C, A的优先级***,B次之,C***。其中A和C需要的资源部分相同。处理器当前执行线程C,比C优先级更高的B有可能打断C而进入运行状态,这样C占有的资源什么时候释放就是一个未知的时间。A只有在C释放了它所需要的资源后才能被调度,A被阻塞的时间也是未知的。这样,低优先级的B先于高优先级的A被调度,优先级发生了逆转。

这个问题在XP里面不是一个严重的问题,最多A被多阻塞了一段时间。但是,在实时系统里面,特别是硬实时系统里是个很严重的问题。这个问题的解决方法一般有两种,Windows Embedded CE 6.0采用的后一种方法。

线程同步

被用于线程同步的对象有很多种:临界区(Critical Setions)、互斥体(Mutexes)、信号量(Semaphores)、事件(Events)、Interlocked Fuctions,这里对此进行简单的介绍,关于更详细的资料(比如临界区和互斥体的本质区别以及性能比较)请从网络上查阅,比如这里。在CE 6.0系统中每个同步对象都有自己独立的名字空间,比如一个空字符串"”被作为一个名字对象处理。在桌面系统中所有同步对象是共享名字的空间的。

【编辑推荐】

  1. Windows Embedded CE 6.0 R3 ***嵌入式系统发展趋势
  2. 浅析Windows Embedded CE下Native C++的开发
  3. 点评Windows Embedded CE 6.0 R3的产品差异性
  4. 微软发布Windows Embedded CE 6.0 R3
  5. 试用Windows Embedded 6.0 R3开发手记

 

责任编辑:王晓东 来源: IT168
相关推荐

2009-07-23 13:10:00

Windows Emb

2009-09-24 09:45:07

Windows Emb

2009-07-23 14:08:46

Windows Emb

2009-11-03 13:31:43

Windows Emb

2010-04-07 13:01:09

Windows Emb

2009-04-22 17:18:29

WindowsCEVistaXP

2010-03-03 16:37:50

Windows Emb

2010-01-12 15:46:51

Windows Emb

2011-08-01 16:52:42

Windows CE 嵌入式

2011-03-31 17:49:51

微软嵌入式WindowsEmbe

2010-03-17 14:21:47

Windows Emb

2009-09-02 09:15:24

Windows Emb

2011-04-19 18:42:54

Windows Emb特性

2009-07-03 13:12:59

Windows CE

2010-01-13 14:18:52

Windows Emb

2009-11-02 17:36:01

Windows Emb

2010-06-04 18:19:24

Windows Emb微软嵌入式Windows Emb

2009-11-10 16:40:46

WindowsEmbeddedWindows7

2009-07-03 16:48:05

Windows CE

2011-06-16 13:36:29

Qt Windows CE
点赞
收藏

51CTO技术栈公众号