通用远程通信调用架构及方法与流程

文档序号:28266828发布日期:2021-12-31 18:42阅读:320来源:国知局
通用远程通信调用架构及方法与流程

1.本发明涉及通信技术领域,具体地涉及一种通用远程通信调用架构及方法。


背景技术:

2.现有的远程调用实现方案中,核间通信远程调用代码对底层物理通信链路、以及rtos(real time operation system,实时操作系统)的多样性存在较强的依赖性,如底层通信是cmux(connection multiplexing,连接(串口)多路复用),则会调用cmux的api(application programming interface,应用程序接口)函数;如底层通信是uart(universal asynchronous receiver transmitter,通用异步收发传输器),则会调用uart的api函数;再比如,rtos是rthread时,会调用rtos的api函数等等。由于这些接口存在差异,因此在编写核间通信流程的时候,都需要编写与应用环境相适应的软件代码,这种依赖关系不仅使得不同应用环境下的代码不能通用、维护性较差,而且对代码的移植性、可靠性等都会带来冲击。


技术实现要素:

3.本发明实施例提供一种通用远程通信调用架构及方法,以降低远程调用的通信流程代码对物理通信链路和rtos的依赖性,使其能够快速适应各种不同产品形态。
4.为此,本发明实施例提供如下技术方案:
5.本发明实施例提供一种通用远程通信调用架构,所述架构包括:rpc内核、ipc接口映射模块、以及操作系统封装模块;
6.所述操作系统封装模块,用于将不同类型的操作系统接口封装为统一接口,以向所述rpc内核提供rtos标准接口;
7.所述ipc接口映射模块,用于将ipc对象封装为模块化结构,并建立rpc内核与所述ipc对象的对应关系;
8.所述rpc内核,用于根据所述ipc接口映射模块建立的rpc内核与ipc对象的对应关系及所述操作系统封装模块提供的rtos标准接口,实现不同操作系统间的通信。
9.可选地,所述ipc接口映射模块通过指针建立rpc内核与ipc对象的对应关系。
10.可选地,所述ipc对象包括以下任意一种:cmux、socket、sipc、uart、usb、spi。
11.可选地,所述操作系统包括以下任意一种:mocor、rt

thread、win32。
12.可选地,所述rpc内核包括以下任意一种或多种方法:打开窗口、读、写、输入输出控制、释放。
13.本发明实施例还提供一种通用远程通信调用方法,所述方法包括:
14.将不同类型的操作系统接口封装为统一接口,以向所述rpc内核提供rtos标准接口;
15.将所述ipc对象封装为模块化结构,并建立rpc内核与ipc对象的对应关系;
16.根据所述rpc内核与ipc对象的对应关系、以及所述rtos标准接口实现不同操作系
统间的通信。
17.可选地,所述ipc接口通过指针建立rpc内核与ipc对象的对应关系。
18.可选地,所述ipc对象包括以下任意一种:cmux、socket、sipc、uart、usb、spi。
19.可选地,所述操作系统包括以下任意一种:mocor、rt

