接合实时操作系统环境和本地主机操作系统的虚拟机环境的制作方法

文档序号:6465282阅读:92来源:国知局
专利名称:接合实时操作系统环境和本地主机操作系统的虚拟机环境的制作方法
技术领域
本说明书一般地涉及实时操作系统,并且尤其涉及一种用于接合实吋 操作系统环境和本地主机操作系统的虚拟机环境。
背景技术
必须以确定性的、时间灵敏的方式反应和执行的一类产品依靠实时软
件,其转而依靠实时操作系统(RTOS)。操作系统(OS)是设计用来管 理计算平台资源的程序。优化RTOS以通过高度可预测的方式来管理计算 平台资源,以使得严格地执行诸如优先级之类的原理,同时最小化服务事 件中涉及的等待时间。这种操作系统设计为更加专用,并且由此,相比于 从更通用的OS,例如Unix、 Linux、 Microsoft Windows等所期望的提供更 少的延迟。通信系统,包括像PBX这样的电信产品,是使用RTOS的产 品示例。这些产品通常非常复杂并且意味着数千人年的开发。
由于计算机硬件技术继续进展,对于采用实时软件应用(RTSA), 例如用于操作PBX的软件,并且将它们移植到现代服务器上存在增长的需 求,所述实时软件应用以前运行在专用的计算平台上。另一方面,RTSA 所需的软件可以非常大,并且将该软件修改以用于不同于编写目标OS的 OS的成本相应地很大,尤其当通常仍然需要RTOS的性能时。同时,为 了减少产品成本,关于让这种软件与其它应用共享OS的资源存在兴趣。
用于将RTSA移植到通用操作系统的先前解决方案包括虚拟机的原 理。虚拟机软件允许单个物理机器从一个或多个操作系统(例如RTOS) 和平台上执行的软件的观点看起来呈现为一个或多个机器的虚拟实例。在 这些解决方案中,虚拟机管理器(VMM)通常或者对下层硬件进行控制 并且调度虚拟OS实例,或者运行在现有操作系统下(通称为主机OS)但 需要修改主机OS以支持专用的内核级驱动。这导致不可接受的等待时间
和不佳的实时性能,或者需要对系统进行分区以使得下层硬件仍然由
RTOS管理。
另一技术是处理器仿真,其中对为之编写应用的原始目标处理器进行 仿真,并且该仿真运行在新的主机OS上。必须对原始处理器的每条指令 进行仿真。然而,在要求高效的实时性能的情况下该技术是不可接受的。
其它解决方案涉及修改RTSA以运行在不同OS上,以便确保足够的 优先级并且确保防止与实时应用共享计算资源的邻近应用发生干扰。这些 方法的成本和复杂性使得它们没有吸引力。
由于多处理器变得更可得到,另一解决方案是将一个处理器用于 RTSA及其关联的RTOS,并且将第二处理器用于在另一 OS,例如Linux 下运行的其它应用软件。缺点在于,例如存储器和通信接口这样的硬件也 必须是双倍。此外,处理器资源的利用不那么高效,因为它们不能由各种 应用软件任意共享。

