CN1490724A - 一种用于嵌入式系统软件开发的虚拟机装置 - Google Patents

一种用于嵌入式系统软件开发的虚拟机装置 Download PDF

Info

Publication number
CN1490724A
CN1490724A CNA021375119A CN02137511A CN1490724A CN 1490724 A CN1490724 A CN 1490724A CN A021375119 A CNA021375119 A CN A021375119A CN 02137511 A CN02137511 A CN 02137511A CN 1490724 A CN1490724 A CN 1490724A
Authority
CN
China
Prior art keywords
module
message
software
application
operating system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA021375119A
Other languages
English (en)
Other versions
CN1280726C (zh
Inventor
张建林
程煜明
曹鹏志
刘泽红
张义成
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nokia Shanghai Bell Co Ltd
Original Assignee
Alcatel Lucent Shanghai Bell Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alcatel Lucent Shanghai Bell Co Ltd filed Critical Alcatel Lucent Shanghai Bell Co Ltd
Priority to CN 02137511 priority Critical patent/CN1280726C/zh
Publication of CN1490724A publication Critical patent/CN1490724A/zh
Application granted granted Critical
Publication of CN1280726C publication Critical patent/CN1280726C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)

Abstract

一种用于嵌入式系统软件开发的虚拟机装置,基于一种实时操作系统对上层大型嵌入式系统软件提供开发和运行支持,包括数据库模块、进程间通信模块、高可靠性模块、调试模块、任务调度模块、扩展协议模块、时钟模块、内存管理模块和多任务间通信模块。本发明不仅为上层大型嵌入式系统软件提供了一个功能强大的运行和开发平台,实现了上下层无关性,增加了上层应用代码的可移植性,而且更为重要的是:通过在虚拟机装置中包含通用性的中间件组件,将上层应用软件中一些通用模块的功能集中转移到该虚拟机装置中实现,实现了上层应用和平台功能的分离,从而有效的简化了上层大型嵌入式系统软件的设计,提高软件开发效率,同时,还增强了上层软件的可靠性和可维护性。

Description

