跨平台通信中间件可视化建模方法
文献发布时间:2023-06-19 10:08:35
技术领域
本发明属于数字电路设计技术领域,具体涉及一种跨平台通信中间件可视化建模方法。
背景技术
为实现信息处理平台系统快速适应新环境、动态重构新功能,未来的信息处理电子装备势必从单平台向分布式多平台统一协同处理发展;从相对封闭、单一功能向开放式、多任务多功能一体化方向发展;从预定义固定信息流处理向智能化、软件化方向发展。基于此,就必须解决异构分布式系统间的互连、互通和互操作问题。
通信中间件是目前一项实现异构系统间透明访问的关键技术,它屏蔽了分布式系统中各个组成部分之间的软硬件环境的差异,提供统一标准的通信接口,将所有的异构平台互联,实现了应用组件与组件之间、应用与硬件系统之间的松耦合。目前通信中间件已成为电子装备开发式架构的关键组成部分。
计算机技术的快速发展和应用,带动了计算平台的软硬件环境的变化升级,因此通信中间件必须适应这种变化,具备快速移植、升级和维护的特点,以保证计算平台对应用系统的透明性。而计算平台(处理器架构、操作系统、通信方式)等的变化会为导致已实现的通信中间件无法运行或运行错误,因此必须针对具体变化对通信中间件进行修改、扩展和完善。常规做法是一旦计算平台升级换代就必须对中间件中涉及到平台变化的代码进行人工修改,往往由于改动的地方较多容易漏改、错改从而导致维护升级周期长,普适性差。
发明内容
本发明目的是:针对现有技术的不足,提供一种跨平台通信中间件可视化建模方法,可快速准确地对通信中间件进行升级、扩展和移植,普适性好、开发周期短、效率高、可维护性好。
具体地说,本发明是采用以下技术方案实现的。
本发明提供一种跨平台通信中间件可视化建模方法,将所述跨平台通信中间件移植到异构分布式系统平台,通过图形化方式生成跨平台通信用模板,实现对平台描述头文件及相应源文件的修改,所述跨平台通信用模板包括处理器架构模板、操作系统模板和通信方式模板,包括以下步骤:
在处理器架构模板中,根据所述异构分布式系统平台的处理器架构,确定在所述处理器的地址和数据访问时的数据和地址对齐方式,以及处理器通信时的端序;
在操作系统模板中,对跨平台通信中间件实现过程中涉及到的异构分布式系统平台操作系统调用接口进行定义,包括接口的个数、接口形式、接口类型、接口中参数个数、参数的名称和参数类型;
在通信方式模板中,定义跨平台通信中间件与异构分布式系统平台通信时使用的通信接口接口,包括常规通信接口模板、辅助通信配置接口模板,在常规通信接口模板、辅助通信配置接口模板中定义接口名称、接口类型、接口中参数个数、参数名称、参数类型、参数的设置方式。
进一步的,所述跨平台通信中间件可视化建模方法还包括:当不同端序处理器之间进行数据通信时,进行端序的转换。
进一步的,在操作系统模板中,确定被跨平台通信中间件调用的接口的个数,根据调用接口的个数为生成相应的调用接口定义模板;在所述调用接口定义模板中,首先描述声明该调用接口的头文件名,接口名称,接着定义调用接口中的参数个数,根据参数个数分别产生相应的参数模板,定义参数名称及类型,最后定义调用接口的返回类型,并对该调用接口的功能进行声明。
进一步的,所述调用接口包括运行单元管理接口、同步接口、时间戳接口、网络通信接口;所述运行单元管理接口包括任务的初始化、创建、销毁、悬挂、延迟;所述同步接口包括同步通信信号量管理、同步通信管道设置。
进一步的,在所述常规通信接口模板中,定义初始化接口、发送接口和接收接口,包括接口名称、接口类型、参数个数、参数名称、参数类型、参数的设置方式;
在所述辅助通信配置接口模板中,定义接收窗设置、发送窗设置、DMA链表,包括接口名称、接口类型、参数个数、参数名称、参数类型、参数的设置方式,还包括接口的调用位置;
所述参数的设置方式包括应用设置、驱动设置或本地设置,设置为应用设置时,当代码生成时进行参数传递,设置为驱动设置时参数通过驱动接口调用获得,设置为本地设置时,参数通过系统接口调用获得。
进一步的,所述跨平台通信中间件可视化建模方法还包括:常规通信接口和辅助配置接口中的参数为需定义的类型时,创建相应数据结构模板,对该数据结构进行描述;所述需定义的类型包括数据结构类型、类、模板类型、枚举类型;如果参数类型为类,在所述数据结构模板中包括与类相关的描述,如方法个数、方法接口、方法参数,属性和方法是共有还是私有的;如果参数类型为模板或枚举类型,在所述数据结构模板中根据类型特性进行描述。
本发明的跨平台通信中间件可视化建模方法的有益效果如下:
由于采用了可视化基于模型的跨平台设计方法,使得通信中间件的实现不依赖于具体平台,只需定义和修改平台模板,即可增加对不同计算平台的支持,该方法适用于各类标准通信中间件如Corba、DDS、MPI等,具有较好的普适性。当平台发生变更时,无须人工修改代码,减少了设计差错,缩短了设计周期,因此可维护性得到了较大的提高。
附图说明
图1是本实施例的跨平台通信中间件可视化建模方法原理框图。
图2是本实施例的跨平台通信中间件产生流程图。
图3是本实施例的跨平台通信中间件可视化建模流程图。
图4是本实施例的处理器架构模板示意图。
图5是本实施例的操作系统调用接口模板示意图。
图6是本实施例的通信方式模板示意图。
图7是本实施例的通信方式配置接口模板示意图。
图8是本实施例的通信方式数据结构定义模板示意图。
图9是本实施例的处理器架构模板实例示意图。
图10是本实施例的操作系统调用模板实例示意图。
图11是本实施例的通信方式模板实例示意图。
图12是本实施例的通信方式配置接口模板实例示意图。
图13是本实施例的通信方式数据结构模板实例示意图。
具体实施方式
下面结合实施例并参照附图对本发明作进一步详细描述。
本发明的一个实施例,为一种跨平台通信中间件可视化建模方法,用于将已有的基于LINUX操作系统下的通信中间件实现(下文简称为原实现)移植到其他操作系统中。
本发明的跨平台通信中间件可视化建模方法的前提是通信中间件采用层次化的体系架构和模块化设计,独立为一层,便于进行平台特性图形化建模。因目前通信中间件在LINUX下的实现最为完善,本实施例以基于LINUX操作系统下的实现(即实现)为例,说明跨平台通信中间件可视化建模方法的具体实现过程。本实施例的跨平台通信中间件可视化建模方法,将与平台特性相关部分在平台描述头文件和有限的功能模块中实现,以保证基于各模块代码自动生成的准确性和完善性;涉及到的更改文件包括平台描述头文件及相应源文件,其中平台描述头文件对平台进行相关定义,如PlatForm.h,在该文件中对操作系统、通信协议和处理器类别分别进行宏定义,并基于这些宏定义,包含不同的操作系统调用头文件、设备驱动头文件和通信相关的头文件以及宏定义等,相应的,包含PlatForm.h的所有C/C++源文件也进行跨平台修改。由于目前在信息系统中广泛应用的通信中间件Corba、MPI和DDS都采用了层次化的体系架构,在此不详细阐述。
本发明的跨平台通信中间件可视化建模方法的实现原理如图1所示,与通信中间件相关的平台特性分别为处理器架构特性、操作系统特性和通信方式特性。如图2所示,本发明的跨平台通信中间件生成方法,包括如下步骤:
一、跨平台通信中间件可视化建模:针对通信中间件所涉及到的平台特性(处理器架构、操作系统调用、通信方式及行为参数)进行图形化建模;通过图形化方式生成跨平台通信用模板,实现对平台描述头文件及相应源文件的修改。
如图3所示,跨平台通信中间件可视化建模方法的步骤包括:
(1)处理器架构模板生成:根据异构分布式系统平台的处理器架构,确定在所述处理器的地址和数据访问时的数据和地址对齐方式,以及处理器通信时的端序。
如图4所示,处理器架构模板需要对端序和数据存取的地址对齐方式进行描述,其中端序表示存储数据的方法,分别有两种:
小端序,将低位字节存储在内存偏移地址较低的地址中,将高位字节存储在内存偏移地址较高的地址中;
大端序,将高位字节存储在内存偏移地址较低的地址中,将低位字节存储在内存偏移地址较高的地址中。
当不同端序处理器之间进行数据通信时,需进行端序的转换。不同的处理器对数据访问时的地址对齐方式亦存在差异,错误的对齐方式将导致程序例外。
(2)操作系统模板生成:对跨平台通信中间件实现过程中涉及到的异构分布式系统平台操作系统调用接口进行定义,确保通信中间件支持不同的操作系统。
如图5所示,操作系统调用接口模板包括以下部分:
首先定义该操作系统的宏定义,如Windows操作系统则用WINDOWS,vxWorks操作系统用vxWorks进行宏定义,以便在进行代码自动生成时,下述各操作系统接口调用前用宏定义进行编译识别。
接着须确定被调用接口的个数,根据该参数先后产生对应数量的调用接口定义模板。在产生的调用接口定义模板中,首先描述声明该接口的完整准确的头文件名,接口名称,接着定义接口中的参数个数,根据参数个数分别产生相应的参数模板,描述参数名称及类型,最后描述接口返回类型,并对该接口功能进行声明。通信中间件中与操作系统有关的调用接口如运行单元管理接口(任务初始化、创建、销毁、悬挂、延迟等)、同步接口(信号量、管道等)、时间戳接口、网络通信接口等。
(3)通信方式模板生成:定义跨平台通信中间件与异构分布式系统平台通信时使用的通信接口。
如图6所示,通信方式模板包括以下内容:
首先定义通信方式的宏定义,如rapidIO用_SRIO,PCIe用_PCIE等进行宏定义,以便在进行代码自动生成时,下述通信各接口进行调用前用宏定义进行编译识别。
接着进行常规通信接口描述,包括初始化接口、发送接口和接收接口,主要描述内容包括接口名称、接口类型、参数个数。根据参数个数依次对各个参数进行描述,主要描述参数名称、参数类型、参数的设置方式(应用设置、驱动设置还是本地设置),如是应用设置,则代码生成时,直接参数传递,如驱动设置,则说明该参数是由通过驱动接口调用获得的,如为本地设置,则该参数为通过系统接口调用获得。
由于不同的通信协议、通信控制器和实现方式下除了常规通信接口外,为实现高性能、多功能的通信还配有辅助配置接口,如接收窗设置、发送窗设置、DMA(Direct MemoryAccess,直接存储器访问)链表设置等等。还需对常规通信接口以外的辅助配置接口进行定义。如图7所示,根据配置接口数目依次通过通信配置接口模板,对配置接口进行定义,定义的内容包括配置接口名称、类型、参数个数及各参数的名称、类型和设置方式(具体说明同通信方式模板)。由于配置接口与特定的通信方式相关,该模板比较特别的地方是必须描述配置接口的调用位置,以及在代码中是在哪个接口中被调用,在哪个接口后,哪个接口前被调用,这样代码自动生成时不会因为配置时机的错误而影响最终通信中间件的运行。
如果常规通信接口和各辅助配置接口中的参数为需定义的类型即结构类型或类、模板类型、枚举类型等,还需创建数据结构模板,对该数据结构进行描述。类型为数据结构的参数mport_handle的数据结构定义模板如图8所示。如果参数类型为类,则在模板中还需增加与类相关的描述,如方法个数、方法接口、方法参数,属性和方法是共有还是私有的等。如果为模板(template)或枚举(enum)等其它类型,则模板需要根据具体的类型特性进行抽象描述。通常来说,由于某些编译器尤其是嵌入式实时操作系统下,对模板类型的支持比较弱,且模板的执行效率不高,因此不建议在中间件涉及到的通信操作接口中用模板类型。
可以理解,处理器架构模板、操作系统调用接口模板和通信方式模板生成的顺序不限于上述顺序,可根据需要进行变更,只需要根据不同的特性分别建立相应的图形化模板,将相关属性进行可视化描述即可。
二、代码生成:根据上述与平台具体特性相关的模型,自动生成对应的C/C++代码,实现通信中间件的跨平台快速设计。
上述模板创建完成后,经确认,即会根据处理器架构、操作系统和通信方式宏定义在通信中间件的相应位置自动生成代码。其中根据处理器架构和操作系统模板生成的代码完全不需要人工干预;根据通信方式模板生成的代码为框架代码,代码生成后还需在各接口框架中手动编写具体的逻辑。
三、代码生成后,可在关键路径如接收发送前后、协议处理前后、同步/异步处理前后等关键点加装时间戳,通信中间件运行时周期性采集关键点时间戳,以树状图或波形图的形式显示出来,便于设计人员进行性能分析,找到瓶颈点进行性能优化。
在另一个实施例中,上述跨平台通信中间件可视化建模方法在基于国产化高性能DSP芯片的华睿2号处理平台上的DDS设计中得到了实现和验证。该平台处理器采用华睿2号,操作系统为国产化嵌入式实时操作系统Reworks,主通信方式为高速串行通信RapidIO。下面以该平台为例进行具体实施方式描述。
如图9所示,为华睿2号处理器的模板,处理器宏定义为HR2,数据存储组织方式为小端序(LITTLE ENDIAN),地址数据对齐方式为32位。
如图10所示,为Reworks操作系统任务创建模板,操作系统模板定义为Reworks,DDS实现中涉及到的系统调用接口分别为任务管理(创建taskSpawn、销毁taskDestroy、亲和力设置taskAffinity、延迟taskDelay等)、同步通信信号量管理(semBCreate、semGive、semTake等)、时钟管理接口等。由于涉及接口较多,受篇幅所限,本实例中不一一列举,只以任务创建接口调用模板为例进行说明。在Reworks操作系统中对应LINUX下任务创建调用接口pthread_create2的接口形式为pthread_create2,类型为整型int,接口中参数由7个,模板中分别对这七个参数的名称和类型进行了定义,由于有些参数是由中间件内部使用的,因此直接写值,其它参数为各操作系统下共用,可以直接传递。模板创建完成,经确认则通过扫描源代码,搜索所有在操作系统宏定义LINUX后的任务创建函数,在该函数处理结束之后,增加Reworks的宏定义和任务创建函数。
如图11所示,为RapidIO通信方式的创建模板,通信方式宏定义为SRIO,该通信方式除必须引用的头文件外,还须包含头文件HR2Api.h和HRNet.h,新建头文件为HRSrio.h,用来声明模板中创建的数据结构,该通信方式在DDS的实现主体文件名为HRSrio.cpp。通常通信方式基本接口函数有三个,即初始化、数据发送和数据接收。因此在模板中对这三个接口进行定义,分别描述它们的接口名称、返回类型、所包含参数个数,根据参数个数模板产生对应的参数描述,包括参数名称、参数类型和参数设置方式。
其中,初始化接口形式为int HRSrioInit(RIOCtrlCfgSeq&ctrlCfg),接口返回类型为整型,接口名称为HRSrioInit,参数1个,为变参,名称为ctrlCfg,类型为RIOCtrlCfg,RIOCtrlCfg为自定义结构,在HRSio.h中定义。
发送接口形式为unsigned int HRRioSend(HRNetBuf%uffers,size_tbufferCount,HRNetSocksAddr*addr,HR_UINT32 option),接口返回类型为整型,接口名称为HRRioSend,接口参数个数4个,分别为HRNetBuf指针类型的buffer,HRNetbuf数据结构在HRNet.h中定义,类型为size_t的bufferCount,HRNetSocksAddr指针类型的addr和unsigned int类型的option,HRNetSocksAddr数据结构在HRNet.h中定义,这四个参数都是由应用来定义并通过上层接口传递给该接口的。
接收接口形式为void HRDbInfoFunc(RapidIO_Recv param),接口名称为HRDbInfoFunc,返回类型为void,参数一个,数据结构RapidIO_Recv由底层驱动定义,本地声明,由驱动返回给中间件。
除初始化、发送和接收接口外,根据RapidIO通信特点,还需额外增加6个接口,1个数据结构的定义。配置接口分别为int HRRioInitControllerConfig(
HRRioControllerConfig*config,unsigned int ctrlId,RapidIOControllerConfig*qos)(初始化RapidIO控制器参数)、intHRRioClearControllerConfig
(HRRioControllerConfig*config)(清除RapidIO控制器参数)、unsigned intHRRioRecvThreadStart(unsigned int recvThreadCoreAffinityMask)(绑核启动接收任务)、unsigned int HRRioGetDevId()(获取本地SRIO节点号)、unsigned intHRRioGetRecvWnd(HR_UINT32 hostId,HR_UINT32 appId,HR_INT32 remoteDevId,HR_INT32remoteController,HRRioRecvWndInfo*rioInfo)(根据Qos配置和发现协议获取接收窗口信息)、void HRSet1848Route(u16 rioOID,u16 riolID)(设置本板路由,单板多节点工作时需要)。
本实施方案中不对所有配置接口都进行列举,只以其中较为获取接收窗口信息接口作为配置模板实例,如图12所示,该接口形式为unsigned int HRRioGetRecvWnd(unsigned int hostId,unsigned int appId,unsigned intremoteDevId,unsigned intremoteController,HRRioRecvWndInfo*rioInfo),返回类型为unsigned int,名称为HRRioGetRecvWnd,5个参数,分别为unsigned int hostId,unsigned int appId,unsignedint remoteDevId,unsigned int remoteController以及HRRioRecvWndInfo指针类型的rioInfo,配置接口模板中还需说明本配置接口是在HRSedpAssociationParticipant接口中调用,具体位置应该在DiscoveredWriterDataDestroySample接口调用后,DataWriterWrite接口调用前被调用。该接口需要定义一个数据结构,数据结构为HRRIORecvWndInfo,以该数据结构为例说明数据结构模板如图13所示,该数据结构中一共有8个属性,类型均为整型。该数据结构中不含有未定义的数据类型,因此不需要再进行数据类型定义。
由于新增通信方式涉及中间件代码增加部分较多,模板就三个基本接口可以在原实现的对应位置中进行代码增加,配置接口以及与驱动交互的通信方式屏蔽模块必须重新生成,该模板只能产生框架代码,各接口的具体实现还需手动添加,由于这部分代码较为集中,设计模块较少,因此设计工作量也不大。
采用本发明的跨平台通信中间件可视化建模方法对跨平台通信中间件进行可视化建模,能够自动生成跨平台通信中间件的代码,使得通信中间件的实现不依赖于具体平台,只需定义和修改平台模板,即可增加对不同计算平台的支持,该方法适用于各类标准通信中间件如Corba、DDS、MPI等,具有较好的普适性。当平台发生变更时,无须人工修改代码,减少了设计差错,缩短了设计周期,因此可维护性得到了较大的提高。
在一些实施例中,上述技术的某些方面可以由执行软件的处理系统的一个或多个处理器来实现。该软件包括存储或以其他方式有形实施在非暂时性计算机可读存储介质上的一个或多个可执行指令集合。软件可以包括指令和某些数据,这些指令和某些数据在由一个或多个处理器执行时操纵一个或多个处理器以执行上述技术的一个或多个方面。非暂时性计算机可读存储介质可以包括例如磁或光盘存储设备,诸如闪存、高速缓存、随机存取存储器(RAM)等的固态存储设备或其他非易失性存储器设备。存储在非临时性计算机可读存储介质上的可执行指令可以是源代码、汇编语言代码、目标代码或被一个或多个处理器解释或以其他方式执行的其他指令格式。
计算机可读存储介质可以包括在使用期间可由计算机系统访问以向计算机系统提供指令和/或数据的任何存储介质或存储介质的组合。这样的存储介质可以包括但不限于光学介质(例如,光盘(CD)、数字多功能光盘(DVD)、蓝光光盘)、磁介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,随机存取存储器(RAM)或高速缓存)、非易失性存储器(例如,只读存储器(ROM)或闪存)或基于微机电系统(MEMS)的存储介质。计算机可读存储介质可以嵌入计算系统(例如,系统RAM或ROM)中,固定地附接到计算系统(例如,磁性硬盘驱动器),可移除地附接到计算系统(例如,光盘或通用基于串行总线(USB)的闪存),或者经由有线或无线网络(例如,网络可访问存储(NAS))耦合到计算机系统。
请注意,并非上述一般性描述中的所有活动或要素都是必需的,特定活动或设备的一部分可能不是必需的,并且除了描述的那些之外可以执行一个或多个进一步的活动或包括的要素。更进一步,活动列出的顺序不必是执行它们的顺序。而且,已经参考具体实施例描述了这些概念。然而,本领域的普通技术人员认识到,在不脱离如下权利要求书中阐述的本公开的范围的情况下,可以进行各种修改和改变。因此,说明书和附图被认为是说明性的而不是限制性的,并且所有这样的修改被包括在本公开的范围内。
上面已经关于具体实施例描述了益处、其他优点和问题的解决方案。然而,可能导致任何益处、优点或解决方案发生或变得更明显的益处、优点、问题的解决方案以及任何特征都不应被解释为任何或其他方面的关键、必需或任何或所有权利要求的基本特征。此外,上面公开的特定实施例仅仅是说明性的,因为所公开的主题可以以受益于这里的教导的本领域技术人员显而易见的不同但等同的方式进行修改和实施。除了在下面的权利要求书中描述的以外,没有意图限制在此示出的构造或设计的细节。因此明显的是,上面公开的特定实施例可以被改变或修改,并且所有这样的变化被认为在所公开的主题的范围内。因此,本文寻求的保护如下面的权利要求中所述。
- 跨平台通信中间件可视化建模方法
- 跨平台数据处理方法、系统和跨平台数据共享系统