安防之家讯:[关键词]:人们正在越来越多地选择MicrosoftWindowsXP和WindowsXPEmbedded操作系统来运行需要某种实时性行为的专用应用程序。WindowsXPEmbedded与WindowsXP桌面软件基于相同的二进制文件,它在许多方面都是可供选择的最佳平台,但WindowsXPEmbedded和WindowsXP自己无法管理此类系统所需要的具有严格实时性要求,因此需要增强该平台的实时功能。在WindowsXP平台上添加实时扩展方案时,已有许多解决方案在WindowsXP内核设备驱动程序提供了某种实时功能,但此类解决方案没有考虑到为用户提供可容易进行应用程序开发的应用环境,也没有考虑对于许多应用程序进行调用。TenAsysCorporation出品的INtime软件可以做到不仅为应用程序增加实时性功能,并且使实时应用程序存在于强大、可靠和可调用资源的环境。[摘要]:INtime实时操作系统(RTOS)
For
MicrosoftWindowsXP
MicrosoftWindowsXPEmbedded
MicrosoftWindowsXPEmbeddedwithServicePack1
引言
人们正在越来越多地选择MicrosoftWindowsXP和WindowsXPEmbedded操作系统来运行需要某种实时性行为的专用应用程序。WindowsXPEmbedded与WindowsXP桌面软件基于相同的二进制文件,它在许多方面都是可供选择的最佳平台,但WindowsXPEmbedded和WindowsXP自己无法管理此类系统所需要的具有严格实时性要求,因此需要增强该平台的实时功能。在WindowsXP平台上添加实时扩展方案时,已有许多解决方案在WindowsXP内核设备驱动程序提供了某种实时功能,但此类解决方案没有考虑到为用户提供可容易进行应用程序开发的应用环境,也没有考虑对于许多应用程序进行调用。TenAsysCorporation出品的INtime软件可以做到不仅为应用程序增加实时性功能,并且使实时应用程序存在于强大、可靠和可调用资源的环境。
主要特性和功能
*成熟的实时技术
*无缝实时运行,适用于WindowsXP、WindowsXPEmbedded、Windows2000和WindowsServer2003
*支持多进程或系统(SMP和HT)——用于多进程/多处理器的共享或独占式实时资源分配选项
*完全与MicrosoftVisualStudio.NET相集成——可编辑、编译、链接和调试实时应用程序,而无需退出VisualStudio.NET环境
*集成的联机帮助
*可伸缩的体系结构——实时应用程序可与Windows一起本地运行或跨多节点运行
*用于实时应用程序的完全内存保护和地址隔离
*实时TCP/IP通信stack——可独立于Windows网络stack运行
*提供了DeviceNet、PROFIBUS、CANopen和ControlNet等驱动程序
*实时USBstack支持OHCI、UHCI和EHCI控制器
*提供了GPIB(IEEE-488)和运动控制实时设备驱动程序
*直接I/O和内存映射,可访问所有的硬件
*用于周期性事件中断的系统计时器粒度,其精度达100μs
*邮箱、信号量、警报、区域和共享内存IPC机制
*EC 库符合最新的ANSI标准——同时支持异常处理和名称空间
*可加载实时库的实时共享库(RSL)
*用于实时对象浏览和崩溃分析的INtimeExplorer工具(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正常处理。当在WindowsContext中发生实时中断时,将插入WindowsIDT以引起到INtimeContext的上下文切换,以便可以处理中断。
系统计时器通常在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)信号量
这些同步对象由一个线程队列和一个计数器组成,类似于MicrosoftWin32信号量。对象创建时,所有INtime线程队列都可以被指定为先入先出(FIFO)队列或优先级队列。如果是FIFO队列,则线程按照等待顺序排队;如果是优先级队列,则线程的排队方式为优先级较高的线程出现在队头。
(4)区域
这些对象是单个单元信号量,带有防止优先级颠倒的保护。它们采用标准的优先级提升技术,以避免这种情况。另外,拥有区域的线程不能删除,除非它放弃该区域。这些对象类似于Win32临界区。
(5)邮箱
这些对象由一个线程队列和一个消息队列组成。邮箱可以将两种类型的消息排队。消息可以是其他对象的句柄,也可以是最多包含128个字节的数据消息。在Win32中没有直接等效的对象。
(6)堆
堆对象类似于Windows堆。它为应用程序提供动态内存源。
其他内存对象
可以为内存区域创建一个句柄,并且随后将该句柄传递给另一个进程以进行映射。然后,可以从这两个进程中访问该内存。
实时API提供参数检查和内联状态报告。
(1)Win32API
尽管Win32API缺少一些用于实时编程的有用功能,INtime仍然提供了一个Win32API,以便方便地从Windows应用程序传输代码。该实现是WindowsCEWin32实现的丰富子集,包括Win32对象的有用子集(WaitForMultipleObjects),并带有扩展以管理中断和外围设备互联(PCI)总线配置。
(2)WindowsAPI
为Windows应用程序提供了API,以使其能够共享在实时内核上创建的对象。标准的实时对象和Win32对象都是可共享的,以便Windows和实时应用程序可以同步和共享数据。阻塞调用由实时内核上的代理线程池处理。
(3)C库与C 支持
INtime提供了美国国家标准局(与ANSI兼容)的C库,以及用标准模板库(STL)提供了对EC (EmbeddedC )ANSI标准的支持。
(4)其他服务
提供了一个传输控制协议/网际协议(TCP/IP)的协议组,它派生于BSDNet3体系结构。为Intel、3Com和Realtek接口适配器提供了以太网驱动程序,并且为与NE2000兼容的ISA接口提供了以太网驱动程序。通过串行线路网际协议(SLIP)支持串行链路。以开发工具包的形式提供了USB支持,以便开发USB客户端软件。为UniversalHostController(UHCI)、OpenHostController(OHCI)和EnhancedHostController(EHCI)接口提供了标准驱动程序。为一系列标准接口和行业接口提供了其他驱动程序。
(5)可靠性功能
INtime的用于增强可靠性的功能包括针对非灾难性系统错误的异常处理以及DistributedSystemManager(DSM),它可以监控INtime和Windows进程,并可以在Windows操作系统失败时进行检测和提供帮助。
(6)异常处理
INtime内核设计所关注的主要问题之一是提供处理系统异常错误(一般性保护错误、页面错误、堆栈错误等等)的非灾难性手段,并且尽量减少对实时内核和Windows系统的损害。因此,实时系统具有一个默认异常处理程序,该程序会向全局邮箱中写入一个记录,详细描述出错的线程及其环境,然后挂起出错的线程。可以从INtime或Windows系统中监控该邮箱,并且存在可以从错误记录中提取信息(包括寄存器转储、堆栈跟踪和相关调试信息)的工具。
(7)DistributedSystemManager
DistributedSystemManager(“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和实时应用程序之间的软件接口不会改变。这样,无论选择了哪种硬件体系结构,都可以使用相同的二进制文件。
3小结
TenAsysCorporation的INtime软件被设计为不仅能够向Windows平台添加实时功能,而且其添加这些功能的方式能够为实时应用程序提供可靠且可伸缩的平台。如果将该解决方案与WindowsXPEmbedded配合使用,则能够为您的嵌入式设备提供强大的、可扩展的、确定性的操作系统。
安防之家专注于各种家居的安防,监控,防盗,安防监控,安防器材,安防设备的新闻资讯和O2O电商导购服务,敬请登陆安防之家:http://anfang.jc68.com/