一种用于嵌入式系统软件开发的虚拟机装置
(一)技术领域
本发明涉及一种用于嵌入式系统软件开发的虚拟机装置。
(二)背景技术
早期的嵌入式系统软件的开发都是基于特定的实时操作系统,这样虽然能充分利用操作系统的性能,但导致嵌入式系统软件对底层操作系统和硬件的依赖性大,程序代码的可移植性差。后来在大型嵌入式软件的开发中,为了满足上层嵌入式软件代码能够方便的移植到不同的实时操作系统的需要,实现上层嵌入式系统软件与下层实时操作系统的无关性,很多嵌入式系统软件的开发商都在实时操作系统之上自行开发一套虚拟机装置,该装置对上提供相对标准的由开发商自行定义的一套API(应用编程接口),上层嵌入式系统软件只是调用这些API,向下封装特定的实时操作系统,这样即使更换或升级处理器芯片和相应的操作系统,嵌入式系统软件都不必改动。
但是由于硬件处理能力的限制,为了追求较高的效率,这些虚拟机装置都是针对特定的上层嵌入式系统软件开发的,通用性较差,功能也较单一,常常只能提供简单的抽象封装功能,而不能提供现在很多上层嵌入式应用软件普遍需要的中间件功能,如:虚拟任务调度,不同处理器间的通信,分布式数据库,高可靠性,消息跟踪与调试等,因为提供这些功能常常意味着要降低系统处理能力和低下的效率。
近年来,随着集成电路技术的发展,CPU(中央处理器)芯片处理能力的不断提高,使得嵌入式系统硬件效率的瓶颈问题不再成为主要矛盾;而大型上层嵌入式系统软件的功能和规模在不断提高,如果没有虚拟机装置中较完善的中间件的支持,大型上层嵌入式系统软件开发的复杂度将成几何级数增加,导致软件代码量急剧膨胀,软件的模块结构混乱,可维护性降低,开发效率低下。这两方面的因素使得开发一种比较完善的基于实时操作系统的虚拟机装置成为可能并且很有必要,完善的虚拟机装置也代表了当今嵌入式系统软件开发平台的发展趋势。
(三)发明内容
本发明的目的是:提供一种用于嵌入式系统软件开发的虚拟机装置作为上层应用软件的运行和开发平台,将上层应用中的一些较底层的通用模块作为中间件在虚拟机装置中实现,实现上层应用和平台功能的分离,从而简化上层大型嵌入式系统软件的设计,提高软件开发效率;同时增强上层软件的可靠性和可维护性。
本发明所提供的一种用于嵌入式系统软件开发的虚拟机装置,基于一种实时操作系统对上层大型嵌入式系统软件提供开发和运行支持,其特征在于:它包含数据库模块、进程间通信模块、高可靠性模块、调试模块、任务调度模块、扩展协议模块、时钟模块、内存管理模块和多任务间通信模块,其中:数据库模块,作为业务数据的存储平台,存储系统中的准静态数据表单,存储具有实时性、分布性特点的数据,利用套接字依靠自己实现分布式通信功能,另外,上层的嵌入式系统软件访问数据时对于数据的物理位置是透明的;进程间通信模块,作为消息路由平台,为上层的嵌入式系统软件中的模块提供透明的消息通信机制,即:根据上层软件中发送消息时调用函数中的输入参数,判断该消息是发送给本地任务还是远端任务,若是本地任务则调用操作系统函数直接发送消息,若是远端任务则通过特定的任务标识规则,首先决定消息到达的目的处理器,再决定接收消息的具体任务,同时由于所有的上层模块发送和接收的消息都经过进程间通信模块,故它还能在设备开发完成已正常运行后,提供不利用调试代码的消息跟踪功能,用户可以通过操作维护代理软件提供的管理接口,跟踪进程间通信模块里邮箱中的特定消息;高可靠性模块,基于商业化的底层硬件级的可靠性管理工具软件,作为高可靠性的中间件平台,使得提供应用级别上业务的高可靠性成为可能并比较容易实现,即:支持应用层的管理对象的事件检测及相应的处理,涉及应用间的数据同步及应用的恢复,用于恢复机制的检查点的传递和接收,通过回调的方式完成相应的高可靠性动作和系统拓扑维护;调试模块,提供对上层嵌入式系统软件的调试功能,主要用于软件的开发阶段或运行阶段重大错误的诊断,即:根据开发调试人员的输入参数,其可以输出上层嵌入式系统软件中某个模块中某个任务的状态,某个消息的内容,某个变量的值,某段内存地址存储的数据,另外,本调试模块的实现需要操作维护软件的支持;任务调度模块,用于调度嵌入式系统中系统关联程度高、且相互间无需预抢占的多个上层应用模块,完成上层应用模块的调度,本模块代替操作系统完成应用模块的调度和通信,在形式上本模块和被调度的上层应用模块一起作为操作系统上的一个任务;扩展协议模块,实现通信协议,并根据上层应用的需要,实现上层应用需要的特定的底层通信协议;时钟模块,封装了底层的实时操作系统的基本时间管理功能,并封装设备中时钟控制电路板提供的时钟同步功能,对上供统一的接口;内存管理模块,提供不同于底层实时操作系统的内存管理机制,主要使用预分配的静态内存来存储程序代码和中间数据,通过对内建的索引表,指针链表的管理,内存管理模块对上层应用软件提供灵活且高效的内存管理功能,包括内存分配与释放,内存缓冲区预留单元,并提供一定的内存泄漏自动检测及回收;多任务间通信模块,用于协调多任务间同步,即:抽象多个实时操作系统提供的一些共性的消息的通信方式并加以封装,对上提供统一的接口,该应用编程接口是底层采用的实时操作系统支持的一个子集。
上述的用于嵌入式系统软件开发的虚拟机装置,其中,数据库模块采取网状数据模型,或者直接集成专业化的商用实时嵌入式数据库软件。
上述的用于嵌入式系统软件开发的虚拟机装置,其中,任务调度模块包括调度子模块、消息池子模块、上层应用接口子模块、操作系统接口子模块和应用注册表子模块,且调度子模块、应用注册表子模块和消息池子模块分别连接在上层应用接口子模块和操作系统接口子模块之间:上层应用接口子模块与操作系统接口子模块相连;调度子模块分别与应用注册表子模块和消息池子模块相连。
通过本发明,为上层大型嵌入式系统软件提供了一个功能强大的运行和开发平台,不仅屏蔽了底层操作系统的细节,实现了上下层无关性,增加了上层应用代码的可移植性,而且更为重要的是:通过在虚拟机装置中包含通用性的中间件组件,将上层应用软件中一些通用模块的功能集中转移到该虚拟机装置中实现,层次结构清晰,实现了上层应用和平台功能的分离,使得设计上层软件时思路更专注于具体功能和业务的实现而不必关心于平台相关的细节,从而有效的简化了上层大型嵌入式系统软件的设计,提高软件开发效率,同时,还增强了上层软件的可靠性和可维护性。
(四)附图说明
图1为本发明虚拟机装置的内部模块结构和外部接口的框图;
图2是本发明中的任务调度模块的结构框图。
(五)具体实施方式
如图1,本发明虚拟机(VM)装置2运行于实时操作系统3之上,对上层的嵌入式系统软件1提供服务,不仅作为嵌入式系统软件1的运行平台,而且还作为其开发平台。虚拟机装置2在实时操作系统3之上开发,使用的开发工具是Tornado(一种基于VxWorks的集成开发环境)。硬件5是一个完整的NodeB(基站)系统,包含了一块系统控制单盘和多块业务处理单盘,每个单盘上都有一个MPC860(美国摩托罗拉公司生产的一种处理器芯片)处理器,单盘之间通过工业总线相连,可以实时交互信息。在单盘上,有板支持包和设备驱动程序4。实时操作系统3采用Vxworks(目前的一种主流嵌入式实时操作系统),嵌入式系统软件1包含主控、Iub(宽带码分多址网络中无线网络控制器与基站间的接口)接口控制信令,操作维护等应用模块。
虚拟机(VM)装置2的对外接口如下:
如图1,在嵌入式系统软件1与虚拟机装置2之间的接口上,虚拟机装置2对上提供四种类型的API(应用编程接口),从左至右:无返回值的函数调用,有返回值的函数调用,钩子函数,消息通知。需要说明的是:被调用函数的返回值并不代表被调用函数的处理结果,无论函数是否有返回值,被调用函数返回后,处理结果的返回分为两种情况:立即返回(函数返回时已完成所有的处理过程,处理结果立即返回);不立即返回(函数返回时该函数调用的处理过程并没完成,处理结果也不能立即返回,需要等待一定时间后再返回)。钩子函数的实现机制如下:首先由嵌入式系统软件1向虚拟机装置2登记钩子函数地址,当对应该钩子函数的特定事件发生时,由虚拟机装置2自动调用嵌入式系统软件1中的钩子函数。消息通知共有三种方式:无通知,同步通知,异步通知等。同步通知意味着在执行过程中返回处理结果,一般为一次,异步通知意味着在执行过程中报告消息,并可能报告多次。虚拟机装置2与实时操作系统3之间的接口没有详细标出,因为该接口属于内部实现,其细节主要与实时操作系统3紧密相关,另外还与板支持包和设备驱动程序4和硬件5相关。虚拟机装置2屏蔽了该接口的细节,该接口对上层的嵌入式系统软件1是不可见的。
如图1,虚拟机装置2里共有九个模块:DB(数据库)模块21,IPC(进程间通信)模块22,HA(高可靠性)模块23,Debug(调试)模块24,任务调度模块25,扩展协议模块26,时钟模块27,内存管理模块28,多任务间通信模块29。对各个模块的具体实现简要说明如下:
DB(数据库)模块21:作为业务数据的存储平台,存储系统中的准静态数据表单,存储的数据具有实时性、分布性特点。实时性体现在事务处理有定时限制,要求在某一特定时刻或一定的时间内完成,并且数据与时间紧密相关,数据更新较快,数据的存在具有时间性,过时的数据可能毫无意义。分布性体现在实际的数据可能存储在一个或多个物理设备上,但是这些数据通过同步保持一致性,DB(数据库)模块通过基于TCP/IP(传输控制协议/网间协议)的套接字实现分布式通信功能。上层的嵌入式系统软件访问数据时对于数据的物理位置是透明的。DB(数据库)模块21有两种实现方案,第一种是自行开发的,符合SQL(结构化查询语言)标准,支持数据定义、维护和管理,支持事务管理和操作,支持多用户,为满足较高的实时要求,该DB(数据库)主要采取网状数据模型,通过多对多的索引字段,可快速查询和访问数据,内核的数据存储方式仍然采用传统的数据结构,包括数组,少量链表和Hash(哈希表),分布式功能支持不同处理器之间的通信,保证数据的一致性;第二种方案是直接集成专业化的商用实时嵌入式数据库软件,这些软件一般都考虑了与特定的实时操作系统相配合,实时性好,性能稳定可靠,为了向上提供统一的API(应用编程接口),需要对商用实时嵌入式数据库软件提供的API进行简单的封装。第一种方案的效率更高。
IPC(进程间通信)模块22:作为消息路由平台,为上层的嵌入式系统软件1中的模块提供透明的消息通信机制。根据上层软件1中发送消息时调用函数中的输入参数,判断该消息是发送给本地任务还是远端任务,若是本地任务则调用操作系统函数直接发送消息,若是远端任务则通过特定的任务标识规则,首先决定消息到达的目的处理器,再决定接收消息的具体任务,这样上层的嵌入式系统软件就不别关心复杂的消息路由,只需简单的调用IPC(进程间通信)模块提供的统一的API(应用编程接口)。同时由于所有的上层模块发送和接收的消息都经过IPC(进程间通信)模块,故它还能在设备开发完成已正常运行后,提供不利用调试代码的消息跟踪功能,用户可以通过操作维护代理软件提供的管理接口,跟踪IPC(进程间通信)模块里邮箱中的特定消息。采用自定义的通信协议,实现嵌入式系统软件1中的不同任务间的内部消息的路由。IPC(进程间通信)模块22向上提供的API(应用编程接口)中与路由有关的三个参数是GID(全局标识),Operation Code(操作代码)和InstanceID(实例标识),其中前两个参数是必须的,最后一个参数可选。GID用来指定唯一的处理器,有两种形式:功能体标识和处理器号标识,但功能体标识能被映射到处理器标识,OperationCode(操作代码)用来指定处理器上的某一个Task(任务),Instance ID(实例标识)用来指定Task(任务)处理的某一个用户的数据表单(或上下文),因为有些任务是公用的,不针对一个特定的用户,所以向这些任务发送消息时不必指定Instance ID(实例标识)。IPC(进程间通信)模块22分布在所有的处理器上,在发送消息端,当上层的嵌入式系统软件1要发送消息时,它不别关心接收消息的实体在系统的哪一个处理器上,只需调用如下形式的API(应用编程接口):
VmMsgSend(int GID,int OperationCode,int InstanceID,char*innerMsgBuffer)
其中函数参数innerMsgBuffer包含系统定义的用于模块间通信的内部消息,该函数的实现在IPC(应用编程接口)模块22中,发送端的IPC(应用编程接口)模块22将首先根据GID判断消息目的地是否在本处理器,如是则直接调用实时操作系统3提供的系统API,发送消息,若不是,则根据GID(全局标识)寻找目的处理器,GID(全局标识)可将被映射成底层的IP(网间通信协议,广泛应用于当前的互联网)地址或其他协议地址,这样根据GID(全局标识),包含Operation Code,Instance ID的扩展消息包将被传送到目的处理器上的IPC(应用编程接口)模块2,然后该IPC模块2根据OperationCode寻找到具体的任务,根据InstanceID寻找到具体的用户上下文。IPC(应用编程接口)模块22的另一个重要功能是实现正常运行的设备中的消息的跟踪,该消息跟踪的实现手段不同于软件开发阶段里的通过打开编译开关选项实现消息跟踪的手段,IPC(应用编程接口)模块22的消息跟踪不是通过调试代码的执行来实现,因为此时的正式运行软件里已没有调试代码,而是通过与Agent(代理)模块的私有接口,并利用Agent的对外接口来实现,消息跟踪的输入参数只与需要跟踪的软件模块相关,而与软件模块所在的电路板无关,也就是说对于不同电路板上的同一个软件模块,消息跟踪的输入参数一样,内部实现也相同。
HA(高可靠性)模块23:基于商业化的底层硬件级的可靠性管理工具软件,作为高可靠性的中间件平台,使得提供应用级别上业务的高可靠性成为可能并比较容易实现。支持应用层的管理对象的事件检测及相应的处理,涉及应用间的数据同步及应用的恢复,Checkpoint(检查点,用于恢复机制)的传递和接收,通过回调的方式完成相应的HA(高可靠性)动作,系统拓扑维护等。上层的嵌入式系统软件的HA主要是通过对重要的处理板实行1加1,N加1或者0/1备份实现的,1加1备份是指一个处理器处于Active(激活)态,另一个处于Standby(备用)态,当Active板子发生错误不能正常运行时,Standby(备用)板子接管Active(激活)板子的工作,并变为Active(激活)板子态,原来的Active(激活)板子经过失败恢复,正常后进入Standby(备用)状态。N加1备份是指N个处理器处于Active(激活)态,只有一个处于Standby(备用)态,0/1备份时两个板子都处于Active(激活)状态,但只有一个板子的处理结果在使用,当一个发生错误时,通过切换开关使用另一个板子的处理结果,这些备份板运行状态的检测、切换判断和工作保持等都是通过HA模块23完成的。HA模块23调用了底层的商用HA平台,该平台属于冗余系统槽高可靠性CompactPCI(一种总线标准)系统,通过为激活的组件提供冗余满足系统高可靠性的要求(99.999%),但其关注的重点是平台硬件设备的错误的检测、通知和一些基本的HA(高可靠性)硬件能力(如提供主、备主控板间100M以太连接,用于数据同步的目的)等,而对于应用程序中错误的检测来说,并没有提供支持。HA(高可靠性)模块23实现了与HA(高可靠性)相关的,类似于管理中间件完成的功能,如应用间数据的同步、应用级别的事件管理,Checkpoint(检查点,用于恢复机制)的传递和接收,通过回调的方式完成相应的HA动作,系统拓扑维护等。上层的嵌入式系统软件1只要通过HA(高可靠性)模块23提供的较简单的接口,就可获得HA Aware(高可靠性有意识)。
Debug(调试)模块24:提供对上层嵌入式系统软件的调试功能,用于软件的开发阶段或运行阶段重大错误的诊断等。根据开发调试人员的输入参数,Debug(调试)模块可以输出上层嵌入式系统软件中某个模块中某个任务的状态,某个消息的内容,某个变量的值,某段内存地址存储的数据等,开发人员需要对调试的上层软件比较熟悉。Debug(调试)模块对所有的上层嵌入式系统软件,包括协议软件、操作维护软件等提供调试,跟踪嵌入式系统软件1中不同任务间的原语消息,接口信息,错误信息等。Debug(调试)模块24相对独立于系统中的其他模块,在开始跟踪前,Debug(调试)模块24需要获得嵌入式系统软件1中不同模块间及嵌入式系统软件1和虚拟机装置2之间通信的Buffer(缓冲池)信息,Debug(调试)模块24对整个软件系统的加载和内存重定位信息也必须清楚,需要操作维护软件的支持。典型的原语消息跟踪函数如下:
PmTrace(char*filename,int line,int interface,char*module_name,char*function_name,int datatype,char*outaddress,int outlength)
其中,filename是软件源代码文件名,line是行数,interface是标识接口,module_name是模块名,function_name是函数名,datatype是数据类型,如整数,结构,数组,字节等,outaddress存放调试信息的输出地址,outlength是调试信息的长度。并且最后三个参数datatype,outaddress,outlength作为一组,可以重复多次,最多为10次。
调用该函数后,从outaddress地址里读取outlength长的字节数的信息,就是消息内容。
任务调度模块25:如图2所示,该模块内部由调度子模块251、消息池子模块252、上层应用接口子模块253、操作系统接口子模块254、应用注册表子模块255等组成,用于调度嵌入式系统软件1中系统关联程度高、且相互间无需预抢占的多个上层应用模块,完成上层应用模块的调度。本模块代替操作系统完成应用模块的调度和通信,在形式上本模块和被调度的上层应用模块一起作为操作系统上的一个任务。其中,调度子模块251,根据消息池子模块252中的消息的目的标识和注册的应用的标识进行上层嵌入式系统软件1的调度控制,并提供调度策略。消息池子模块252,存储嵌入式系统软件1中的模块间交互的消息以及外围应用任务模块发往嵌入式系统软件1中模块的消息,执行消息池的接入控制。上层应用接口子模块253,接收上层嵌入式系统软件1的消息发送请求,判断发送消息的目的和路由,上层嵌入式系统软件1的激活,向上层嵌入式系统软件1提供消息池接入能力。操作系统接口子模块254,完成从实时操作系统3的消息接收,消息检查、格式转换、消息存储,接受外部消息发送请求,格式转换、消息发送。应用注册表子模块254,存储上层嵌入式系统软件1中模块的标识、消息处理函数入口等公共信息。当嵌入式系统软件1中的某个上层应用模块欲发送消息时,激活上层应用接口模块253,上层应用接口模块253将判断消息的目的是否为同时被调度的另一个上层应用模块,如果是,将向消息池模块252发送消息存储请求完成消息存储,否则,将请求操作系统接口模块254发送消息到外围的其他任务,操作系统接口模块254被激活并进行标准的内部消息格式和外部通信格式的转化,并向实时操作系统3请求消息发送。当实时操作系统3的消息队列中接受到消息时,操作系统接口模块254被激活并进行消息目的判断,如消息的目的标识和应用注册表模块255中某个应用标识一致,就将接受消息转换为标准的内部消息格式并向消息池模块252发消息存储请求进行消息存储,否则发出告警。调度子模块251不断的从消息池子模块252中读出消息,根据消息的目的标识和应用注册表模块255中获得的信息决定调用某个上层应用模块中的函数。通过任务调度模块25的使用,解决了传统的嵌入式系统中操作系统上任务过多,调度负担重,效率不高的问题,同时,使得上层嵌入式系统软件1不必关心调度的细节。
扩展协议模块26:根据上层的嵌入式系统软件1的需要,将一些较底层的通信协议实现在虚拟机装置2里,这样上层应用只需要简单调用接口函数,就可使用协议,简化了上层的设计任务。目前虚拟机装置2里已封装了TCP/IP(传输控制协议/网间协议),SNMP(简单网络管理协议),ftp(文件传输协议),RLC(无线链路控制协议),MAC(媒体接入控制协议)等,其中有些协议是实时操作系统3的开发环境提供的,有些是另外购置的商业中间件,有些是自行开发的,对于上层的嵌入式系统软件1来说,都可直接使用。
时钟模块27:封装了底层的实时操作系统的基本时间管理功能,并封装设备中时钟控制电路板提供的时钟同步功能,对上供统一的接口。基本的时间管理功能只是简单的封装了实时操作系统3的时钟管理,时钟同步功能封装了底层的时钟控制板的功能,使得上层的嵌入式系统软件1中的不同模块间能保持同步,并与外部网管系统保持时钟同步。
内存管理模块28:提供不同于底层实时操作系统的内存管理机制。为了提高嵌入式系统软件1的效率和可靠性,禁止了实时操作系统3提供的动态内存管理功能,内存管理模块28向下只采用了实时操作系统3提供的基本的静态内存管理策略,但通过对内建的索引表,指针链表的管理,内存管理模块28对嵌入式系统软件1提供灵活且高效的内存管理功能,包括内存的获取与释放,用于协议通信时内存缓冲区的预留单元,并提供一定的内存泄露自动检测及回收技术。
多任务间通信模块29:用于协调多任务间同步。抽象多个实时操作系统提供的一些共性的消息,包括事件,信号灯,互斥量,域保护等通信方式并加以封装,对上提供统一的接口,该应用编程接口是底层采用的实时操作系统支持的一个子集。提取多个实时操作系统在消息,事件,信号灯,共享内存,域保护机制等方面的共性特征,简单封装后对上提供统一的应用编程接口,该接口是此处采用的实时操作系统3支持的一个子集。
基于本发明所开发了WCDMA NodeB(宽带码分多址基站)的上层应用软件,结果表明:该虚拟机装置能有效的简化上层应用软件的设计,提高应用系统的可靠性和可维护性,较以前的方法减少了30%的设计工作量,代码行数猛减了近50%,并且测试中发现总的软件错误数也下降了30%。

