首页> 中国专利> 接合实时操作系统环境和本地主机操作系统的虚拟机环境

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

摘要

根据说明书中描述的实施例,描述了一种用于接合实时操作系统(RTOS)环境和本地主机操作系统(HOS)的虚拟机环境(VME)。VME包括:至少一种用于仿真对本地HOS可用的硬件服务的虚拟I/O服务,使得所述至少一种虚拟I/O服务当从该至少一种虚拟I/O服务向RTOS环境发送数据时能生成通知;用于在RTOS环境和所述至少一种虚拟I/O服务之间交换数据的非阻塞消息队列;与所述至少一种虚拟I/O服务通信的用于响应于接收通知而生成中断的中断仿真器,所述中断用于触发RTOS环境以轮询非阻塞消息队列,以便从所述非阻塞消息队列获取数据;与所述中断仿真器通信的用于将中断中继到RTOS环境的硬件异常处理机仿真器,还使得所述硬件异常处理机仿真器能够管理来自所述本地HOS的中断和异常,以使得对所述RTOS环境看来,来自所述本地HOS的中断和异常似乎本来就发生在运行所述RTOS环境的硬件上;以及与所述硬件异常处理机仿真器通信的监控指令仿真器,用于仿真由RTOS环境执行的监控指令。

著录项

  • 公开/公告号CN101344860A

    专利类型发明专利

  • 公开/公告日2009-01-14

    原文格式PDF

  • 申请/专利权人 米特尔网络公司;

    申请/专利号CN200810126878.4

  • 发明设计人 迪诺·坎顿;

    申请日2008-07-10

  • 分类号G06F9/455;G06F9/46;

  • 代理机构北京东方亿思知识产权代理有限责任公司;

  • 代理人宋鹤

  • 地址 加拿大安大略省

  • 入库时间 2023-12-17 21:19:23

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-07-27

    未缴年费专利权终止 IPC(主分类):G06F9/455 授权公告日:20110622 终止日期:20170710 申请日:20080710

    专利权的终止

  • 2011-06-22

    授权

    授权

  • 2009-03-04

    实质审查的生效

    实质审查的生效

  • 2009-01-14

    公开

    公开

说明书

技术领域

本说明书一般地涉及实时操作系统,并且尤其涉及一种用于接合实时操作系统环境和本地主机操作系统的虚拟机环境。

背景技术

