一种实代码仿真的方法和装置的制作方法

文档序号:6339631阅读:205来源:国知局
专利名称:一种实代码仿真的方法和装置的制作方法
技术领域
本发明涉及仿真技术领域,特别涉及一种实代码仿真的方法和装置。
背景技术
“实代码”的仿真模式在算法和实现之间起到桥梁作用,采用实代码的仿真技术可以使从仿真到实现不需要进行二次编码,而是平滑过渡;即仿真时测试及验证通过的代码能够直接在硬件上运行;解决了传统仿真模式中,协议等单独层次仿真通过而却不能在实体硬件上实现的弊端,具有深远意义。TinyOS 节点仿真器(TinyOS mote simulator, T0SSIM)是对采用 Tiny 操作系统(Operating System, OS)的节点(Motes)进行比特(bit)级的一种仿真工具,该工具建立了 TinyOS的底层部分硬件的软件抽象,并增加仿真必须的事件模型和外部通信机制。 TOSSIM将TinyOS环境下的NesC (—种代码语言)代码直接编译为可在个人电脑(Personal Computer,PC)环境下运行的可执行文件,提供了不用将程序下载到实体节点上就可以对程序进行测试的一个平台。T0SSIM还提供了用于显示仿真情况的用户界面(TinyViz)。本申请文件中的节点均指软件意义上的需要测试验证等的对象,例如编写的协议、功能软件等, 对此本发明实施例的说明书不再一一说明。TOSSIM采用的是特定操作系统TinyOS,TinyOS系统中仿真的节点使用的是特定代码语言(NesC),因此该实代码仿真的方法不具一般性。

发明内容
本发明实施例要解决的技术问题是提供一种实代码仿真的方法和装置,实现较具有一般性的实代码仿真。一种实代码仿真的方法,包括接收节点发送的注册相关信息;将所述注册相关信息中携带的事件信息仿真为仿真事件,将仿真事件插入仿真事件队列;依据所述注册相关信息携带的注册信息,仿真模拟硬件对节点需要实现的功能进行注册;在所述模拟硬件上执行所述仿真事件队列中的仿真事件。一种实代码仿真的装置,包括信息接收单元,用于接收节点发送的注册相关信息;事件生成单元,用于将所述注册相关信息中携带的事件信息仿真为仿真事件,将仿真事件插入仿真事件队列;硬件模拟单元,用于依据所述注册相关信息携带的注册信息,模拟硬件对节点需要实现的功能进行注册;事件控制单元,用于在所述模拟硬件上执行所述仿真事件队列中的仿真事件。
上述技术方案具有如下有益效果通过节点注册、仿真得到仿真事件和模拟硬件, 在模拟硬件上执行仿真事件实现实代码仿真,该架构下的仿真方法可以应用到通用的仿真平台,实现较具有一般性的实代码仿真。