Claims (3)

1.一种用于嵌入式系统软件开发的虚拟机装置,基于一种实时操作系统对上层大型嵌入式系统软件提供开发和运行支持,其特征在于:它包含数据库模块、进程间通信模块、高可靠性模块、调试模块、任务调度模块、扩展协议模块、时钟模块、内存管理模块和多任务间通信模块,其中:
数据库模块,作为业务数据的存储平台,存储系统中的准静态数据表单,存储具有实时性、分布性特点的数据,利用套接字依靠自己实现分布式通信功能,另外,上层的嵌入式系统软件访问数据时对于数据的物理位置是透明的;
进程间通信模块,作为消息路由平台,为上层的嵌入式系统软件中的模块提供透明的消息通信机制,即:根据上层软件中发送消息时调用函数中的输入参数,判断该消息是发送给本地任务还是远端任务,若是本地任务则调用操作系统函数直接发送消息,若是远端任务则通过特定的任务标识规则,首先决定消息到达的目的处理器,再决定接收消息的具体任务,同时由于所有的上层模块发送和接收的消息都经过进程间通信模块,故它还能在设备开发完成已正常运行后,提供不利用调试代码的消息跟踪功能,用户可以通过操作维护代理软件提供的管理接口,跟踪进程间通信模块里邮箱中的特定消息;
高可靠性模块,基于商业化的底层硬件级的可靠性管理工具软件,作为高可靠性的中间件平台,使得提供应用级别上业务的高可靠性成为可能并比较容易实现,即:支持应用层的管理对象的事件检测及相应的处理,涉及应用间的数据同步及应用的恢复,用于恢复机制的检查点的传递和接收,通过回调的方式完成相应的高可靠性动作和系统拓扑维护;
调试模块,提供对上层嵌入式系统软件的调试功能,主要用于软件的开发阶段或运行阶段重大错误的诊断,即:根据开发调试人员的输入参数,其可以输出上层嵌入式系统软件中某个模块中某个任务的状态,某个消息的内容,某个变量的值,某段内存地址存储的数据,另外,本调试模块的实现需要操作维护软件的支持;
任务调度模块,用于调度嵌入式系统中系统关联程度高、且相互间无需预抢占的多个上层应用模块,完成上层应用模块的调度,本模块代替操作系统完成应用模块的调度和通信,在形式上本模块和被调度的上层应用模块一起作为操作系统上的一个任务;
扩展协议模块,实现通信协议,并根据上层应用的需要,实现上层应用需要的特定的底层通信协议;
时钟模块,封装了底层的实时操作系统的基本时间管理功能,并封装设备中时钟控制电路板提供的时钟同步功能,对上供统一的接口;
内存管理模块,提供不同于底层实时操作系统的内存管理机制,主要使用预分配的静态内存来存储程序代码和中间数据,通过对内建的索引表,指针链表的管理,内存管理模块对上层应用软件提供灵活且高效的内存管理功能,包括内存分配与释放,内存缓冲区预留单元,并提供一定的内存泄漏自动检测及回收;
多任务间通信模块,用于协调多任务间同步,即:抽象多个实时操作系统提供的一些共性的消息的通信方式并加以封装,对上提供统一的接口,该应用编程接口是底层采用的实时操作系统支持的一个子集。
2.根据权利要求1所述的一种用于嵌入式系统软件开发的虚拟机装置,其特征在于:所述的数据库模块采取网状数据模型,或者直接集成专业化的商用实时嵌入式数据库软件。
3.根据权利要求1所述的一种用于嵌入式系统软件开发的虚拟机装置,其特征在于:所述的任务调度模块包括调度子模块、消息池子模块、上层应用接口子模块、操作系统接口子模块和应用注册表子模块,其中:
调度子模块、应用注册表子模块和消息池子模块分别连接在上层应用接口子模块和操作系统接口子模块之间:
上层应用接口子模块与操作系统接口子模块相连;
调度子模块分别与应用注册表子模块和消息池子模块相连。
CN 02137511 2002-10-18 2002-10-18 一种用于嵌入式系统软件开发的虚拟机装置 Expired - Lifetime CN1280726C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 02137511 CN1280726C (zh) 2002-10-18 2002-10-18 一种用于嵌入式系统软件开发的虚拟机装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 02137511 CN1280726C (zh) 2002-10-18 2002-10-18 一种用于嵌入式系统软件开发的虚拟机装置