必须以确定性的、时间灵敏的方式反应和执行的一类产品依靠实时软件,其转而依靠实时操作系统(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环境和所述至少一种虚拟I/O服务之间交换数据的非阻塞消息队列。VME还包括与所述至少一种虚拟I/O服务通信的用于响应于接收通知而生成中断的中断仿真器,所述中断用于触发RTOS环境以轮询非阻塞消息队列,以便从所述非阻塞消息队列获取数据。VME还包括与所述中断仿真器通信的用于将中断中继到RTOS环境的硬件异常处理机仿真器,还使得该硬件异常处理机仿真器能够管理来自本地HOS的中断和异常,以使得对RTOS环境看来,来自本地HOS的中断和异常似乎本来就发生在运行所述RTOS环境的硬件上;还包括与所述硬件异常处理机仿真器通信的监控指令仿真器,用于以下至少一项:仿真由RTOS环境执行的监控指令;仿真用于处理由于不正确使用硬件而引起的异常的指令;和仿真用于处理由于软件意图而引起的异常的指令。

在第一广阔方面的一些实施例中,VME还包括用于通过借助于代理调用本地主机OS服务在RTOS环境和本地HOS之间对调用和调用响应进行中继的定制RPC服务,还使得定制RPC服务能够当数据在定制PRC服务和RTOS环境之间传送时生成RPC通知。

在第一广阔方面的一些实施例中,所述至少一种虚拟I/O服务包括用于以固定速率将报时信号中断递送到RTOS环境的报时信号/时钟服务。

在第一广阔方面的其它实施例中,所述至少一种虚拟I/O服务包括用于仿真与HOS通信的串行I/O设备的串行I/O服务。在这些实施例的一些中,还使得串行I/O服务能够用于通过借助代理调用本地主机OS服务来在RTOS环境之间对调用和调用响应进行中继。

在第一广阔方面的另外实施例中,所述至少一种虚拟I/O服务包括用于仿真与HOS通信的以太网设备的以太网服务。在这些实施例的一些中,还使得以太网服务能够用于通过借助代理调用本地主机OS服务来在RTOS环境之间对调用和调用响应进行中继。

在第一广阔方面的又另外实施例中,非阻塞消息队列包括至少一个用于向RTOS环境递送数据的队列,和至少一个用于从RTOS环境接收数据的队列。

在第一广阔方面的其它实施例中,VME还包括用于使得RTOS环境能为数据轮询非阻塞消息队列并且从非阻塞消息队列获取数据的函数。在这些实施例的一些中,VME还包括用于存储指向这些函数的指针中的至少一个的共享变量存储器,其中RTOS环境通过读取指针并且从关联于指针和函数的存储地址获取函数来访问函数。

在第一广阔方面的其它实施例中,VME还包括用于存储RTOS环境所使用的用于与VME交互的函数的VME库。在这些实施例的一些中,还使得VME库能够存储以下至少一项所使用的函数:至少一种虚拟I/O服务,定制RPC服务、非阻塞消息队列、中断仿真器、监控指令仿真器、和硬件异常处理机仿真器。在一些实施例中,VME库包括服务库、消息库、队列库、信号量库、和定制线程库。

在第一广阔方面的一些实施例中,RTOS环境包括VxWorks。在第一广阔方面的其它实施例中,本地HOS包括Microsoft Windows、MicrosoftDOS、MAC OS X、UNIX、LINUX和SOLARIS中的至少一种。

在第一广阔方面的另外实施例中,由于软件意图所调用的异常包括软件陷阱和调试指令中的至少一种。

实施例的第二广阔方面设法提供一种用于经由VME将数据发送到RTOS环境的方法,该数据打算供RTOS环境使用。方法的第一步骤包括从至少一种虚拟I/O服务或定制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)、和RTSA140。RTOS 130通过经由BSP 120与计算机硬件110交互来管理计算机的硬件和软件资源。实时软件应用140运行在RTOS 130上。BSP 120包括用于与计算机110交互的至少一种软件驱动。

图2根据现有技术描绘了计算机硬件110。计算机硬件110包括中央处理器(CPU)210,其与存储器220和中断控制器230通信,执行实时操作系统环境150。中断控制器控制从各种设备发送到CPU 210的中断235,各种设备包括但不限于时钟240、串行输入/输出(I/O)设备250(例如通用异步接收器发送器(UART))、以太网设备260、和磁盘I/O270。中断控制器230区分中断235的优先次序并且将它们传送到CPU210。在接收到中断,例如中断235之一时,CPU 210保存其当前执行状态并且调用中断处理机以用于处理中断。无论在什么情况下(例如数据从各种设备之一到达)通知了中断,CPU 210然后可切换到不同的执行状态来处理。CPU 210可同时管理若干不同的执行状态。关联于不同所保存执行状态的中断的使用是异常处理的方法,如本领域技术人员所已知的。在一些实施例中,CPU 210运行在以下两种模式之一:

a.用户模式,其中可执行应用或OS中的大部分指令;和

b.监控模式,其中可执行所有指令,包括修改CPU 210状态的指令,例如监控指令、和存取权限。监控模式也已知为特权模式,并且监控指令也已知为特权指令。监控指令的一些示例包括但不限于标志(状态)寄存器的中断标志(IF)的正确处理、矢量表的解释、CPU 210的各种处理器寄存器的操纵、栈上的上下文正确异常帧的创建、和CPU 210的MMU(存储器管理单元)的操纵,以及访问CPU 210的I/O存储空间。

