INtime
INtime实时操作系统与Windows的完美结合。
引言
人们正在越来越多地选择 Microsoft Windows XP 和 Windows XP Embedded 作业系统来运行需要某种实时性行为的专用应用程式。Windows XP Embedded 与 Windows XP 桌面软体基于相同的二进制档案,它在许多方面都是可供选择的最佳平台,但 Windows XP Embedded 和 Windows XP 自己无法管理此类系统所需要的具有严格实时性要求,因此需要增强该平台的实时功能。在Windows XP 平台上添加实时扩展方案时,已有许多解决方案在 Windows XP 核心设备驱动程式提供了某种实时功能,但此类解决方案没有考虑到为用户提供可容易进行应用程式开发的套用环境,也没有考虑对于许多应用程式进行调用。TenAsys Corporation 出品的 INtime 软体可以做到不仅为应用程式增加实时性功能,并且使实时应用程式存在于强大、可靠和可调用资源的环境。
特性功能
*成熟的实时技术
*无缝实时运行,适用于Windows XP、Windows XP Embedded、Windows 2000和Windows Server 2003
*支持多进程或系统(SMP和HT)——用于多进程/多处理器的共享或独占式实时资源分配选项
*支持多核处理器,支持INtime和Windows共享处理器,或者INtime独享处理器
*完全与Microsoft Visual Studio .NET相集成——可编辑、编译、连结和调试实时应用程式,而无需退出Visual Studio .NET环境
*集成的在线上帮助
*可伸缩的体系结构——实时应用程式可与Windows一起本地运行或跨多节点运行
*用于实时应用程式的完全记忆体保护和地址隔离
*实时TCP/IP通信stack——可独立于Windows网路stack运行
*提供了DeviceNet、PROFIBUS、CANopen和ControlNet等驱动程式
*实时USB stack支持OHCI、UHCI和EHCI控制器
*提供了GPIB(IEEE-488)和运动控制实时设备驱动程式
*直接I/O和记忆体映射,可访问所有的硬体
*用于周期性事件中断的系统计时器粒度,其精度达100 μs,多核系统可以达到50us
*信箱、信号量、警报、区域和共享记忆体IPC机制
*EC++库符合最新的ANSI标準——同时支持异常处理和名称空间
*可载入实时库的实时共享库(RSL)
*用于实时对象浏览和崩溃分析的INtime Explorer工具(INtex)
*INscope实时系统性能分析工具
简介
INtime实时作业系统与Windows的完美结合
INtime实时作业系统(RTOS)
For
Windows 7
Microsoft Windows XP
Microsoft Windows XP Embedded
Microsoft Windows XP Embedded with Service Pack 1
IRMX® RTOS 技术的发展已有25年以上的历史,非常的成熟、可靠。INtime以此技术为基础,它将强大的工业级控制与丰富的Windows功能相结合,从而使得应用程式能够充分利用所有Windows特性和成千上万现有的应用程式,而无需牺牲实时回响。使用TenAsys软体来执行实时Windows应用程式不仅能够降低软体的複杂性,而且还可以压缩冗余的硬体成本,显着地压缩了产品上市时间。
通过使用INtime软体,可获得非常精确且稳定的的微秒级回响时间,并丝毫不会降低安全性、可靠性和系统性能。正如Windows应用程式在用户模式下(ring3)执行时一样,通过INtime的保护模式编程模型来进行管理的实时应用程式也可在用户模式下执行,因而获得高稳定性。其他类型的解决方案要求实时应用程式在Windows核心中(ring0)完全无保护地运行,在这种情况下,可导致错误指针、栈溢出、页面错误等编程错误,这些将会十分明显的影响到实时环境和Windows环境的稳定性。但是,如果在INtime受保护的实时系统内部运行实时应用程式,就绝对不会发生这种问题。
TenAsys实时作业系统已在全球成千上万种应用程式中得到验证,并且至今已无故障运行了数百万小时。
系统体系结构
INtime 是与 Windows 作业系统共享硬体平台的实时作业系统。Windows中安装的组件包括一个 Windows核心驱动程式和一些 Windows 服务。该驱动程式管理用于运行核心和实时应用程式的记忆体,并且管理这两个系统之间的通讯接口。
Windows将实时核心载入到已分配的记忆体中,然后使Context从 Windows 切换到 INtime 核心。将创建一个低优先权执行绪,其功能是将计算机Context切换回 Windows 系统。因为该执行绪将被所有其他实时执行绪占先,所以只要牵涉到实时核心,Windows 系统都是实时系统的空闲任务。 在 INtime中,任何实时中断都被直接处理,并且所有其他中断都在中断控制器被禁止。当Context返回到 Windows 时,这些中断将被解除禁止,以使其可以被 Windows 正常处理。当在 Windows Context中发生实时中断时,将插入 Windows IDT 以引起到 INtime Context的上下文切换,以便可以处理中断。
系统计时器通常在 Windows 和 INtime 之间共享。硬体计时器被改编以便以 Windows 要求的速率更高的速率中断,并且只根据需要调用 Windows 处理程式。通常情况下,INtime 核心以高得多的速率(时间间隔可以低至 100μs)获得计时器中断,以便提供更精确的计时服务。计时器处理最佳化能够避免在 Windows 和 INtime 之间进行不必要的Context切换。
某些硬体抽象层 (HAL) 入口点被截获和监控,以便防止 Windows 核心执行某些不需要的操作,例如禁止实时中断或者更改硬体系统计时器频率。HAL 档案不是由软体修改或替换的。
INtime 核心为实时虚拟机提供作业系统服务。它提供此类核心通常会提供的实时服务,包括一个基于优先权的抢先式计画程式,该程式执行基于优先权的中断处理。执行绪优先权的範围是从 0(最高优先权)到 255(最低优先权),低于可配置的优先权阈值的执行绪可以与多个具有相同优先权的执行绪分享其时间片。核心计画程式已经进行最佳化,以获得最佳的中断性能。得到的平台表现出良好的性能,最重要的是它的行为是可预测的。
1 应用程式环境
INtime 应用程式环境被设计为具有下列功能:
每个进程都是其他对象(包括执行绪和物理记忆体)的容器。由该进程所属执行绪创建的每个对象都由该进程所有,并且在进程终止时不再存在。
每个进程都具有一个与其他进程的地址空间隔离的平面虚拟地址空间。进程中的代码以用户模式(IA 许可权等级 3)执行,从而防止意外访问系统对象和数据。
每个进程都可以直接访问处理器的输入/输出 (I/O) 空间,而且可以直接访问物在任何进程中,都可以通过系统调用以及用户为中断处理程式和执行绪编写的代码来直接处理中断。
错误是按进程分别处理的。默认情况下会挂起出错的执行绪,并且向全局信箱中写入一个记录。可以更改默认操作,以便能够在出错地址进入静态系统调试器或应用程式调试器。进程还可以选择获得有关该进程中错误的通知。
2 提供了多个 API 以便进程可以使用系统服务。下面的部分中将详细介绍这些 API。
通过将请求转发给 Windows 服务以执行所请求的操作,向实时应用程式提供 Windows 服务(对注册表、事件日誌和档案系统的访问)。
实时API
INtime 核心提供的标準 API 提供了适合于同步和通讯的对象,以及在进程之间(包括 INtime 和 Windows 进程之间)共享记忆体的手段。所有对象都通过句柄引用,并且所有句柄对于实时系统都是全局的。对象包括:
(1)进程
进程拥有其他对象(包括其他进程)和物理记忆体。当进程创建时,将向其分配一个记忆体池,它限制了可以分配给该进程的物理记忆体的数量。儘管 INtime 核心使用分页硬体进行记忆体管理,但它并不採用请求调页功能。因此,进程被限制在它可以分配的物理记忆体量的範围内。进程还具有对象编录,可以在此命名对象。可以按名称搜寻该编录。
(2)执行绪
执行绪总是由某个进程所有,并且执行绪所创建的对象由其进程所有。执行绪会被分配一个优先权,範围为从 0 到 254,其中 0 是最高优先权。
(3)信号量
这些同步对象由一个执行绪伫列和一个计数器组成,类似于 Microsoft Win32 信号量。对象创建时,所有 INtime 执行绪伫列都可以被指定为先入先出 (FIFO) 伫列或优先权伫列。如果是 FIFO 伫列,则执行绪按照等待顺序排队;如果是优先权伫列,则执行绪的排队方式为优先权较高的执行绪出现在队头。
(4)区域
这些对象是单个单元信号量,带有防止优先权颠倒的保护。它们採用标準的优先权提升技术,以避免这种情况。另外,拥有区域的执行绪不能删除,除非它放弃该区域。这些对象类似于 Win32 临界区。
(5)信箱
这些对象由一个执行绪伫列和一个讯息伫列组成。信箱可以将两种类型的讯息排队。讯息可以是其他对象的句柄,也可以是最多包含 128 个位元组的数据讯息。在 Win32 中没有直接等效的对象。
(6)堆
堆对象类似于 Windows 堆。它为应用程式提供动态记忆体源。
其他记忆体对象
可以为记忆体区域创建一个句柄,并且随后将该句柄传递给另一个进程以进行映射。然后,可以从这两个进程中访问该记忆体。
实时 API 提供参数检查和内联状态报告。
(1) Win32 API
儘管 Win32 API 缺少一些用于实时编程的有用功能,INtime 仍然提供了一个 Win32 API,以便方便地从 Windows 应用程式传输代码。该实现是 Windows CE Win32 实现的丰富子集,包括 Win32 对象的有用子集 (WaitForMultipleObjects),并带有扩展以管理中断和外围设备互联 (PCI) 汇流排配置。
(2) Windows API
为 Windows 应用程式提供了 API,以使其能够共享在实时核心上创建的对象。标準的实时对象和 Win32 对象都是可共享的,以便 Windows 和实时应用程式可以同步和共享数据。阻塞调用由实时核心上的代理执行绪池处理。
(3)C 库与 C++ 支持
INtime 提供了美国国家标準局(与 ANSI 兼容)的 C 库,以及用标準模板库 (STL) 提供了对 EC++ (Embedded C++) ANSI 标準的支持。
(4)其他服务
提供了一个传输控制协定/网际协定 (TCP/IP) 的协定组,它派生于 BSD Net3 体系结构。为 Intel、3Com 和 Realtek 接口适配器提供了乙太网驱动程式,并且为与 NE2000 兼容的 ISA 接口提供了乙太网驱动程式。通过串列线路网际协定 (SLIP) 支持串列链路。 以开发工具包的形式提供了 USB 支持,以便开发 USB 客户端软体。为 Universal Host Controller (UHCI)、Open Host Controller (OHCI) 和 Enhanced Host Controller (EHCI) 接口提供了标準驱动程式。为一系列标準接口和行业接口提供了其他驱动程式。
(5)可靠性功能
INtime 的用于增强可靠性的功能包括针对非灾难性系统错误的异常处理以及 Distributed System Manager (DSM) ,它可以监控 INtime 和 Windows 进程,并可以在 Windows 作业系统失败时进行检测和提供帮助。
(6)异常处理
INtime 核心设计所关注的主要问题之一是提供处理系统异常错误(一般性保护错误、页面错误、堆叠错误等等)的非灾难性手段,并且儘量减少对实时核心和 Windows 系统的损害。因此,实时系统具有一个默认异常处理程式,该程式会向全局信箱中写入一个记录,详细描述出错的执行绪及其环境,然后挂起出错的执行绪。可以从 INtime 或 Windows 系统中监控该信箱,并且存在可以从错误记录中提取信息(包括暂存器转储、堆叠跟蹤和相关调试信息)的工具。
(7)Distributed System Manager
Distributed System Manager(“DSM”)是一个协作性多进程应用程式,用于管理整个 INtime 系统。任何进程(Windows 或 INtime)都可以选择监控任何其他参与协作的进程,或者被其他参与协作的进程监控。如果被监控的进程被删除,或者到该进程的通讯途径被中断,或者 Windows 系统或 INtime 系统被破坏,都会向监控进程传送通知讯息。可以使用该服务来提供系统级完整性。
(8)Windows 停止处理
DSM 的一个重要优点是它能够检测到 Windows 平台何时失败。如果出现这种情况,INtime 核心中的 DSM 软体将通知所有参与的进程 Windows 已经失败,并且还将负责调度 Windows 的执行绪挂起。此时,INtime 核心可以继续无限期地执行其进程,而这些进程可以选择在此情况下採取特殊操作,例如使外围设备进入已知状态。在稍后某个时刻,实时进程可以选择恢复 Windows 执行绪,并使 Windows 可以继续关闭和重置计算机。
(9)可扩展性功能
INtime 作业系统能够支持複杂的大型应用程式。在上述共享体系结构中,已经发现典型的平台能够允许 INtime 核心消耗 CPU 频宽的 50% 到 60%,然后 Windows 图形用户界面 (GUI) 和其他服务才会开始受到不利影响。INtime 中独立核心的优势是可以将它重定位到另一 CPU 或另一平台,从而使应用程式能够随着其对平台的需求的增加而扩大规模。接口模式将从虚拟机体系结构更改为共享记忆体,然后又更改为物理通讯链路(如乙太网或串列线路),但 Windows 和实时应用程式之间的软体接口不会改变。这样,无论选择了哪种硬体体系结构,都可以使用相同的二进制档案。
小结
TenAsys Corporation 的 INtime 软体被设计为不仅能够向 Windows 平台添加实时功能,而且其添加这些功能的方式能够为实时应用程式提供可靠且可伸缩的平台。如果将该解决方案与 Windows XP Embedded 配合使用,则能够为您的嵌入式设备提供强大的、可扩展的、确定性的作业系统。