Publications (2)

Publication Number Publication Date
CN1490724A true CN1490724A (zh) 2004-04-21
CN1280726C CN1280726C (zh) 2006-10-18

Family

ID=34147052

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 02137511 Expired - Lifetime CN1280726C (zh) 2002-10-18 2002-10-18 一种用于嵌入式系统软件开发的虚拟机装置

Country Status (1)

Country Link
CN (1) CN1280726C (zh)

Cited By (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1295615C (zh) * 2004-12-20 2007-01-17 华中科技大学 具有时间约束的分布式软件可靠性评估系统
WO2007036072A1 (en) * 2005-09-29 2007-04-05 Intel Corporation Apparatus and method for expedited virtual machine (vm) launch in vm cluster environment
CN100369011C (zh) * 2005-08-15 2008-02-13 英业达股份有限公司 嵌入式装置的检测系统及方法
CN100375058C (zh) * 2004-12-24 2008-03-12 北京中星微电子有限公司 一种嵌入式产品软件调试方法
CN100389626C (zh) * 2005-06-02 2008-05-21 上海华为技术有限公司 防止系统中业务资源泄漏的方法
CN100403739C (zh) * 2006-02-14 2008-07-16 华为技术有限公司 基于链表的进程间消息传递方法
CN100409188C (zh) * 2006-01-13 2008-08-06 深圳创维-Rgb电子有限公司 一种新的电视机嵌入式Linux系统开发方法
CN100454238C (zh) * 2005-04-28 2009-01-21 上海贝尔阿尔卡特股份有限公司 一种实现与设备对象无关的dohm软件接口
CN100465899C (zh) * 2007-07-25 2009-03-04 湖南大学 基于虚拟内核对象的Linux程序检查点用户级实现方法
CN100495328C (zh) * 2005-08-08 2009-06-03 中国科学院研究生院 用于开发计算机系统的装置及其方法
CN100555240C (zh) * 2007-01-16 2009-10-28 国际商业机器公司 用于诊断应用程序的方法和系统
US7839848B2 (en) 2006-02-09 2010-11-23 Huawei Technologies Co., Ltd. Method, device and system for message transmission
CN101971146A (zh) * 2007-09-07 2011-02-09 甲骨文国际公司 改进作为管理程序来宾而运行的虚拟机中内存使用情况的系统和方法
CN102004662A (zh) * 2010-12-07 2011-04-06 江南大学 嵌入式可裁剪式虚拟机
CN102063306A (zh) * 2011-01-06 2011-05-18 夏春秋 一种通过电子表单进行应用开发的技术实现方法
CN101344860B (zh) * 2007-07-10 2011-06-22 米特尔网络公司 接合实时操作系统环境和本地主机操作系统的虚拟机环境
WO2011088779A1 (zh) * 2010-01-25 2011-07-28 腾讯科技(深圳)有限公司 实现移动终端上不同应用程序的进程之间通信的装置和方法
CN101405712B (zh) * 2006-03-21 2011-11-16 英特尔公司 利用虚拟化技术来加速域特定运行时环境的框架
CN101727423B (zh) * 2008-10-17 2011-12-07 东北大学 可重配置fpga上可抢占硬件多任务系统及其实现方法
CN101542414B (zh) * 2005-04-05 2011-12-14 国际商业机器公司 自适应内容平台以及与该平台的应用程序集成
WO2012010002A1 (zh) * 2010-07-21 2012-01-26 中兴通讯股份有限公司 一种物联网终端java应用的业务调试装置和方法
CN101493781B (zh) * 2008-01-24 2012-02-15 中国长城计算机深圳股份有限公司 一种虚拟机系统及其启动方法
CN102520957A (zh) * 2011-12-19 2012-06-27 厦门雅迅网络股份有限公司 一种嵌入式系统的软件分离设计的方法
CN102779047A (zh) * 2012-07-09 2012-11-14 哈尔滨工程大学 一种嵌入式软件支撑平台
WO2012160463A1 (en) * 2011-05-23 2012-11-29 International Business Machines Corporation Storage checkpointing in a mirrored virtual machine system
CN101681280B (zh) * 2007-05-25 2012-12-19 微软公司 使用外部调试基础结构的进程内调试
WO2013097237A1 (zh) * 2011-12-31 2013-07-04 华为技术有限公司 一种部署应用进程的方法、设备和系统
CN101819526B (zh) * 2009-09-18 2013-08-28 华为技术有限公司 调用底层软件的方法、装置和嵌入式系统
CN103384348A (zh) * 2013-05-29 2013-11-06 深圳市艾龙电子有限公司 一种ginga数字电视中间件在嵌入式数字电视平台上的实现方法
CN104407971A (zh) * 2014-11-18 2015-03-11 中国电子科技集团公司第十研究所 自动化测试嵌入式软件的方法
CN104657225A (zh) * 2015-01-13 2015-05-27 北京航空航天大学 基于OKL4的嵌入式虚拟化平台跨Cell数据传输系统
CN105051698A (zh) * 2013-03-28 2015-11-11 瑞典爱立信有限公司 用于基础设施即服务云中故障管理的方法和布置
CN105607904A (zh) * 2015-12-18 2016-05-25 南京熊猫电子股份有限公司 基于Linux平台的通信软件的快速开发框架及使用方法
CN106201896A (zh) * 2016-07-26 2016-12-07 华中科技大学 一种嵌入式环境下基于检查点的调试方法、系统及装置
CN106357761A (zh) * 2016-09-13 2017-01-25 中国电子科技集团公司第三十二研究所 基于实时操作系统的分布式消息通信中间件实现软件系统
CN106909388A (zh) * 2017-02-27 2017-06-30 郑州云海信息技术有限公司 一种跨操作系统的平台架构系统
CN106933580A (zh) * 2017-03-02 2017-07-07 北京天恒长鹰科技股份有限公司 一种嵌入式软件架构系统
CN109522006A (zh) * 2018-11-16 2019-03-26 湖南国科微电子股份有限公司 嵌入式多媒体播放框架
CN110442372A (zh) * 2019-08-12 2019-11-12 安徽赛福贝特信息技术有限公司 一种用于软件开发的保存管理系统
CN111537791A (zh) * 2020-07-01 2020-08-14 杭州雷甸科技有限公司 一种基于嵌入式操作系统的智能电表

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101873326B (zh) * 2010-06-24 2013-03-06 北京安天电子设备有限公司 一种基于有序包的迭代式病毒检测方法

Cited By (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1295615C (zh) * 2004-12-20 2007-01-17 华中科技大学 具有时间约束的分布式软件可靠性评估系统
CN100375058C (zh) * 2004-12-24 2008-03-12 北京中星微电子有限公司 一种嵌入式产品软件调试方法
CN101542414B (zh) * 2005-04-05 2011-12-14 国际商业机器公司 自适应内容平台以及与该平台的应用程序集成
CN100454238C (zh) * 2005-04-28 2009-01-21 上海贝尔阿尔卡特股份有限公司 一种实现与设备对象无关的dohm软件接口
CN100389626C (zh) * 2005-06-02 2008-05-21 上海华为技术有限公司 防止系统中业务资源泄漏的方法
CN100495328C (zh) * 2005-08-08 2009-06-03 中国科学院研究生院 用于开发计算机系统的装置及其方法
CN100369011C (zh) * 2005-08-15 2008-02-13 英业达股份有限公司 嵌入式装置的检测系统及方法
US8732698B2 (en) 2005-09-29 2014-05-20 Intel Corporation Apparatus and method for expedited virtual machine (VM) launch in VM cluster environment
WO2007036072A1 (en) * 2005-09-29 2007-04-05 Intel Corporation Apparatus and method for expedited virtual machine (vm) launch in vm cluster environment
US9170835B2 (en) 2005-09-29 2015-10-27 Intel Corporation Apparatus and method for expedited virtual machine (VM) launch in VM cluster environment
CN100409188C (zh) * 2006-01-13 2008-08-06 深圳创维-Rgb电子有限公司 一种新的电视机嵌入式Linux系统开发方法
US7839848B2 (en) 2006-02-09 2010-11-23 Huawei Technologies Co., Ltd. Method, device and system for message transmission
CN100403739C (zh) * 2006-02-14 2008-07-16 华为技术有限公司 基于链表的进程间消息传递方法
CN101405712B (zh) * 2006-03-21 2011-11-16 英特尔公司 利用虚拟化技术来加速域特定运行时环境的框架
CN100555240C (zh) * 2007-01-16 2009-10-28 国际商业机器公司 用于诊断应用程序的方法和系统
CN101681280B (zh) * 2007-05-25 2012-12-19 微软公司 使用外部调试基础结构的进程内调试
CN101344860B (zh) * 2007-07-10 2011-06-22 米特尔网络公司 接合实时操作系统环境和本地主机操作系统的虚拟机环境
CN100465899C (zh) * 2007-07-25 2009-03-04 湖南大学 基于虚拟内核对象的Linux程序检查点用户级实现方法
CN101971146A (zh) * 2007-09-07 2011-02-09 甲骨文国际公司 改进作为管理程序来宾而运行的虚拟机中内存使用情况的系统和方法
CN101971146B (zh) * 2007-09-07 2013-11-27 甲骨文国际公司 改进作为管理程序来宾而运行的虚拟机中内存使用情况的系统和方法
CN101493781B (zh) * 2008-01-24 2012-02-15 中国长城计算机深圳股份有限公司 一种虚拟机系统及其启动方法
CN101727423B (zh) * 2008-10-17 2011-12-07 东北大学 可重配置fpga上可抢占硬件多任务系统及其实现方法
CN101819526B (zh) * 2009-09-18 2013-08-28 华为技术有限公司 调用底层软件的方法、装置和嵌入式系统
RU2523964C2 (ru) * 2010-01-25 2014-07-27 Тенсент Текнолоджи (Шэньчжэнь) Компани Лимитед Способ межпроцессного взаимодействия между разными приложениями в мобильном терминале и соответствующее устройство
WO2011088779A1 (zh) * 2010-01-25 2011-07-28 腾讯科技(深圳)有限公司 实现移动终端上不同应用程序的进程之间通信的装置和方法
WO2012010002A1 (zh) * 2010-07-21 2012-01-26 中兴通讯股份有限公司 一种物联网终端java应用的业务调试装置和方法
CN102004662A (zh) * 2010-12-07 2011-04-06 江南大学 嵌入式可裁剪式虚拟机
CN102063306A (zh) * 2011-01-06 2011-05-18 夏春秋 一种通过电子表单进行应用开发的技术实现方法
GB2506044B (en) * 2011-05-23 2020-04-22 Ibm Storage checkpointing in a mirrored virtual machine system
US9959174B2 (en) 2011-05-23 2018-05-01 International Business Machines Corporation Storage checkpointing in a mirrored virtual machine system
GB2506044A (en) * 2011-05-23 2014-03-19 Ibm Storage checkpointing in a mirrored virtual machine system
WO2012160463A1 (en) * 2011-05-23 2012-11-29 International Business Machines Corporation Storage checkpointing in a mirrored virtual machine system
US9983935B2 (en) 2011-05-23 2018-05-29 International Business Machines Corporation Storage checkpointing in a mirrored virtual machine system
CN102520957A (zh) * 2011-12-19 2012-06-27 厦门雅迅网络股份有限公司 一种嵌入式系统的软件分离设计的方法
CN103534681A (zh) * 2011-12-31 2014-01-22 华为技术有限公司 一种部署应用进程的方法、设备和系统
WO2013097237A1 (zh) * 2011-12-31 2013-07-04 华为技术有限公司 一种部署应用进程的方法、设备和系统
CN102779047A (zh) * 2012-07-09 2012-11-14 哈尔滨工程大学 一种嵌入式软件支撑平台
CN102779047B (zh) * 2012-07-09 2016-07-06 哈尔滨工程大学 一种嵌入式软件支撑平台
CN105051698B (zh) * 2013-03-28 2018-11-16 瑞典爱立信有限公司 用于基础设施即服务云中故障管理的方法和布置
CN105051698A (zh) * 2013-03-28 2015-11-11 瑞典爱立信有限公司 用于基础设施即服务云中故障管理的方法和布置
US10037237B2 (en) 2013-03-28 2018-07-31 Telefonaktiebolaget L M Ericsson (Publ) Method and arrangement for fault management in infrastructure as a service clouds
CN103384348B (zh) * 2013-05-29 2016-09-14 深圳市艾龙电子有限公司 一种ginga数字电视中间件在嵌入式数字电视平台上的实现方法
CN103384348A (zh) * 2013-05-29 2013-11-06 深圳市艾龙电子有限公司 一种ginga数字电视中间件在嵌入式数字电视平台上的实现方法
CN104407971A (zh) * 2014-11-18 2015-03-11 中国电子科技集团公司第十研究所 自动化测试嵌入式软件的方法
CN104407971B (zh) * 2014-11-18 2017-04-12 中国电子科技集团公司第十研究所 自动化测试嵌入式软件的方法
CN104657225B (zh) * 2015-01-13 2018-01-05 北京航空航天大学 基于OKL4的嵌入式虚拟化平台跨Cell数据传输系统
CN104657225A (zh) * 2015-01-13 2015-05-27 北京航空航天大学 基于OKL4的嵌入式虚拟化平台跨Cell数据传输系统
CN105607904A (zh) * 2015-12-18 2016-05-25 南京熊猫电子股份有限公司 基于Linux平台的通信软件的快速开发框架及使用方法
CN105607904B (zh) * 2015-12-18 2019-04-16 南京熊猫电子股份有限公司 基于Linux平台的通信软件的快速开发框架及其使用方法
CN106201896A (zh) * 2016-07-26 2016-12-07 华中科技大学 一种嵌入式环境下基于检查点的调试方法、系统及装置
CN106357761A (zh) * 2016-09-13 2017-01-25 中国电子科技集团公司第三十二研究所 基于实时操作系统的分布式消息通信中间件实现软件系统
CN106909388A (zh) * 2017-02-27 2017-06-30 郑州云海信息技术有限公司 一种跨操作系统的平台架构系统
CN106933580A (zh) * 2017-03-02 2017-07-07 北京天恒长鹰科技股份有限公司 一种嵌入式软件架构系统
CN109522006A (zh) * 2018-11-16 2019-03-26 湖南国科微电子股份有限公司 嵌入式多媒体播放框架
CN110442372A (zh) * 2019-08-12 2019-11-12 安徽赛福贝特信息技术有限公司 一种用于软件开发的保存管理系统
CN111537791A (zh) * 2020-07-01 2020-08-14 杭州雷甸科技有限公司 一种基于嵌入式操作系统的智能电表

Also Published As

Publication number Publication date
CN1280726C (zh) 2006-10-18

Similar Documents

Publication Publication Date Title
CN1280726C (zh) 一种用于嵌入式系统软件开发的虚拟机装置
CN101169733B (zh) 用于提供基于策略的操作系统服务的方法和系统
US5659701A (en) Apparatus and method for distributed program stack
JP2000132530A (ja) マルチプロセッサコンピュ―タシステム及びその動作方法
CN101859263A (zh) 一种支持在线迁移的虚拟机间快速通信方法
CN101901207A (zh) 异构共享存储多处理机系统的操作系统及其工作方法
CN109656742A (zh) 一种节点异常处理方法、装置及存储介质
CN101877002A (zh) 基于统一接口的内存数据库分布式访问方法及系统
CN112445623A (zh) 多集群管理方法、装置、电子设备及存储介质
US20020073409A1 (en) Telecommunications platform with processor cluster and method of operation thereof
TW200813738A (en) Process restart on a computer node
CN101056210B (zh) 一种网络集中管理平台上的事件处理系统和方法
Bell et al. The evolution of the DECsystem 10
CN1674528A (zh) 一种基于分级链表和动态xml技术的lcs网管方法
CN1152338C (zh) 一种并行处理分布式数据库的方法和装置
CN101754156A (zh) 局数据管理方法、装置及计费系统
CN1797385A (zh) 一种电力自动化系统通用管理平台系统及其实现方法与开发方法
CN114968264B (zh) 一种网络处理器交互系统、方法、电子设备及存储介质
Winterbottom et al. Topsy: an extensible unix multicomputer
CN1466050A (zh) 大规模异构机群的管理系统
EP0509946A2 (en) Apparatus and method for implementing a distributed program stack
CN113176928B (zh) 一种异构虚拟机的运行方法和装置
KR950011479B1 (ko) 분산 프로세서구조를 가진 전전자 교환기에서의 자료지향형 적재방법
JPH10308736A (ja) 分散型ネットワーク管理システム
CN114443225A (zh) 一种Openstack虚拟机对接CephFS文件系统的实现方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee

Owner name: BEIER AERKATE CO., LTD., SHANGHAI

Free format text: FORMER NAME: BELL CO.,LTD., SHANGHAI

Owner name: SHANGHAI ALCATEL-LUCENT CO., LTD.

Free format text: FORMER NAME: BEIER AERKATE CO., LTD., SHANGHAI

CP01 Change in the name or title of a patent holder

Address after: 201206 Pudong New Area Jinqiao Export Processing Zone, Nanjing Road, No. 388, Shanghai

Patentee after: ALCATEL-LUCENT SHANGHAI BELL Co.,Ltd.

Address before: 201206 Pudong New Area Jinqiao Export Processing Zone, Nanjing Road, No. 388, Shanghai

Patentee before: Shanghai Bell Alcatel Co.,Ltd.

Address after: 201206 Pudong New Area Jinqiao Export Processing Zone, Nanjing Road, No. 388, Shanghai

Patentee after: Shanghai Bell Alcatel Co.,Ltd.

Address before: 201206 Pudong New Area Jinqiao Export Processing Zone, Nanjing Road, No. 388, Shanghai

Patentee before: Shanghai Bell Co.,Ltd.

CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 201206 Pudong New Area Jinqiao Export Processing Zone, Nanjing Road, No. 388, Shanghai

Patentee after: NOKIA SHANGHAI BELL Co.,Ltd.

Address before: 201206 Pudong New Area Jinqiao Export Processing Zone, Nanjing Road, No. 388, Shanghai

Patentee before: ALCATEL-LUCENT SHANGHAI BELL Co.,Ltd.

CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20061018