在CPU 210上运行的RTOS通常在CPU 210运行在监控模式中的情况下运行。这允许RTSA直接访问CPU 210资源,以减少等待时间。

在硬件110专用于运行RTOS 130和RTSA 140的情况下,可编写RTOS 130以用于在专用类型的CPU上执行。另外,RTOS 130通常使用共享物理存储器以用于运行不同的软件线程(即执行线程,包括专用于操作系统进程的线程,和专用于RTSA进程的线程)。以该方式,RTOS 130相比于非实时操作系统显示了减少的等待时间,非实时操作系统通常使用逻辑存储器(即以硬件和软件实现的允许寻址非邻接存储器的寻址方案,仿佛它是邻接的,因此需要附加的软件层来将逻辑存储器映射到物理存储器)。

图3描绘了用于在非RTOS环境中运行图1的RTOS环境150的软件栈体系结构,例如在使得能够在计算机硬件110上运行的主机操作系统(HOS)315上。通常,RTOS 130作为HOS 315上的应用运行,HOS 315不知道它正在执行另一个操作系统。然而,为了使得RTOS 130能在HOS315上运行,虚拟机环境(VME)310也作为HOS 315上的应用运行。

HOS 315通常不是RTOS,而是通用操作系统。在一些实施例中,HOS 315包括工业标准OS,包括但不限于Microsoft Windows、MicrosoftDOS、MAC OS X、UNIX、LINUX、SOLARIS。HOS 315可以访问主机库320以用于存储由HOS 315和HOS315上运行的应用所使用的应用编程接口(API)和/或子程序和/或函数。API和/或子程序和/或函数通常包括“助手”代码和数据,如本领域技术人员所已知的。这允许代码和数据以模块化方式在应用之间共享和改变。

VME 310仿真当如图1所描绘的RTOS 130作为本地OS在硬件110上运行时RTOS 130所通常使用的硬件和/或软件服务,不必像处理器仿真软件那样仿真CPU 210本身。而是,VME 310复制了硬件110的行为。然而如果RTOS 130作为本地OS运行,BSP 120将通常与硬件110交互,以传送命令、中断和数据,在图3的体系结构中RTOS 130改为与VME 310交互。因此BSP 120修改为适于与VME 310中的软件接口通信。当RTOS130运行在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服务发送或接收数据时,BSP120与非阻塞消息队列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/O服务实现了特定I/O服务,包括但不限于:

-报时信号/时钟服务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和串行I/O设备/文件之间交换数据。串行I/O服务350包括串行I/O“进入”线程520,以用于经由HOS 315从RTOS环境150向串行I/O设备/文件传递数据。从RTOS环境150通过串行I/O进入线程520发送的数据重定向到HOS 315上的串行I/O设备/文件。串行I/O服务350还包括串行I/O“出去”线程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一起能够管理和仿真异常。有两个基本类的可由VME 310仿真的异常:

-第一基本类的异常包括外部生成事件,其被转换以使得它们呈现为到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的其他元件所使用的定制子程序或函数。例如,至少一种虚拟I/O服务(和定制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,其为内部线程通信提供多线程/多进程安全机制;

-消息库325c,其扩展队列库325b的能力,以支持消息递送和通知;

-定制线程库325d,其在一些实施例中代替标准HOS线程库,以便避开在标准HOS库中发现的可让实现VME 310困难的限制;

-服务库325e,其使得能够简化客户端/服务器线程以及与之相关的内部线程通信机制的创建;和/或

-定制库325f,其提供VME 310使用的其它子程序。

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,发送到HOS 315,HOS 315然后处理该调用。

当RTOS环境150作为本地OS运行在硬件110上时,它通常运行在监控模式中,如上所述。然而,当RTOS环境150运行在VME 310上时,HOS 315仅允许它运行在用户模式中。在一些实施例中,这可导致RTOS环境150试图处理监控指令,例如想要直接处理硬件110和将对于其它应用或HOS 315有牵连的指令。

在一些实施例中,HOS 315捕获监控指令,并且引发异常并将其发送回RTOS环境150。硬件异常处理机仿真器390截取和检查异常并且标识RTOS环境150尝试哪个监控指令。监控指令仿真器330然后仿真所期望的监控指令。在一些实施例中,一些监控指令可能难于仿真。在这些实施例中,可修改RTOS环境150以执行功能上等同于不可访问的监控指令的命令。在一些实施例中,使用HOS 315中的用户级异常机制将在HOS 315发起的异常递送到进程,如本领域技术人员所已知的。硬件异常处理机仿真器390处理这些异常并且与中断仿真器335交互以将来自HOS 315的用户模式信号转换为上下文特定仿真异常,包括栈设置和读取矢量表等。以该方式,硬件异常处理机仿真器390仿真CPU,例如CPU 210的行为,使得RTOS环境150引发或递送的任何异常或中断呈现给RTOS环境150,仿佛它发生在本来运行RTOS环境150的CPU上。

通常,存储器220包括足够的物理存储器以保存VME 310、RTOS环境150和HOS 315。此外,存储器220通常被锁住并且对于由HOS 315交换是不可用的。

在特定的非限制实施例中,RTOS 130包括来自Wind River,500Wind River Way,Alameda,CA 94501的VxWorks,并且HOS 315包括Linux。图7描绘了当VxWorks作为本地OS在硬件110上运行时,应用如何映射在存储器220中的典型示例,存储器220包括在寻址范围在0X00000000到0XFFFFFFFF之间的存储器存储的矢量表710、VxWorksOS代码730、应用代码740、初始化数据750、未初始化数据760、系统存储器堆770、未使用存储器720、和未使用存储器780。在该示例中,所描绘的映射是到存储器220的物理映射。

图8描绘了当Linux作为本地OS在硬件110上运行时,应用如何映射在存储器220中的典型示例,存储器220包括在寻址范围在0X00000000到0XFFFFFFFF之间的存储器存储的共享库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到0XFFFFFFFF之间的地址存储。在该示例中,所描绘的映射是到存储器220的逻辑映射。

在一些实施例中,硬件110还包括至少两个CPU并且使得HOS 315能够支持多处理环境。当一个CPU执行RTOS环境150时,另一个CPU可并发地服务VME 150。该并发处理可提供非常低的等待时间环境。此外,通过使用两个或多个CPU,避免了HOS 315的内核变化,例如内核的补丁和特定设备驱动的创建。在这些实施例中,自旋锁信号量可用于仲裁对共享数据的访问以进一步减小等待时间。自旋锁信号量例如可用于保护正经由消息队列570访问的重要数据区。在这些实施例中,信号量库325a包括支持自旋锁信号量的代码。

本领域技术人员将会理解,在一些实施例中,可使用预编程硬件或固件元件(例如专用集成电路(ASIC)、电可擦可编程只读存储器(EEPROM)等),或其它相关组件实现RTOS环境150、VME 310和HOS 315的功能。在其它实施例中,可使用可以访问存储用于计算装置操作的计算机可读程序代码的代码存储器(例如存储器220)的计算装置来实现RTOS环境150、VME 310和HOS 315的功能。计算机可读程序代码可存储在固定的、有形的和这些组件直接可读的介质上,(例如可移动磁盘、CD-ROM、ROM、固定磁盘、USB驱动器),或者计算机可读程序代码可远程存储但可经由调制解调器或连接到网络(包括但不限于因特网)的其它接口设备通过传输介质发送到这些组件。传输介质可以是非无线介质(例如光学或模拟通信线路)或无线介质(例如微波、红外线、自由空间光学或其它传输方案)或其组合。

本领域技术人员将会理解,仍存在更多的可能用于实现实施例的候选实现和修改,并且上面的实现和示例仅仅是一个或多个实施例的说明。因此范围仅由所附的权利要求书所限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号