为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例方法流程示意图;图2为本发明实施例系统结构示意图;图3为本发明实施例装置结构示意图;图4为本发明实施例装置结构示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例提供了一种实代码仿真的方法,如图1所示,可同时参考图2,包括101 接收节点发送的注册相关信息;可选地,上述注册相关信息为中断信号量信息;上述接收节点发送的注册相关信息包括接收节点通过信号量同步方式发送的中断信号量信息。中断信号量信息可以包括中断类型、中断类型的中断参数;上述中断类型包括定时中断,射频中断,时钟中断的至少一项。可以理解的中断类型很多上述三种中断类型不是穷举,不应理解为对本发明实施例的限定。在本步骤之前,可以用开源基于C++的面向对象离散仿真软件(OMNeT++)仿真内核仿真节点的硬件的相关组件,其中包括处理中断的组件和系统启动入口(MAIN)组件等。 其维护的仿真事件队列用来模拟中断产生。此层的功能在于模拟节点硬件。如图2所示, 节点201的软件资源包括OS层、硬件抽象层(Hardware Access Layer,HAL)、协议栈、应用 (APPLICATION)等底层支撑软件。上述节点201包含封装为动态链接库的等底层支撑软件, 并以多线程方式加载到基于C++的面向对象离散仿真软件。上述底层支撑软件可以全部可以用C语言代码编写;然后可以将其封装为DLL,以多线程的方式加载到OMNeT++中。需要说明的是,图2中显示有节点1 3实际上节点的个数是根据实际的需求来确定的,可能有几百个也可能只有几个,图2的节点数不应理解为对本发明实施例的限定。本步骤中,系统开始运行时,由节点201的软件部分采用信号量同步方式通知到仿真器层202,以注册中断类型(定时中断,射频中断,时钟中断),中断参数(定时中断的定时长度,射频中断的数据包、目的节点信息,时钟中断的频率)等详细的事件信息。仿真器层可以与PC机一并处于实体硬件203的下层。
102:将上述注册相关信息中携带的事件信息仿真为仿真事件,将仿真事件插入仿真事件队列;上述102中,上述将注册相关信息中携带的事件信息仿真为仿真事件包括将中断类型和中断类型的中断参数对应的中断事件仿真为仿真事件。103:依据上述注册相关信息携带的注册信息,仿真模拟硬件对节点需要实现的功能进行注册;上述102和103可以通过基于C++的面向对象离散仿真软件,将事件信息仿真为仿真事件,仿真模拟硬件对节点需要实现的功能进行注册。本步骤具体可以是=OMNeT++仿真器接收到中断信号量信息后,OMNeT++将中断模拟成仿真事件插入队列中,然后根据节点201注册的中断详细信息做出相应处理,以模拟硬件的方式实现软件部分注册需要实现的功能。104 在上述模拟硬件上执行上述仿真事件队列中的仿真事件。在104中执行仿真事件过程中,通过HAL层、OS层与仿真器层202 (OMNeT++仿真得到的模拟硬件层)进行信息和操作等的交互,实现多个节点201系统交互(节点与节点间的消息传递)的源代码调试。可以通过OMNeT++可视化界面监控消息的传递状态。OMNeT++ 在仿真器层202可模拟实现节点201间信道特征,探索模拟各种复杂物理环境,从而得到仿真的结果用以分析协议的性能。由此验证通过的协议代码可直接在硬件上运行。在OMNeT++进行具体功能行为的实现譬如定时中断由OMNeT++根据注册的参数信息,通过间隔设定时间发送消息(OMNeT++提供接口)来实现;射频中断由OMNeT++根据注册的参数信息,将数据包经过模拟信道传输后,发送到指定节点201来实现;时钟中断根据注册的时钟中断频率,按指定的频率发送消息来实现。模拟行为的完成结果就是OMNeT++经过设定时间后,将接收到完成消息的通知。 OMNeT++根据消息的类型,判断是定时中断还是射频中断完成了,判定后将会以信号量同步的方式通知反馈到节点201软件部分注册的中断已经完成!节点201软件部分再根据此消息,调用中断处理子程序,节点201的中断处理子程序又可以调用命令或者触发其他事件,再向OMNeT++进行注册,重复上述101至104直到仿真结束。举例说明处理定时中断信息时,间隔特定时间后OMNeT++将收到自发的消息,然后OMNeT++判别此消息为定时中断完成消息,将会同样以信号量同步的方式,通知到节点 201的软件部分注册的定时中断已经完成!节点201的软件部分再根据此消息,调用定时中断的中断处理子程序,节点201的中断处理子程序又可以调用命令或者触发其他事件, 再向OMNeT++进行注册,重复上述101至104直到仿真结束。举例说明模拟射频中断的行为结果也是OMNeT++经过一定传输时间后,接收到传输完成消息通知。处理射频中断时,根据节点201的软件部分注册的相关信息如数据包的内容,目的节点信息等。OMNeT++经过数据包在信道中的传输时间后,接收到数据包发送完成的消息,OMNeT++判别此消息为射频中断完成(数据包发送完成)消息,将会同样以信号量同步的方式,通知到节点201的软件部分注册的射频中断已经完成,数据包发送完毕!节点201的软件部分再根据此消息,调用射频中断的中断处理子程序,节点201的中断处理子程序又可以调用命令或者触发其他事件,再向OMNeT++进行注册,重复上述101至 104直到仿真结束。
进一步地,在执行上述仿真事件队列中的仿真事件过程中还可以在模拟硬件中模拟物理环境和/或信道特征;执行上述仿真事件队列中的仿真事件之后还可以显示模拟硬件执行仿真事件的结果。上述实施例,通过节点注册、仿真得到仿真事件和模拟硬件,在模拟硬件上执行仿真事件实现实代码仿真,该架构下的仿真方法可以应用到通用的仿真平台,实现较具有一般性的实代码仿真。上述实施例,可以针对目前普遍采用的嵌入式操作系统和C语言开发调试,提供了一种更加通用的网络仿真平台框架。在体验比特级别仿真的同时,将抽象的消息数据包以可视化界面显示,实现算法与实现的平滑过渡。验证通过的软件代码可以直接在硬件上运行。本发明实施例的实代码仿真技术可以应用在测试需求下的在仿真技术的各个领域, 尤其可以应用在无线传感网中用于传感网协议栈代码的测试;实现无线传感网中传感网协议栈代码的测试,使验证通过的软件代码可以直接在硬件上运行,提高代码编写效率。一种实代码仿真的装置,如图3所示,包括信息接收单元301,用于接收节点发送的注册相关信息;可选地,上述注册相关信息为中断信号量信息;上述信息接收单元301,用于接收节点通过信号量同步方式发送的中断信号量信息。事件生成单元302,用于将上述注册相关信息中携带的事件信息仿真为仿真事件, 将仿真事件插入仿真事件队列;硬件模拟单元303,用于依据上述注册相关信息携带的注册信息,模拟硬件对节点需要实现的功能进行注册;事件控制单元304,用于在上述模拟硬件上执行上述仿真事件队列中的仿真事件。更具体地,上述事件生成单元302,用于通过基于C++的面向对象离散仿真软件, 将事件信息仿真为仿真事件;硬件模拟单元303,用于通过基于C++的面向对象离散仿真软件,仿真模拟硬件对节点需要实现的功能进行注册。如图4所示,上述装置还包括特征模拟单元401,用于在执行上述仿真事件队列中的仿真事件过程中,在模拟硬件中模拟物理环境和/或信道特征; 显示单元402,用于执行上述仿真事件队列中的仿真事件之后,显示模拟硬件执行仿真事件的结果。上述实施例,通过节点注册、仿真得到仿真事件和模拟硬件,在模拟硬件上执行仿真事件实现实代码仿真,该架构下的仿真方法可以应用到通用的仿真平台,实现较具有一般性的实代码仿真。上述实施例,可以针对目前普遍采用的嵌入式操作系统和C语言开发调试,提供了一种更加通用的网络仿真平台框架。在体验比特级别仿真的同时,将抽象的消息数据包以可视化界面显示,实现算法与实现的平滑过渡。验证通过的软件代码可以直接在硬件上运行。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,上述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上对本发明实施例所提供的一种实代码仿真的方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种实代码仿真的方法,其特征在于,包括 接收节点发送的注册相关信息;将所述注册相关信息中携带的事件信息仿真为仿真事件,将仿真事件插入仿真事件队列;依据所述注册相关信息携带的注册信息,仿真模拟硬件对节点需要实现的功能进行注ππ册;在所述模拟硬件上执行所述仿真事件队列中的仿真事件。
2.根据权利要求1所述方法,其特征在于,所述注册相关信息为中断信号量信息;所述接收节点发送的注册相关信息包括接收节点通过信号量同步方式发送的中断信号量信息。
3.根据权利要求2所述方法,其特征在于,所述中断信号量信息包括中断类型、中断类型的中断参数;所述将注册相关信息中携带的事件信息仿真为仿真事件包括 将中断类型和中断类型的中断参数对应的中断事件仿真为仿真事件。
4.根据权利要求1至3任意一项所述方法,其特征在于,在执行所述仿真事件队列中的仿真事件过程中还包括在模拟硬件中模拟物理环境和/或信道特征;执行所述仿真事件队列中的仿真事件之后还包括显示模拟硬件执行仿真事件的结果。
5.根据权利要求1至3任意一项所述方法,其特征在于,通过基于C++的面向对象离散仿真软件,将事件信息仿真为仿真事件,仿真模拟硬件对节点需要实现的功能进行注册。
6.根据权利要求3所述方法,其特征在于,所述节点包含封装为动态链接库的等底层支撑软件,并以多线程方式加载到基于C++的面向对象离散仿真软件。
7.一种实代码仿真的装置,其特征在于,包括信息接收单元,用于接收节点发送的注册相关信息;事件生成单元,用于将所述注册相关信息中携带的事件信息仿真为仿真事件,将仿真事件插入仿真事件队列;硬件模拟单元,用于依据所述注册相关信息携带的注册信息,模拟硬件对节点需要实现的功能进行注册;事件控制单元,用于在所述模拟硬件上执行所述仿真事件队列中的仿真事件。
8.根据权利要求7所述装置,其特征在于,所述注册相关信息为中断信号量信息; 所述信息接收单元,用于接收节点通过信号量同步方式发送的中断信号量信息。
9.根据权利要求7所述装置,其特征在于,还包括特征模拟单元,用于在执行所述仿真事件队列中的仿真事件过程中,在模拟硬件中模拟物理环境和/或信道特征;显示单元,用于执行所述仿真事件队列中的仿真事件之后,显示模拟硬件执行仿真事件的结果。
10.根据权利要求7至9任意一项所述装置,其特征在于,所述事件生成单元,用于通过基于C++的面向对象离散仿真软件,将事件信息仿真为仿真事件;硬件模拟单元,用于通过基于C++的面向对象离散仿真软件,仿真模拟硬件对节点需要实现的功能进行注册。
全文摘要
本发明实施例公开了一种实代码仿真的方法和装置,其中方法的实现包括接收节点发送的注册相关信息;将所述注册相关信息中携带的事件信息仿真为仿真事件,将仿真事件插入仿真事件队列;依据所述注册相关信息携带的注册信息,仿真模拟硬件对节点需要实现的功能进行注册;在所述模拟硬件上执行所述仿真事件队列中的仿真事件。通过节点注册、仿真得到仿真事件和模拟硬件,在模拟硬件上执行仿真事件实现实代码仿真,该架构下的仿真方法可以应用到通用的仿真平台,实现较具有一般性的实代码仿真。
文档编号G06F11/26GK102541708SQ20101060175
公开日2012年7月4日 申请日期2010年12月22日 优先权日2010年12月22日
发明者单卫龙, 马奎 申请人:感知物联网集团(无锡)有限公司, 无锡物联网产业研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1