发明内容
实施例的第一广阔方面设法提供一种用于接合实时操作系统 (RTOS)环境和本地主机操作系统(HOS)的虚拟机环境(VME)。 VME包括至少一种用于仿真对本地HOS可用的硬件服务的虚拟I/O服 务,使得所述至少一种虚拟I/O服务当从该至少一种虚拟I/O服务向RTOS 环境发送数据时能生成通知。VME还包括用于在RTOS环境和所述至少 一种虚拟1/0服务之间交换数据的非阻塞消息队列。VME还包括与所述至 少一种虚拟I/O服务通信的用于响应于接收通知而生成中断的中断仿真 器,所述中断用于触发RTOS环境以轮询非阻塞消息队列,以便从所述非 阻塞消息队列获取数据。VME还包括与所述中断仿真器通信的用于将中 断中继到RTOS环境的硬件异常处理机仿真器,还使得该硬件异常处理机 仿真器能够管理来自本地HOS的中断和异常,以使得对RTOS环境看 来,来自本地HOS的中断和异常似乎本来就发生在运行所述RTOS环境 的硬件上;还包括与所述硬件异常处理机仿真器通信的监控指令仿真器, 用于以下至少一项仿真由RTOS环境执行的监控指令;仿真用于处理由 于不正确使用硬件而引起的异常的指令;和仿真用于处理由于软件意图而 引起的异常的指令。
在第一广阔方面的一些实施例中,VME还包括用于通过借助于代理 调用本地主机OS服务在RTOS环境和本地HOS之间对调用和调用响应进 行中继的定制RPC服务,还使得定制RPC服务能够当数据在定制PRC服 务和RTOS环境之间传送时生成RPC通知。
在第一广阔方面的一些实施例中,所述至少一种虚拟1/0服务包括用 于以固定速率将报时信号中断递送到RTOS环境的报时信号/时钟服务。
在第一广阔方面的其它实施例中,所述至少一种虚拟1/0服务包括用 于仿真与HOS通信的串行I/O设备的串行I/O服务。在这些实施例的一些 中,还使得串行I/O服务能够用于通过借助代理调用本地主机OS服务来 在RTOS环境之间对调用和调用响应进行中继。
在第一广阔方面的另外实施例中,所述至少一种虚拟1/0服务包括用 于仿真与HOS通信的以太网设备的以太网服务。在这些实施例的一些 中,还使得以太网服务能够用于通过借助代理调用本地主机OS服务来在 RTOS环境之间对调用和调用响应进行中继。
在第一广阔方面的又另外实施例中,非阻塞消息队列包括至少一个用 于向RTOS环境递送数据的队列,和至少一个用于从RTOS环境接收数据 的队列。
在第一广阔方面的其它实施例中,VME还包括用于使得RTOS环境 能为数据轮询非阻塞消息队列并且从非阻塞消息队列获取数据的函数。在 这些实施例的一些中,VME还包括用于存储指向这些函数的指针中的至 少一个的共享变量存储器,其中RTOS环境通过读取指针并且从关联于指 针和函数的存储地址获取函数来访问函数。
在第一广阔方面的其它实施例中,VME还包括用于存储RTOS环境 所使用的用于与VME交互的函数的VME库。在这些实施例的一些中,还 使得VME库能够存储以下至少一项所使用的函数至少一种虚拟I/O服 务,定制RPC服务、非阻塞消息队列、中断仿真器、监控指令仿真器、和 硬件异常处理机仿真器。在一些实施例中,VME库包括服务库、消息
库、队列库、信号量库、和定制线程库。
在第一广阔方面的一些实施例中,RTOS环境包括VxWorks。在第一 广阔方面的其它实施例中,本地HOS包括Microsoft Windows、 Microsoft DOS、 MAC OS X、 UNIX、 LINUX和SOLARIS中的至少一种。
在第一广阔方面的另外实施例中,由于软件意图所调用的异常包括软 件陷阱和调试指令中的至少一种。
实施例的第二广阔方面设法提供一种用于经由VME将数据发送到 RTOS环境的方法,该数据打算供RTOS环境使用。方法的第一步骤包括 从至少一种虚拟1/0服务或定制RPC将数据发送到非阻塞消息队列。方法 的第二步骤包括生成通知并且将通知从至少一种虚拟I/O服务发送到中断 仿真器。方法的第三步骤包括响应于接收到通知在中断仿真器生成中断。 方法的第四步骤包括经由硬件异常处理机将中断中继到RTOS环境。方法 的第五步骤包括当在非阻塞消息队列从RTOS环境接收到针对数据的轮询 时,将数据中继到RTOS环境,轮询在RTOS环境由中断触发。
在第二广阔方面的一些实施例中,方法还包括从本地HOS接收数 据。在这些实施例的一些中,方法还包括从与本地HOS通信的硬件设备 接收数据。