thread、win32。
20.可选地,所述rpc内核包括以下任意一种或多种方法:打开窗口、读、写、输入输出控制、释放。
21.本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质为非易失性存储介质或非瞬态存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时执行上述方法的步骤。
22.本发明实施例还提供一种电子设备,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行上述方法的步骤。
23.本发明实施例提供的通用远程通信调用架构及方法,通过操作系统封装模块将不同类型的操作系统接口封装为统一接口,以向rpc内核提供rtos标准接口,通过ipc接口映射模块将ipc对象封装为模块化结构,并建立rpc内核与ipc对象的对应关系,rpc内核利用rpc内核与ipc对象的对应关系及rtos标准接口,实现不同操作系统间的通信,从而可以使rpc内核的核心代码能够适合各类芯片,各类ipc,各类rtos的任意组合,快速适应需要各种ipc通信的产品形态。即使ipc对象和/或底层操作系统发生变化,也无需修改rpc内核代码,只需要改动和替换相应组件和模块,就能很好地完成产品移植工作。大大方便了产品在不同硬件环境间的移植,能够快速移植到不同芯片模组和不同rtos的系统。
附图说明
24.图1是本发明实施例通用远程通信调用架构的结构示意图;
25.图2是本发明实施例中rpc内核的软件目录结构示意图;
26.图3是本发明实施例通用远程通信调用方法的流程图。
具体实施方式
27.为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
28.rpc是在联网的计算机之间运行的程序和进程所用的通信技术,rpc整个过程涉及四类对象:客户端、客户端代理、服务端和服务端代理。rpc要求客户端和服务端之间约定好调用接口和传输格式(如json,xml等),客户端在调用该接口时,由客户端的代理对象负责对调用的参数(包括调用的函数名和参数等信息)进行格式转换,使之符合约定的传输格式,并通过网络传送至服务端。数据传输至服务端后,交由服务端代理对象进行格式解码,获取调用的接口和参数,最后调用服务端对象相应的方法获取结果并返回客户端。
29.在现有技术中,rpc的通信流程代码通常都是依赖于具体的rtos和物理通信链路,也就是说,基于不同的rtos和通信接口的rpc核心代码会有所不同,从而导致其不能在不同的硬件环境下通用,一旦硬件环境调整,就需要重新修改代码。为此,本发明实施例提供一种通用远程通信调用架构及方法,在使用远程调用的时候,通信流程代码不受物理通信链
路和rtos变化的影响,无论什么物理通信链路和rtos,都可以保持通信流程代码的一致性。
30.如图1所示,是本发明实施例通用远程通信调用架构的结构示意图。
31.该通用远程通信调用架构包括:rpc内核、ipc接口映射模块、以及操作系统封装模块。其中:
32.操作系统封装模块用于将不同类型的操作系统接口封装为统一接口,以向rpc内核提供rtos标准接口,也就是说,将封装后的统一接口作为rtos标准接口;
33.ipc接口映射模块用于将ipc对象封装为模块化结构,并建立rpc内核与ipc对象的对应关系;
34.rpc内核用于根据ipc接口映射模块建立的rpc内核与ipc对象的对应关系及操作系统封装模块提供的rtos标准接口,实现不同操作系统间的通信。
35.本发明实施例提供的通用远程通信调用架构,采用模块化设计,对ipc和rtos的api(application program interface,应用程序接口)进行标准化模块化设计,核心架构代码不变。将整个通用远程通信调用系统分成几个可以组合的模块。使其适合各类芯片、各类ipc、各类rtos的任意组合,快速适应需要各种ipc通信的产品形态。
36.上述操作系统封装模块向rpc内核提供rtos标准接口,针对不同的操作系统,比如,mocor、rt

thread、win32等,将各操作系统的操作接口封装为统一接口,使rpc内核针对不同的操作系统,可以采用相同的代码来实现。
37.比如,创建一个线程通用接口,在不同rtos中实现方式不同,功能是一样的,操作系统封装模块可以提供如下形式的rtos标准接口:
38.int rpc_pthread_create(rpc_pthread_t*tidp,const rpc_pthread_pthread_attr_t*attr,(void*)(*start_rtn)(void*),void*arg)
39.上述代码是将rpc抽象成统一的创建线程的函数,其功能是创建线程,即确定调用该线程函数的入口点。线程创建之后,就可以开始运行相关的线程函数。
40.相应地,在rt

thread系统中的实现如下:
[0041][0042]
相应地,在win32系统中的实现如下:
[0043]
[0044]
相应地,在其它rtos系统中的实现如下:
[0045]
[0046][0047]
上述粗体字部分是各种不同rtos创建线程的具体代码,由于是不同的操作系统,其代码会有不同。在利用本发明实施例的方案后,将其封装为统一接口,从而可以使rpc内核不用关心rtos是哪个具体的操作系统,提升了rpc内核的通用性。
[0048]
在本发明实施例中,ipc对象比如可以是但不限于以下几种:cmux、socket(套接字)、sipc(share inter processor comm,共享内存处理器间通信)、uart(universal asynchronous receiver/transmitter,通用异步收发传输器)、usb(universal serial bus,通用串行总线)、spi(serial peripheral interface,串行外设接口)。其中,cmux是一种串口多路复用协议,使一个串行接口能够将数据传输到四个不同的客户应用程序;socket是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制;sipc是一种基于spreadtrum multi

