目前,人们正在越来越多地选择Microsoft Windows XP 和Windows XP Embedded 操作系统来运行满足某种特定需求的专用应用程序。Windows XP Embedded 与Windows XP 桌面软件是基于相同的二进制文件,它们在许多方面都是可供选择的最佳平台。但是,当应用需要操作系统提供严格的实时接口和功能时,Windows XP Embedded 和Windows XP 由于自身的原因而无法满足设计者的要求。
针对这方面的需求,人们已经开发出很多面向 Windows XP 平台添加实时扩展的方案,向Windows XP 内核设备驱动程序级提供某种实时功能,但此类解决方案基本上都没有考虑开发环境的易用性和健壮性,也没有考虑和已有的广泛的Windows 应用程序资源共享。
INtime 软件不仅能在Windows 环境中为应用程序添加时间确定性的行为,而且使那些实时应用程序能够达到健壮、可靠和可伸缩性。TenAsys 的设计使INtime 能可靠的在Windows 系统中运行,且不影响Windows 的原来的应用,同时也保证Windows 的重大错误不会传递给INtime 而导致整个系统崩溃,甚至不影响其他应用程序(它们之间存在显式交互的情形除外)。
TenAsys INtime 软件所采取的方法是在加载Windows 操作系统的同时加载一个实时操作系统,以便它们共享相同的CPU 和中断硬件,但在其他方面相互独立。每个操作系统都被封装为一个虚拟机,各自具有自己的描述符表、内存管理等等。当实时活动必须发生时,计算机上下文将切换到该实时操作系统。当这些活动完成后,计算机上下文将切换回Windows 操作系统。因为INtime 实时操作系统独立于Windows 操作系统软件,所以可以增强运行实时进程的环境,以及添加附加功能以提高整个平台的健壮性。
添加INtime 实时功能的平台的典型案例是将应用分成两种不同的部分:一些部分不需要实时服务,而利用Windows XP 平台的功能;另一些部分需要实时内核的实时性能。进程间通讯(IPC) 服务从实时内核进行扩展,以使Windows 应用程序能够共享对在实时内核上创建的对象的访问。数据采集应用程序即为一个简单的例子,其中实时进程负责驱动硬件接口和处理收到的数据,而 Windows 进程提供操作员界面并显示结果。这两种进程都可以用Microsoft Visual Studio 工具开发,其中C 和C++ 由实时环境进行支持。
TenAsys Corporation 的INtime 软件被设计为不仅能够向Windows 平台添加实时功能,而且其添加这些功能的方式能够为实时应用程序提供可靠且可伸缩的平台。如果将该解决方案与Windows XP Embedded 配合使用,则能够为您的嵌入式设备提供健壮的、可伸缩的、确定性的操作系统。
INtime 是被设计为与Windows 操作系统共享硬件平台的实时操作系统。Windows 中安装的组件包括一个Windows 内核驱动程序和一些Windows 服务。该驱动程序管理用于运行内核和实时应用程序的内存,并且管理这两个系统之间的通讯接口。
一个Windows 服务将实时内核加载到已分配的内存中,然后使上下文从Windows 切换到INtime 内核。INtime 将创建一个低优先级线程,用于把Windows 的任务压缩后放入该线程。在INtime 任务结束以后,该线程负责将计算机上下文切换回Windows 系统。因为该线程的优先级仅高于INtime Idle 线程,低于所有其他实时线程。所以,只要牵涉到Intime 实时内核任务在运行时,Windows 任务都是处于等待状态。
在INtime 上下文时,任何实时中断都被直接处理,并且所有其他中断都被屏蔽。当上下文返回到Windows 时,非INtime 的中断将被解除屏蔽,以使其可以被Windows 正常处理。当在Windows 上下文中发生实时中断时,将插入Windows IDT 以引起到INtime 上下文的上下文切换,以便可以处理中断。
系统计时器通常在Windows 和INtime 之间共享。硬件计时器被改编以便按比Windows 要求的速率更高的速率中断,并且只根据需要调用Windows 处理程序。通常情况下,INtime 内核以高得多的速率(时间间隔可以低至100μs)获得计时器中断,以便提供更细粒度的计时服务。计时器处理优化能够避免在Windows 和INtime 之间进行不必要的上下文切换。另外,Windows 某些硬件抽象层(HAL) 入口点被截获和监控,以防止Windows 内核执行某些不需要的操作,例如屏蔽实时中断或者更改硬件系统计时器频率。INtime 不是由通过修改或替换Windows 的HAL.DLL 文件实现硬件抽象层的入口点截获和监控的,而是通过修改已载入内存中的HAL.DLL 实现的。
INtime 内核为实时虚拟机提供操作系统服务。它提供此类内核通常会提供的实时服务,包括一个基于优先级的抢占式调度程序,该程序执行基于优先级的中断处理。线程优先级的范围是从0(最高优先级)到255(最低优先级),低于可配置的优先级阈值的线程可以与多个具有相同优先级的线程分享其时间片。内核计划程序已经进行优化,以获得最佳的中断性能。
评论
加载更多