参考以下附图描述实施例,其中
图1根据现有技术描绘了实时操作系统的软件栈体系结构; 图2根据现有技术描绘了计算机硬件体系结构;
图3根据非限制实施例描绘了用于在非RTOS环境中运行RTOS环境
的软件栈体系结构;
图4根据非限制实施例描绘了虚拟机环境库和主机库的细节;
图5根据非限制实施例描绘了图3软件栈体系结构的虚拟I/O线程的
运行时环境;
图6根据非限制实施例描绘了用于经由图4的虚拟I/O线程在RTOS 接收数据的方法; 图7根据现有技术描绘了当VxWorks作为本地OS运行时,实时应用 如何映射在存储器中的非限制示例;
图8根据现有技术描绘了当Linux作为本地OS运行时,应用如何映 射在存储器中的非限制示例;和
图9根据非限制实施例描绘了当VxWorks作为Linux上的应用运行 时,VxWorks如何映射在存储器中。
具体实施例方式
图1根据现有技术描绘了实时操作系统环境150的软件栈体系结构。 实时操作系统环境150包括RTOS 130、板支持包(BSP)、和RTSA 140。 RTOS 130通过经由BSP 120与计算机硬件IIO交互来管理计算机的 硬件和软件资源。实时软件应用140运行在RTOS 130上。BSP 120包括 用于与计算机IIO交互的至少一种软件驱动。
图2根据现有技术描绘了计算机硬件110。计算机硬件110包括中央 处理器(CPU) 210,其与存储器220和中断控制器230通信,执行实时操 作系统环境150。中断控制器控制从各种设备发送到CPU 210的中断 235,各种设备包括但不限于时钟240、串行输入/输出(I/O)设备250 (例如通用异步接收器发送器(UART))、以太网设备260、和磁盘I/O 270。中断控制器230区分中断235的优先次序并且将它们传送到CPU 210。在接收到中断,例如中断235之一时,CPU210保存其当前执行状态 并且调用中断处理机以用于处理中断。无论在什么情况下(例如数据从各 种设备之一到达)通知了中断,CPU 210然后可切换到不同的执行状态来 处理。CPU210可同时管理若干不同的执行状态。关联于不同所保存执行 状态的中断的使用是异常处理的方法,如本领域技术人员所已知的。在一 些实施例中,CPU210运行在以下两种模式之一
a. 用户模式,其中可执行应用或OS中的大部分指令;和
b. 监控模式,其中可执行所有指令,包括修改CPU 210状态的指 令,例如监控指令、和存取权限。监控模式也已知为特权模式,并且监控 指令也己知为特权指令。监控指令的一些示例包括但不限于标志(状态)寄存器的中断标志(IF)的正确处理、矢量表的解释、CPU 210的各种处 理器寄存器的操纵、栈上的上下文正确异常帧的创建、和CPU 210的 MMU (存储器管理单元)的操纵,以及访问CPU210的I/O存储空间。
在CPU 210上运行的RTOS通常在CPU 210运行在监控模式中的情况 下运行。这允许RTSA直接访问CPU210资源,以减少等待时间。
在硬件110专用于运行RTOS 130禾n RTSA 140的情况下,可编写 RTOS 130以用于在专用类型的CPU上执行。另外,RTOS 130通常使用 共享物理存储器以用于运行不同的软件线程(即执行线程,包括专用于操 作系统进程的线程,和专用于RTSA进程的线程)。以该方式,RTOS130 相比于非实时操作系统显示了减少的等待时间,非实时操作系统通常使用 逻辑存储器(即以硬件和软件实现的允许寻址非邻接存储器的寻址方案, 仿佛它是邻接的,因此需要附加的软件层来将逻辑存储器映射到物理存储 器)。
图3描绘了用于在非RTOS环境中运行图1的RTOS环境150的软件 栈体系结构,例如在使得能够在计算机硬件110上运行的主机操作系统
(HOS) 315上。通常,RTOS 130作为HOS 315上的应用运行,HOS 315 不知道它正在执行另一个操作系统。然而,为了使得RTOS 130能在HOS 315上运行,虚拟机环境(VME) 310也作为HOS315上的应用运行。
HOS 315通常不是RTOS,而是通用操作系统。在一些实施例中, HOS 315包括工业标准OS,包括但不限于Microsoft Windows 、 Microsoft DOS、 MAC OS X、 UNIX、 LINUX、 SOLARIS 。 HOS 315可以访问主机 库320以用于存储由HOS 315和HOS315上运行的应用所使用的应用编程 接口 (API)和/或子程序和/或函数。API和/或子程序和/或函数通常包括
"助手"代码和数据,如本领域技术人员所已知的。这允许代码和数据以 模块化方式在应用之间共享和改变。
VME 310仿真当如图1所描绘的RTOS 130作为本地OS在硬件110 上运行时RTOS 130所通常使用的硬件和/或软件服务,不必像处理器仿真 软件那样仿真CPU210本身。而是,VME310复制了硬件110的行为。然 而如果RTOS 130作为本地OS运行,BSP 120将通常与硬件110交互,以
传送命令、中断和数据,在图3的体系结构中RTOS 130改为与VME 310 交互。因此BSP 120修改为适于与VME310中的软件接口通信。当RTOS 130运行在HOS 315下时,各种命令、中断和数据从存储器和/或可编程地 发送和接收。该存储器被HOS 315下运行的其它线程共享,其转而与 HOS 315交互以获得对硬件110的功能访问。RTOS与在HOS下运行的其 它线程共享存储器的非限制示例在图9中描绘,如下所述。
因此,VME 310包括仿真至少一部分硬件110的服务的服务仿真器。 服务仿真器包括至少一种虚拟I/O服务(例如,报时信号/时钟服务340、 串行I/O服务350和/或以太网服务360,下面描述)和至少一种中断/异常 服务(例如中断仿真器335和/或监控指令仿真器330)。所述至少一种虚 拟I/O服务经由非阻塞消息队列570与RTOS环境150交互,以下参考图 5详细描述。当RTOS 130试图通过虚拟I/O服务发送或接收数据时,BSP 120与非阻塞消息队列570交互。在一些实施例中,非阻塞消息队列570 包括从RTOS环境150到至少一种虚拟I/O服务的队列和从至少一种虚拟 I/O服务到RTOS环境150的队列。在其它实施例中,非阻塞消息队列包 括每虚拟I/O服务每方向的队列。
VME 310还包括共享变量存储器380,其包括图2计算机硬件110的 存储器220的一部分,即存储器220中位于对RTOS环境150和VME 310 已知的位置处的那部分。在一个非限制实施例中,用指向数据结构的指针 以及指向函数的指针来填充共享变量存储器380,所述函数操纵数据结 构,例如包含在下面描述的VME库325中和/或主机库320中的函数。在 其它实施例中,可用数据结构和操纵这些数据结构的函数来填充共享变量 存储器380。在其它实施例中,可用指向数据结构的指针、数据结构、指 向操纵这些数据结构的函数的指针、和/或操纵这些数据结构的函数来填充 共享变量存储器380。在一个非限制实施例中,共享变量存储器380包括 指向函数的指针,该函数允许RTOS环境150访问非阻塞消息队列570, 并且经由非阻塞消息队列570从至少一个虚拟I/O服务接收数据。
继续参考图3,并且也参考下面描述的图5,至少一种虚拟I/0服务实 现了特定I/0服务,包括但不限于 -报时信号/时钟服务340。报时信号/时钟服务340包括用于经由非阻 塞消息队列570以固定速率将报时信号中断递送到RTOS环境150的服 务。在一些实施例中,报时信号/时钟服务340从与HOS 315通信的时钟 设备(例如图2的时钟240)将时钟报时信号递送到RTOS环境150。在 其它实施例中,报时信号/时钟服务340包括由主机库320或VME库325 中存储的时钟API驱动的时钟仿真器。在一个非限制实施例中,报时信号/ 时钟服务340包括报时信号线程510,以便经由非阻塞消息队列570以固 定速率将报时信号中断递送到RTOS环境150。在一些实施例中,报时信 号线程510还包括用于缓冲由HOS 315引入的任何抖动的会聚、适应过滤 器。在其它实施例中,可使用其它类型的过滤器。
-串行I/O服务350。串行I/O服务350包括用于仿真串行I/O设备/文 件(例如串行I/O设备250)的服务。串行I/O服务350使得能够经由非阻 塞消息队列570经由HOS 315在RTOS环境150和串行1/0设备/文件之间 交换数据。串行1/0服务350包括串行I/O "进入"线程520,以用于经由 HOS 315从RTOS环境150向串行I/O设备/文件传递数据。从RTOS环境 150通过串行1/0进入线程520发送的数据重定向到HOS 315上的串行I/O 设备/文件。串行I/O服务350还包括串行I/0 "出去"线程530,以用于经 由HOS 315将数据从串行I/O设备/文件发送到RTOS环境150。打算供 RTOS环境150使用的来自HOS 315上的串行设备/文件的数据通过串行 I/O服务350并且尤其通过串行I/O进入线程520重定向到RTOS环境 150。换言之,当RTOS 130试图通过图2的串行I/O设备250发送或接收 数据时,BSP 120实际上经由非阻塞消息队列570与串行I/O服务350交 互。
-以太网服务360。以太网服务360包括用于仿真以太网设备/文件(例 如以太网设备260)的服务。以太网服务360使得能够经由HOS 315在 RTOS环境150和以太网设备/文件之间交换以太网包。以太网服务360包 括以太网"进入"线程540,以用于经由HOS 315将数据从RTOS环境 150传递到以太网设备/文件。从RTOS环境150通过以太网进入线程540 发送的数据重定向到HOS 315上的以太网设备/文件。以太网服务360还
包括以太网"出去"线程550,以用于经由HOS 315将数据从以太网设备/ 文件发送到RTOS环境150。打算供RTOS环境150使用的来自HOS 315 上的以太网设备/文件的数据通过以太网服务360并且尤其通过以太网出去 线程550重定向到RTOS环境150。换言之,当RTOS 130试图通过图2 的以太网设备260发送或接收包时,BSP 120实际上经由非阻塞消息队列 570与以太网服务360交互。
在一些实施例中,VME 310还包括定制远程过程调用(RPC)服务 370,用于在RTOS环境150和HOS 315之间中继调用和调用响应,这使 得RTOS环境150能借助于代理调用本地主机OS服务(例如与HOS 315 关联的(一个或多个)API和/或多个库,例如主机库320)。这使得即使 当从RTOS环境150经由定制RPC服务分发了对本地主机OS服务的通常 阻塞调用时,RTOS环境150继续运行而不必阻塞。定制RPC服务370包 括用于RTOS环境150中每个任务的RPC线程560,其发起对主机库320 和定制库325f中的HOS API和/或子程序和/或函数的调用。然而在其它实 施例中,可经由至少一种虚拟I/O服务分发对本地主机OS服务的调用。 在非限制实施例中,可经由以太网服务360或串行I/O服务350分发对本 地主机OS服务的调用(和调用响应)。
中断/异常服务包括但不限于中断仿真器335和/或监控指令仿真器 330。中断仿真器335和监控指令仿真器330与硬件异常处理机仿真器390 通信,硬件异常处理机仿真器390与RTOS环境150通信。使得中断仿真 器335能够生成中断并且将其发送到硬件异常处理机仿真器390,硬件异 常处理机仿真器390处理中断并且将其发送到RTOS 130。在一些实施例 中,硬件异常处理机仿真器390有效地仿真了 CPU 210的内部异常处理功 能和图2的中断控制器230。
还使得硬件异常处理机仿真器390与监控指令仿真器330 —起能够管 理和仿真异常。有两个基本类的可由VME310仿真的异常
-第一基本类的异常包括外部生成事件,其被转换以使得它们呈现为到 RTOS环境150的硬件中断。这些事件由至少一种虚拟I/O服务或定制 RPC服务370处理,如上所述;和
-第二基本类的异常包括RTOS环境150中运行的软件所生成的异常。
这些异常包括但不限于由于作为监控指令所以不能执行的指令所生成的 异常;由于不正确地使用硬件110 (例如CPU 210)而生成的异常,并且 包括除零错误、存储器访问错误等;和由于程序意图而调用的异常,并且 包括陷阱、调试异常等,如本领域技术人员所已知的。
还使得硬件异常处理机仿真器390与监控指令仿真器330 —起能够管 理和仿真第二类异常。
因此,使得监控指令仿真器330能够仿真监控指令和处理由于不正确 使用硬件或软件意图所调用的异常的指令,如上所述;并且使得硬件异常 处理机仿真器390能够将可能在RTOS环境150中发生的导致HOS异常的 异常转换为呈现为例如本来运行RTOS环境的CPU 210这样的CPU所生 成的异常。
在一些实施例中,可修改RTOS环境150以使得监控指令不被RTOS 环境150尝试,而是经由可添加到RTOS环境150的函数来处理。在这些 实施例中,使得监控指令仿真器330能够处理由于不正确使用硬件或软件 意图所调用的异常,如上所述。
还使得每种虚拟I/O服务(包括报时信号/时钟服务340、串行I/O服 务350、以太网服务360、以及定制RPC服务370 (如果可应用))能够 与中断仿真器335通信,以使得中断仿真器335当数据(例如,来自时钟 报时信号的消息、和/或从串行服务到达的数据、和/或从以太网设备到达 的包和/或来自本地主机OS服务的阻塞/非阻塞消息)经由非阻塞消息队列 570对于RTOS环境150可得到时生成中断。
在一些实施例中,VME 310可还包括VME库325,其包括VME 310 的其他元件所使用的定制子程序或函数。例如,至少一种虚拟1/0服务 (和定制RPC 370)依靠VME库325实现硬件服务(和RPC)的仿真。 通常,VME库325设计为避开在主机库320中发现的限制;扩展主机库 320的能力;提供主机库320中未发现的定制特征;并且在硬件110包括 多个CPU的实施例中,提供对多处理器环境的优化。
在一些实施例中,VME库325或一部分VME库325可与主机库320
结合。在一些实施例中,VME库325可分为子库。图4描绘了 VME库 325的非限制实施例,用号码325x描绘VME库325的元件。在该实施例 中,VME库325可包括
-信号量库325a,其提供基本的线程同步。在一些实施例中,基本线 程同步基于共享存储器自旋锁机制,该机制使用原子存储器操作,以确保 排它访问,如本领域技术人员所己知的;
-队列库325b,其为内部线程通信提供多线程/多进程安全机制;
-消息库325(:,其扩展队列库325b的能力,以支持消息递送和通知;
-定制线程库325(1,其在一些实施例中代替标准HOS线程库,以便避 开在标准HOS库中发现的可让实现VME 310困难的限制;
-服务库325e,其使得能够简化客户端/服务器线程以及与之相关的内 部线程通信机制的创建;和/或
-定制库325^其提供VME310使用的其它子程序。
VME库325的其它实施例可包括其它库。
在HOS库320和VME库325如何集成到软件栈体系结构中的非限制 实施例中,图4中还描绘了HOS库320。
现在转到图5和6,还参考图3。图5根据非限制实施例描绘了图3软 件栈体系结构的虚拟I/O线程的运行时环境。将参考图6描述在图3和5 的元件之间的交互方面。
图6描绘了用于经由图5的虚拟I/O线程在RTOS 130接收数据的方 法。图6的方法可根据图5的运行时环境在图3的软件栈体系结构内执 行。
在一些实施例中,在步骤610,在HOS 315接收数据,数据打算供 RTOS环境150使用。在一些实施例中,从硬件设备接收数据,例如时钟 240、串行设备I/O设备250、以太网设备260、磁盘I/O 270、或另一设 备。在其它实施例中,从主机库320中的HOS API和/或子程序和/或函数 接收数据,例如早先己由RTOS环境150经由定制RPC服务370调用的 HOS API和/或子程序和/或函数。在这些实施例中,数据可包括阻塞或非 阻塞消息。在这些实施例中,在步骤620,数据由HOS 315复制到存储
器,例如存储器220。
在步骤630,数据,或指向数据的指针通过对应于从其接收数据的设 备的至少一种虚拟I/O服务,传递到非阻塞消息队列570。
在从串行I/O设备250接收数据的实施例中,数据或指向数据的指针 通过串行I/O设备350经由串行I/O出去线程530发送到非阻塞消息队列 570。在从以太网设备260接收数据的实施例中,数据或指向数据的指针 通过以太网设备360经由以太网出去线程550发送到非阻塞消息队列 570。在数据包括从时钟240接收的时钟报时信号的实施例中,数据或指 向数据的指针通过报时信号/时钟服务340经由报时信号线程510发送到共 享变量存储器380。在至少一种虚拟I/O服务包括报时信号/时钟服务340 的实施例中,所述报时信号/时钟服务340包括由在VME库325中存储的 时钟API驱动的时钟仿真器,在步骤630报时信号/时钟服务340发起数据 或指向数据的指针。
在VME 310包括定制RPC服务370并且数据包括从之前已由RTOS 环境150调用的HOS API和/或子程序和/或函数接收的阻塞或未阻塞信号 的那些实施例中,数据或指向数据的指针通过定制RPC服务360经由 RPC线程560通过非阻塞消息队列570发送。
在步骤640,由对应于从其接收数据的设备的虚拟I/O服务(或定制 RPC服务370)将通知580发送到中断仿真器335,通知580包括通知中 断仿真器335打算供RTOS环境150使用的数据对于RTOS环境150来说 经由非阻塞消息队列570是可得到的并且要求RTOS环境150中的设备驱 动例如经由BSP 120注意的信息。在一些实施例中,通知580包括发起通 知580的服务的标识符,例如向RTOS环境150标识服务的标号。
在步骤650,由中断仿真器335生成中断590并且其被发送到硬件异 常处理机仿真器390。在步骤660,硬件异常处理机仿真器390将中断590 转发到RTOS 130,该中断590触发RTOS 130以保存其状态并且执行基于 RTOS的异常处理机,以便获取和处理数据,如同RTOS环境150作为本 地OS运行所发生的那样,如本领域技术人员所已知的。在一些实施例 中,中断590包括发起通知580的服务的标识符,例如经由通知580传递
到中断仿真器335的向RTOS环境150标识服务的标号。
在步骤670,在共享变量存储器380包含指向用于操纵数据结构的函 数的指针的实施例中,所述函数例如允许RTOS环境150访问非阻塞消息 队列570并且经由非阻塞消息队列570从至少一种虚拟I/O服务接收数 据,中断590还触发RTOS环境150中的线程以获取指向用于从非阻塞消 息队列570获取和处理数据的函数的指针。
在步骤680, RTOS环境150从非阻塞消息队列570接收数据。在一 些实施例中,RTOS环境150轮询非阻塞消息队列570中的每个队列,以 接收数据。在中断包括发起通知580的服务的标识符的实施例中,RTOS 环境150轮询非阻塞消息队列570中对应于发起通知580的服务的特定队 列。
在RTOS环境150希望将数据发送到硬件设备(例如串行I/O设备 250、以太网设备260、磁盘I/O设备270或另一硬件设备)的实施例中, 它经由非阻塞消息队列570将数据或指向数据的指针发送到适当的虚拟 I/O服务,发送到HOS 315, HOS 315然后将数据或指向数据的指针复制 到关联的硬件设备。类似地,在包括定制RPC服务370的实施例中,可将 从RTOS环境150到本地主机OS服务的调用经由非阻塞消息队列570发 送到定制RPC服务370,发送到HOS315, HOS 315然后处理该调用。
当RTOS环境150作为本地OS运行在硬件110上时,它通常运行在 监控模式中,如上所述。然而,当RTOS环境150运行在VME310上时, HOS 315仅允许它运行在用户模式中。在一些实施例中,这可导致RTOS 环境150试图处理监控指令,例如想要直接处理硬件110和将对于其它应 用或HOS315有牵连的指令。
在一些实施例中,HOS 315捕获监控指令,并且引发异常并将其发送 回RTOS环境150。硬件异常处理机仿真器390截取和检查异常并且标识 RTOS环境150尝试哪个监控指令。监控指令仿真器330然后仿真所期望 的监控指令。在一些实施例中, 一些监控指令可能难于仿真。在这些实施 例中,可修改RTOS环境150以执行功能上等同于不可访问的监控指令的 命令。在一些实施例中,使用HOS 315中的用户级异常机制将在HOS 315
发起的异常递送到进程,如本领域技术人员所已知的。硬件异常处理机仿
真器390处理这些异常并且与中断仿真器335交互以将来自HOS 315的用 户模式信号转换为上下文特定仿真异常,包括栈设置和读取矢量表等。以 该方式,硬件异常处理机仿真器390仿真CPU,例如CPU210的行为,使 得RTOS环境150引发或递送的任何异常或中断呈现给RTOS环境150, 仿佛它发生在本来运行RTOS环境150的CPU上。
通常,存储器220包括足够的物理存储器以保存VME 310、 RTOS环 境150和HOS315。此外,存储器220通常被锁住并且对于由HOS 315交 换是不可用的。
在特定的非限制实施例中,RTOS 130包括来自Wind River, 500 Wind River Way, Alameda, CA 94501的VxWorks,并且HOS 315包括 Linux。图7描绘了当VxWorks作为本地OS在硬件110上运行时,应用如 何映射在存储器220中的典型示例,存储器220包括在寻址范围在 0X00000000至U OXFFFFFFFF之间的存储器存储的矢量表710、 VxWorks OS代码730、应用代码740、初始化数据750、未初始化数据760、系统 存储器堆770、未使用存储器720、和未使用存储器780。在该示例中,所 描绘的映射是到存储器220的物理映射。
图8描绘了当Linux作为本地OS在硬件110上运行时,应用如何映 射在存储器220中的典型示例,存储器220包括在寻址范围在0X00000000 到OXFFFFFFFF之间的存储器存储的共享库820 (例如主机库320)、应 用代码830、 Linux堆/栈所使用的存储器840、未使用存储器810、和不可 用存储器850。在该示例中,所描绘的映射是到存储器220的逻辑映射。
图9描绘了在VxWorks经由VME 310作为Linux上的应用运行的实 施例中,存储器220的映射的实施例。在这些实施例中,存储器220包 括矢量表710;共享变量存储器380;共享库820; VxWorks OS代码 730;应用代码740;分配给VxWorks、应用、数据和堆/栈的存储器,包 括但不限于初始化数据750、未初始化数据760、和系统存储器堆770; VME代码和数据970,包括但不限于VME库325、应用代码830、和堆/ 栈所使用的存储器840;以及未使用存储器910、未使用存储器920、未使
用存储器930、未使用存储器960、和不可用存储器980。存储器220的各 种元素在范围在0X00000000到OXFFFFFFFF之间的地址存储。在该示例 中,所描绘的映射是到存储器220的逻辑映射。
在一些实施例中,硬件110还包括至少两个CPU并且使得HOS 315 能够支持多处理环境。当一个CPU执行RTOS环境150时,另一个CPU 可并发地服务VME 150。该并发处理可提供非常低的等待时间环境。此 外,通过使用两个或多个CPU,避免了HOS315的内核变化,例如内核的 补丁和特定设备驱动的创建。在这些实施例中,自旋锁信号量可用于仲裁 对共享数据的访问以进一步减小等待时间。自旋锁信号量例如可用于保护 正经由消息队列570访问的重要数据区。在这些实施例中,信号量库325a 包括支持自旋锁信号量的代码。
本领域技术人员将会理解,在一些实施例中,可使用预编程硬件或固 件元件(例如专用集成电路(ASIC)、电可擦可编程只读存储器 (EEPROM)等),或其它相关组件实现RTOS环境150、 VME 310和 HOS 315的功能。在其它实施例中,可使用可以访问存储用于计算装置操 作的计算机可读程序代码的代码存储器(例如存储器220)的计算装置来 实现RTOS环境150、 VME 310和HOS 315的功能。计算机可读程序代码 可存储在固定的、有形的和这些组件直接可读的介质上,(例如可移动磁 盘、CD-ROM、 ROM、固定磁盘、USB驱动器),或者计算机可读程序 代码可远程存储但可经由调制解调器或连接到网络(包括但不限于因特 网)的其它接口设备通过传输介质发送到这些组件。传输介质可以是非无 线介质(例如光学或模拟通信线路)或无线介质(例如微波、红外线、自 由空间光学或其它传输方案)或其组合。
本领域技术人员将会理解,仍存在更多的可能用于实现实施例的候选 实现和修改,并且上面的实现和示例仅仅是一个或多个实施例的说明。因 此范围仅由所附的权利要求书所限制。
权利要求
1.一种用于接合实时操作系统(RTOS)环境和本地主机操作系统(HOS)的虚拟机环境(VME),包括-至少一种用于仿真对所述本地HOS可用的硬件服务的虚拟I/O服务,使得所述至少一种虚拟I/O服务当从所述至少一种虚拟I/O服务向所述RTOS环境发送数据时能生成通知;-用于在所述RTOS环境和所述至少一种虚拟I/O服务之间交换数据的非阻塞消息队列;-与所述至少一种虚拟I/O服务通信的用于响应于接收所述通知而生成中断的中断仿真器,所述中断用于触发所述RTOS环境以轮询所述非阻塞消息队列,以便从所述非阻塞消息队列获取数据;-与所述中断仿真器通信的用于将所述中断中继到所述RTOS环境的硬件异常处理机仿真器,还使得所述硬件异常处理机仿真器能够管理来自所述本地HOS的中断和异常,以使得对所述RTOS环境看来,来自所述本地HOS的中断和异常似乎本来就发生在运行所述RTOS环境的硬件上;和-与所述硬件异常处理机仿真器通信的监控指令仿真器,用于以下至少一项仿真由所述RTOS环境执行的监控指令;仿真用于处理由于不正确使用硬件而引起的异常的指令;和仿真用于处理由于软件意图而引起的异常的指令。
2. 根据权利要求1所述的VME,还包括用于通过借助于代理调用本 地主机OS服务在所述RTOS环境和所述本地HOS之间对调用和调用响应 进行中继的定制RPC服务,还使得所述定制RPC服务能够当数据在所述 定制PRC服务和所述RTOS环境之间传送时生成RPC通知。
3. 根据权利要求1所述的VME,其中所述至少一种虚拟I/O服务包 括用于以固定速率将报时信号中断递送到所述RTOS环境的报时信号/时钟 服务。
4. 根据权利要求1所述的VME,其中所述至少一种虚拟I/O服务包括用于仿真与所述本地HOS通信的串行I/O设备的串行I/O服务。
5. 根据权利要求4所述的VME,其中还使得所述串行I/O服务能够 用于通过借助代理调用本地主机OS服务来在RTOS环境之间对调用和调 用响应进行中继。
6. 根据权利要求1所述的VME,其中所述至少一种虚拟I/O服务包 括用于仿真与所述本地HOS通信的以太网设备的以太网服务。
7. 根据权利要求6所述的VME,其中还使得所述以太网服务能够用 于通过借助代理调用本地主机OS服务来在所述RTOS环境之间对调用和 调用响应进行中继。
8. 根据权利要求1所述的VME,其中所述非阻塞消息队列包括至少 一个用于向所述RTOS环境递送数据的队列,和至少一个用于从所述 RTOS环境接收数据的队列。
9. 根据权利要求1所述的VME,还包括用于使得所述RTOS环境能 为数据轮询所述非阻塞消息队列并且从所述非阻塞消息队列获取数据的函 数。
10. 根据权利要求9所述的VME,还包括用于存储指向所述函数的 指针中的至少一个的共享变量存储器,其中所述RTOS环境通过读取所述 指针并且从关联于所述指针和所述函数的存储地址获取所述函数来访问所 述函数。
11. 根据权利要求2所述的VME,还包括用于存储所述RTOS环境 所使用的用于与所述VME交互的函数的VME库。
12. 根据权利要求11所述的VME,还使得所述VME库能够存储以 下至少一项所使用的函数所述至少一种虚拟I/0服务,所述定制RPC服 务、所述非阻塞消息队列、所述中断仿真器、所述监控指令仿真器、和所 述硬件异常处理机仿真器。
13. 根据权利要求12所述的VME,其中所述VME库包括服务库、 消息库、队列库、信号量库、和定制线程库。
14. 根据权利要求1所述的VME,其中所述RTOS环境包括 Vx Works 。
15. 根据权利要求1所述的VME,其中所述本地HOS包括Microsoft Windows、 Microsoft DOS 、 MAC OS X、 UNIX、 LINUX和SOLARIS中的至少一种。
16. 根据权利要求1所述的VME,其中由于软件意图而引起的所述 异常包括软件陷阱和调试指令中的至少一种。
17. —种用于经由权利要求2所述的VME将数据发送到所述RTOS 环境的方法,所述数据打算供所述RTOS环境使用,包括-从所述至少一种虚拟I/O服务或所述定制RPC将所述数据发送到所 述非阻塞消息队列;-生成所述通知并且将所述通知从所述至少一种虚拟I/O服务发送到所 述中断仿真器;-响应于接收到所述通知,在所述中断仿真器生成所述中断; -经由所述硬件异常处理机将所述中断中继到所述RTOS环境; -当在所述非阻塞消息队列从所述RTOS环境接收到针对所述数据的轮询时,将所述数据中继到所述RTOS环境,所述轮询在所述RTOS环境由所述中断触发。
18. 根据权利要求17所述的方法,还包括从所述本地HOS接收数据。
19. 根据权利要求18所述的方法,还包括从与所述本地HOS通信的 硬件设备接收数据。
全文摘要
根据说明书中描述的实施例,描述了一种用于接合实时操作系统(RTOS)环境和本地主机操作系统(HOS)的虚拟机环境(VME)。VME包括至少一种用于仿真对本地HOS可用的硬件服务的虚拟I/O服务,使得所述至少一种虚拟I/O服务当从该至少一种虚拟I/O服务向RTOS环境发送数据时能生成通知;用于在RTOS环境和所述至少一种虚拟I/O服务之间交换数据的非阻塞消息队列;与所述至少一种虚拟I/O服务通信的用于响应于接收通知而生成中断的中断仿真器,所述中断用于触发RTOS环境以轮询非阻塞消息队列,以便从所述非阻塞消息队列获取数据;与所述中断仿真器通信的用于将中断中继到RTOS环境的硬件异常处理机仿真器,还使得所述硬件异常处理机仿真器能够管理来自所述本地HOS的中断和异常,以使得对所述RTOS环境看来,来自所述本地HOS的中断和异常似乎本来就发生在运行所述RTOS环境的硬件上;以及与所述硬件异常处理机仿真器通信的监控指令仿真器,用于仿真由RTOS环境执行的监控指令。
文档编号G06F9/46GK101344860SQ200810126878
公开日2009年1月14日 申请日期2008年7月10日 优先权日2007年7月10日
发明者迪诺·坎顿 申请人:米特尔网络公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1