processor system(多处理器系统)的进程间通信机制;cmux将要传输的资料在串行通信与并行通信之间加以转换,将传输数据的每个字符一位接一位地传输;usb是一种串口总线标准,也是一种输入输出接口的技术规范,被广泛地应用于个人电脑和移动设备等信息通讯产品;spi是一种高速的,全双工,同步的通信总线。
[0049]
针对这些不同的ipc对象,ipc接口映射模块将ipc对象封装为模块化结构,并建立rpc内核与ipc对象的对应关系,比如可以利用指针建立rpc内核与ipc对象的对应关系,使rpc内核根据该对应关系即可使用相应的ipc接口。
[0050]
利用指针建立rpc内核与ipc对象的对应关系如下:
[0051][0052][0053]
在本发明实施例中,所述rpc内核可以实现现有的rpc的各种方法,比如可以包括但不限于以下任意一种或多种方法:open(打开窗口)、read(读)、write(写)、ioctl(输入输出控制)、release(释放)等。
[0054]
以write为例,它需要将指定内容和长度,发送到对端,对端收到就能达到目的,如果底层驱动不一致,如uart,usb,spi,socket等,调用的接口和内部实现的方式都是不同的,但它们都有类似的功能。本发明方案针对这些不同的接口,统一成相同的输入输出形
式,如写设备功能,需要指明具体的设备,需要写入的数据缓冲区,写入的长度,以及返回写入的状态等等。
[0055]
下面分别以写uart/socket设备为例,它们接口相同,实现方式不同,具体如下:
[0056]
//写uart设备的实现方式
[0057]
int write(int ipc,char*buf,int len)
[0058]
{
[0059]
//调用uart的相关write api来实现,写成功返回写成功的内容长度,写失败返回
‑1[0060]
}
[0061]
//写socket设备的实现方式
[0062]
int write(int ipc,char*buf,int len)
[0063]
{
[0064]
//调用socket的相关write api来实现,写成功返回写成功的内容长度,写失败返回
‑1[0065]
}
[0066]
基于本发明实施例提供的通用远程通信调用架构,rpc内核的软件目录结构如图2所示,包括rpc内核、rtos适配层、ipc适配层,通过该分层结构,使得无论ipc对象怎么变化、以及基于何种操作系统,rpc内核均可以保持不变。
[0067]
本发明方案提供注册机制,将不同ipc组件统一接口标准,供系统启动时扫描登记处理。
[0068]
所述注册机制是指当ap(application processor,应用处理器)需要使用rpc连接cp(content processor,内容处理器)时,要将与cp相关的连接信息组成一个对象,放到rpc的管理链表中。多个ap与cp连接,就需要注册多个ipc对象。这些具体的连接信息预先被放在结构(ipc_operations)中,注册完成后,rpc内核调用open指针,表示和对端cp的连接已经建立,之后就可以通过指针进行read/write操作,执行ap与cp的发送和接收处理。
[0069]
相应地,本发明实施例还提供一种通用远程通信调用方法,如图3所示,是该方法的一种流程图,包括以下步骤:
[0070]
步骤301,将不同类型的操作系统接口封装为统一接口,以向所述rpc内核提供rtos标准接口;
[0071]
步骤302,将ipc对象封装为模块化结构,并建立rpc内核与ipc对象的对应关系;
[0072]
步骤303,根据rpc内核与ipc对象的对应关系、以及rtos标准接口实现不同操作系统间的通信。
[0073]
需要说明的是,本实施例中各个步骤的序号并不代表对各个步骤的执行顺序的限定。
[0074]
本发明实施例提供的通用远程通信调用方法,通过将不同类型的操作系统接口封装为统一接口,以向rpc内核提供rtos标准接口,将ipc对象封装为模块化结构,并建立rpc内核与ipc对象的对应关系,rpc内核利用rpc内核与ipc对象的对应关系及rtos标准接口,实现不同操作系统间的通信,从而可以使rpc内核的核心代码能够适合各类芯片,各类ipc,各类rtos的任意组合,快速适应需要各种ipc通信的产品形态。即使ipc对象和/或底层操作
系统发生变化,也无需修改rpc内核代码,只需要改动和替换相应组件和模块,就能很好地完成产品移植工作。大大方便了产品在不同硬件环境间的移植,能够快速移植到不同芯片模组和不同rtos的系统。
[0075]
在具体实施中,上述通用远程通信调用架构可以应用于网络设备中的芯片,例如soc(system

on

a

chip,片上系统)、基带芯片、芯片模组等。
[0076]
在具体实施中,关于上述实施例中描述的各个装置、产品包含的各个模块/单元,其可以是软件模块/单元,也可以是硬件模块/单元,或者也可以部分是软件模块/单元,部分是硬件模块/单元。
[0077]
例如,对于应用于或集成于芯片的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于芯片内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现;对于应用于或集成于芯片模组的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,不同的模块/单元可以位于芯片模组的同一组件(例如芯片、电路模块等)或者不同组件中,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于芯片模组内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现;对于应用于或集成于终端的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,不同的模块/单元可以位于终端内同一组件(例如,芯片、电路模块等)或者不同组件中,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于终端内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现。
[0078]
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质为非易失性存储介质或非瞬态存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时执行上述图3对应实施例提供的方法的步骤。
[0079]
本发明实施例还提供了另一种通用远程通信调用架构,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行上述图3对应实施例所提供的方法的步骤。
[0080]
本发明实施例还提供了一种电子设备,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行上述图3对应实施例所提供的方法的步骤。
[0081]
在本发明所提供的几个实施例中,应该理解到,所揭露的方法、装置和系统,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的;例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式;例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0082]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0083]
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0084]
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1