WINCE | Microsoft Windows CE
快速反应的嵌入式应用常常管理严格的时间反应。例如,制造过程控制,高速的数据采集设备,电讯交换设备,医用设备,空中“有线”控制,武器发射装备,空间航行和导航,实验室,实验控制,汽车发动机控制,机器人系统。
为保证这种功能,就意味着不仅需要计算精确性,还有结果的时间性,此种应用必须在指定的时间参数内做出反应。
实时系统的广义定义是“对任何外部刺激,计算机做出及时反应是至关重要的系统”,标准定义在Internet newsgroup corp realtime group中。实时定义为:一个实时系统它的计算正确性,不仅依靠于计算逻辑上的正确,还包括及时的产生结果。如果没有达到系统时间限制条件,系统也是失效的。
搞清楚实时系统和实时操作系统(RTOS)的区别至关重要,实时系统代表所有系统组成设备——硬件,操作系统和应用——它需要达到系统的要求,实时操作系统(RTOS)只是整个实时系统的一个组成部分,它必须提供足够的功能以确保整个实时系统达到要求。
同样,搞清快速操作系统和实时操作系统之间区别,也很重要,对于一个RTOS虽然达到全面要求十分有用,但并不是它自己达到这种要求。Internet neusgronp cornp.realtime列举了作为一个实时操作系统,必须达到的要求:
* OS(操作系统)必须是多线程和优先级之分。
* OS必须支持线程优先级。
* 一个优先级继承的系统必须存在。
* OS必须支持可预测的线程,同步发送机理。
另外,OS的行为必须是可预测的,这意味实时系统的开发者必须对系统中断级,系统调用和分时了如指掌:
* 必须知道OS和设备驱动器的中数据匹配最大时间。
* 设备驱动器用来处理一个中断最大时间和关于这些驱动器的中断申请信息必须清楚。
* 中断响应(从中断到运行时间),必须可预测并满足功能要求。
每次系统调用时间必须可以预测,并且独立于系统的对象数目。本篇论文论述了微软Windows CE 操作系统是如何达到一个实时系统的要求,更有意义的是,Windows CE 保证一个时间的上限,它在收到中断后开始一个实时的优先级线程。本论文论述了对特定参考平台的中数据响应时间,参考为有 Hinathi SH3 的微处理器的 “Odo” 平台。
微软Windows CE 被设计成针对小型设备(它是典型的拥有有限内存的无磁盘系统)的通用操作系统。Windows CE 可以通过设计一层位于内核和硬件之间代码来用设定硬件平台,这即是众所周知的硬盘压缩层(HAL),(在以前解释时,这被称为 OEMC (原始设备制造)适应层,即 OAL; 内核压缩层,即 KAL。 以免与微软的 Windows NT 操作系统 HAL 混淆)
不象其它的微软 Windows 操作系统,Windows CE 并不是代表一个标准的相同的对所有平台适用的软件。为了足够灵活以达到适应广泛产品需求, Windows CE 采用标准模式,这就意味着,它能够由一系列软件模式做出选择,从而使产品定制。另外,一些可利用模式也可作为其组成部分,这意味着这些模式能够通过从一套可利用的组份做出选择,从而成为标准模式,通过选择,能够达到系统要求的最小模式, OEM 能够减少存储脚本和操作系统的运行。
Windows CE 关于 VC++ 5.0 开发系统嵌入式工具包,提供系统库、工具、文本和样本代码,以使 OEMS 能够对特定的硬件平台使 Windows CE 标准定制。嵌入式工具包也包括设备驱动包(DDK)和软件开发包(SDK) ,DDK 提供了关于写驱动器的附加文本,SDK 提供库、头文件、样本代码、文本以允许,开发者对基于 Windows CE 的平台进行写操作。 Windows CE 提供了相同的程序界面,以用来为其它的视窗操作系统开发功能,例如,Windows CE 版本 1.01支持大约1000个微软的Win 32 API 函数的其中500个。这就意味着大量不同类的工具,第三方书籍,关于 Win 32 开发者训练教程,可以替代或为 Windows CE 系统的开发者所用。
实时系统的开发者能够使用,关于VDFF 5.0 的嵌入式工具包,以把操作系统转移到特定的平台,并为这个平台开发附加设备驱动器和实时功能。
线程和线程优先权级
Windows CE 是有优先级的多任务操作系统,它允许多重功能、进程,在相同时间系统中运行 Windows CE 支持最大的 32 位同步进程。一个进程包括一个或多个线程,每个线程代表进程的一个独立部分,一个线程被指定为进程的基本线程,进程也能创造一个未定数目的额外线程,额外线程实际数目,仅由可利用的系统资源限定。
Windows CE 利用基于优先级的时间片演算法以安排线程的执行,Windows CE 支持八个不同的优先级,由0到7,0代表最高级,它在头文件 Winbasw.h中定义。
优先级 描述
0(最高级) 关键的线程优先级(最高优先等级)
1 最高线程优先级
2 高于通常的线程优先级
3 通常线程优先级
4 低于常规线程优先级
5 最低线程优先级
6 高于IDLE的线程优先级
7(最低) IDLE线程优先级(最低优先级)
级别0和1通常做为实时过程和设备驱动器,级别2-4做为线程和通常功能,级别5-7做为是低于其它功能级别,注意级别6是目前状态并有稳定联接。
优先权唯一的取决于线程优先级,拥有高级优先权的线程安排优先运行,同一优先级的线程,以循环优先先级方式运行,即每个线程接受定制的时间或时间片,定量时间默认值为25毫秒 (Windows CE 2.0 支持在 MIPS 平台更改定量时间)。较低优先权的线程,要直到较高级线程完成之后再运行,也即直到他们或者放弃或停止。一个重要的例外是最高优先级的线程(级别0,关键时间优先级)不与其它的线程共享时间片,这些线程连续执行直到他们完成。不象其它的微软窗操作系统,Windows CE 是固定不能改变,它不匹配基于这引进优先级的中断,他们能够暂时改动,但仅能通过 Windows CE 内核以避免所谓的的“优先权倒置”。
优先权倒置指的是当它们同时竞争同一资源时,低优先级的线程,阻碍了高优先权线程对资源的利用。为了改正这种局面并解放较高优先权的线程,Windows CE 允许低级优先权继承,严格的线程优先权,并且运行较高优先级直到它释放所用资源。
例如,如果一个线程在最高优先权运行试图莸取由低级优先权占有的互斥体,低级优先权的线程变成高级优先权,并且运行直到它释放互斥体。优先权倒置适用于系统的所有线程。例如,甚至在优先级别1运行的内核线程能转成级别0,如果优先级0线程运行内存分页代码,将引起块失误。
基于优先级的多任务设计,保证运行在最低级的线程在一个预所知时间段执行。本论文在后面讨论设定响应,对于指定的平台和公式,并由其它的平台获取数字。在 DAK 和 SDK 的工具,显示了线程状态和优先级别,并描绘指定实时系统操作轮廓。
线程同步
实时系统必须保证进程和线程同步,例如,如果实时应用的一部分在另一部分获得最多当前数据前即完成,此应用的管理进程可能不稳定,同步将确保在应用线程间交换正确。
如同其它的 Windows 操作系统一样,Windows CE 为线程同步提供了一个丰富的“等待对象”,这包括关键部门、事件、互斥体,些等待对象,允许一个线程减缓它的运行并且等待直到指定事件发生。
Windows CE 将互斥体、关键部分、事件请求按“先入先出,优先级(FIFO)”顺序排列:不同的先入先出顺序序列定义成八个不同的优先级,在给定的优称级的线程请求,将被放在优先级列表末尾,当优先级倒置出现时,调度程序调整这些序列。
除了等待对象,Windows CE 支持标准的 Win 32 时间 API 函数,这些来自内核的应用,软件中断将获得时间间隔,它被用来管理实时应用。通过调用 GetTickCont 函数,它能够返回几毫秒,线程能够使用系统间隔时间。关于更详细的分时信息,Windows CE 内核也支持Win 32 API 函数QueryPerformanreCounter 和 QueryPerFormanteFrequency 。OEM 必须为这些调用提供硬件和软件支持,它提供一个较高的时间分辨力和 OAL 界面其它方面。
其它方面考虑
Windows CE 提供了一个重要的存储系统,例如,当目前某些运行 Windows CE 的平台提供 4MB 的物理内存,Windows CE 支持一个重要的 2GB 的地址空间,每个进程联接在它自己的32MB 物理空间上,当它需要产生内存分页中断(这可能影响线程执行时间),物理内存进行线程代码或数据内存分页。
内存分页输入输出,将比实时进程优先级低。在实时进程中内存分页仍可自由出现,但这要确保后台的实际内存管理赢得实时系统优先权。
实时线程应该锁存在内存中,以防止这些无关紧要的内存分页阻碍其运行,它们可能会占用实际内存管理系统。
Windows CE 允许映射,这将阴止多个进程共享同一物理内存,结果将会导致协同进程间或驱动器与映射快速的数据传送,内存映射能够戏剧性的增强实时操作。
中断处理: IRQS ISRS 和 ISTS
实时应用被设立在指定的时间间隔内,对外部事件做出反应,实时应用使用中断做为一种确保外部事件由操作系统获知的方式。在 Windows 中,内核和 OEM 适应层 (OAL)被设定成使系统其它部分的中断和调度最优化。Windows CE 平衡操作,并通过把中断过程分成两部分而使执行更加容易:它分为中断服务程序(ISR)和中断服务线程(IST)两部分。
每条硬件中断申请线(IRQ),与一个ISR相连。当中断成立和中断出现时,内核为此调用寄存的 ISR, ISR 为中断处理的内核模式部分尽可能短的保存。它首先将内核放在适合的 IST 上。
ISR 执行它的最小处理并返回一个 ID 号到内核,内核检查返回的中断 ID 号,并设置相关事件,中断服务线程等待事件。当内核设置事件时,IST 停止等待并开始执行,附加的中断进程,中断处理大部分实际上出现在 IST 中,两个最高的线程优先权 (级别0和1),通常指定为 ISTS,保证这些线程运行得足够快。
正如前面所说,处在最高级的 ISTS 不能被其它的线程占用,这些线程持续执行直到它们截止或放弃。
Windows CE 不能支持群体中断,这就意味着当以前一个中断处理中,另一个不同接受服务,也就是当内核位于 ISR 时如果中断出现,在为新的 IRQ 开始 ISR 前它将一直执行直到ISR 结束,这将引起硬件中断和 ISR 开始之间的延迟,拖延和响应时间中断响应。
|
|