工控网首页
>

应用设计

>

INtime实时操作系统

INtime实时操作系统

2008/6/17 16:02:00
INtime实时操作系统(RTOS)
For
Microsoft Windows XP
Microsoft Windows XP Embedded
Microsoft Windows XP Embedded with Service Pack 1 

引言

        人们正在越来越多地选择 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)——用于多进程/多处理器的共享或独占式实时资源分配选项
*完全与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
*邮箱、信号量、警报、区域和共享内存IPC机制
*EC++库符合最新的ANSI标准——同时支持异常处理和名称空间
*可加载实时库的实时共享库(RSL)
*用于实时对象浏览和崩溃分析的INtime Explorer工具(INtex)
*INscope实时系统性能分析工具
一 INtime简介

        IRMX® RTOS 技术的发展已有25年以上的历史,非常的成熟、可靠。INtime以此技术为基础,它将强大的工业级控制与丰富的Windows功能相结合,从而使得应用程序能够充分利用所有Windows特性和成千上万现有的应用程序,而无需牺牲实时响应。使用TenAsys软件来执行实时Windows应用程序不仅能够降低软件的复杂性,而且还可以压缩冗余的硬件成本,显著地压缩了产品上市时间。
        通过使用INtime软件,可获得非常精确且稳定的的微秒级响应时间,并丝毫不会降低安全性、可靠性和系统性能。正如Windows应用程序在用户模式下(ring3)执行时一样,通过INtime的保护模式编程模型来进行管理的实时应用程序也可在用户模式下执行,因而获得高稳定性。其他类型的解决方案要求实时应用程序在Windows内核中(ring0)完全无保护地运行,在这种情况下,可导致错误指针、栈溢出、页面错误等编程错误,这些将会十分明显的影响到实时环境和Windows环境的稳定性。但是,如果在INtime受保护的实时系统内部运行实时应用程序,就绝对不会发生这种问题。
TenAsys实时操作系统已在全球成千上万种应用程序中得到验证,并且至今已无故障运行了数百万小时。

二INtime 系统体系结构

       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)<
投诉建议

提交

查看更多评论