CN106339263B - 一种多软件运行环境之间通信的方法 - Google Patents
一种多软件运行环境之间通信的方法 Download PDFInfo
- Publication number
- CN106339263B CN106339263B CN201610714847.5A CN201610714847A CN106339263B CN 106339263 B CN106339263 B CN 106339263B CN 201610714847 A CN201610714847 A CN 201610714847A CN 106339263 B CN106339263 B CN 106339263B
- Authority
- CN
- China
- Prior art keywords
- information
- software running
- running environment
- sent
- environment
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17318—Parallel communications techniques, e.g. gather, scatter, reduce, roadcast, multicast, all to all
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5016—Session
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开一种多软件运行环境之间的通信方法、及使多个软件运行环境之间通信的方法,其中,所述多个软件运行环境之间的通信方法包括以下步骤,S1、源软件运行环境根据待发送信息的类型与所述目的软件运行环境约定传输信息时选择的信息通道;以及,通过被选择的信息通道将所述待发送信息发送至通信驱动;S2、所述目的软件运行环境通过被选择的信息通道接收自所述通信驱动传送的待发送信息。通过本发明提供的技术方案,可以实现多个软件运行环境之间的通信。
Description
本案是以申请日:2012.12.04,申请号为201210516949.8,名称为《多软件运行环境通信方法、使多软件运行环境通信的方法》的专利申请为母案的分案申请。
技术领域
本发明涉及复杂嵌入式系统的软件领域,尤其涉及在多核处理器基础上的一种多个软件运行环境之间的通信方法,以及使多个软件运行环境之间通信的方法。
背景技术
随着嵌入式系统的应用越来越广泛,多核处理器有了更多的用武之地。所谓多核处理器就是在一片处理器芯片内部集成多个完全独立的处理单元,可以并行的处理业务。传统的单核处理器在主频提升方面已经很难突破芯片材料的物理极限,也就意味着处理性能很难再有所提升,而多核处理器却从另一种思路实现并行处理为处理性能的提升预留了很大的空间。为了更好地发挥多核处理器的并行处理能力,软件设计上通常采用多个软件运行环境在不同的处理器内核上单独运行。正如图1所示,复杂嵌入式系统由多个硬件和软件组件构成,每个组件相对独立地并行处理某种业务,从而实现高性能的计算处理系统。
现在的一些复杂嵌入式系统中,往往采用多核处理器作为中心引擎,一个系统内涉及多个软件运行环境。这种情况下,非常需要一种完整的便于使用的多个软件运行环境之间的通信方法,以这种通信方法为基础构建复杂并且可靠的嵌入式系统。
专利[CN101216814A]阐述的主要方法是通过虚拟数据通道进行数据传输,所述虚拟数据通道包括相互连接的操作系统对应的虚拟接口(例如虚拟网口)。这份说明文档公开的多核多操作系统之间通信方法,不使用硬件芯片,降低硬件成本;第三方软件不需要改动就可以移植,降低了软件移植成本;采用共享内存和核间消息实现数据收发,实现数据零拷贝,提高数据收发效率。
从上述说明文档的技术过程分析,建立虚拟数据通道的方法适合传输数据消息,不适合传输控制消息,另外采用共享内存和核间消息不使用硬件芯片的特点是大多数多核通信共用的方法,这种方法没有经过很好的设计封装只能作为底层的技术原理并未实现方便操作的通信系统。
专利[CN101170511A]阐述的主要方法是在嵌入式操作系统中实现多核处理器通信的装置及方法,包括内存模块、网络模块,其中,所述内存模块,在对外通信中,用于存储向网络模块发送的报文,通知网络模块将该报文发送;所述网络模块,用于接收所述内存模块发送的报文,同时发送中断请求,完成CPU核的通信。应用本发明,克服了现有技术的不足,首先无论是对外通信还是核间通信都挂接协议栈,功能更强大,上层应用开发更加方便;其次将对外通信和核间通信对于上层透明化,使得应用层无须关注底层的传输细节。
从上述说明文档的技术过程分析,让CPU内核之间的通信挂接协议栈虽然使得应用层无需关注底层的传输细节,但是对于整个嵌入式设备来看被分成了多个独立的系统,需要为每个独立的系统协议栈独立分配一些必要的资源,比如地址标识,不利于复杂嵌入式系统的设计和集成。
专利[CN1904873A]阐述的主要方法是在嵌入式实时操作系统中多核处理器的核间通信方法,包括:在共享内存区中分配内存作为多核共享消息池;源核将要发送的消息写入多核共享消息池;源核将所述消息在多核共享消息池中的地址、目的任务标识通过数据管道发送给目的核;目的核将多核共享消息池中所述地址存放的所述消息传送给目的任务。本发明还公开了一种核间通信装置。本发明实现了核间的消息队列通信机制,提高了核间通信的效率,使每次传输消息的长度不再受到限制;本发明还实现了核内通信和核间通信的统一,为应用程序的开发提供了方便。
从上述说明文档的技术过程分析,使用共享内存的机制让每条消息携带内核编号和任务编号实现多核通信,但是这种方法的主要缺点是应用程序开发的时候需要关注具体的CPU内核硬件类型,另外基于单条消息的传输方式对于大量的数据传输来说效率不高。
发明内容
本发明主要解决的技术问题是提供一种多个软件运行环境之间的通信方法,以及,使多个软件运行环境之间通信的方法。
为解决上述问题,本发明采用的一种技术方案是:提供一种多个软件运行环境之间的通信方法,包括以下步骤,
S1、源软件运行环境根据待发送信息的类型与所述目的软件运行环境约定传输信息时选择的信息通道;以及,通过被选择的信息通道将所述待发送信息发送至通信驱动;
S2、所述目的软件运行环境通过被选择的信息通道接收自所述通信驱动传送的待发送信息。
其中,所述步骤S1包括以下步骤,
S10、所述源软件运行环境向目的软件运行送信息时判断所述待发送信息的类型是消息还是数据;
若判定所述待发送信息的类型为消息,则与所述目的软件运行环境约定传输信息时选择的信息通道为消息通道,并执行步骤S11;若判定所述待发送信息的类型为数据,则与所述目的软件运行环境约定传输信息时选择的信息通道为数据通道,并执行步骤S12;
S11、所述源软件运行环境建立与所述目的软件运行环境连接的消息通道,并通过上述建立好的消息通道将所述待发送信息发送至通信驱动;
S12、通过数据通道将所述待发送信息发送至通信驱动。
其中,所述步骤S11中消息通道具体通过下步骤被建立,
S110、所述源软件运行环境向所述目的软件运行环境发送建立连接的请求;
S111、接收所述目的软件运行环境对上述请求的响应,并建立与所述目的软件运行环境创建之间的连接,形成消息通道。
其中,所述待发送信息中还包含有调用所述目的软件运行环境函数的调用指令。
其中,所述步骤S2中,所述目的软件运行环境接收消息时,向所述源软件运行环境发送消息应答。
其中,所述通信驱动为共享内存通信驱动,或为以太网通信驱动。
其中,所述源软件运行环境为Linux内核或操作系统,或为应用程序,或为基于硬件的单线程专用程序。
其中,当所述通信驱动为共享内存通信驱动时,所述步骤S1中通过被选择的信息通道将所述待发送信息发送至通信驱动的步骤和所述步骤S2之间,还包括以下步骤,
S20、判断所述源软件运行环境是为Linux内核或操作系统,是为应用程序,还是为基于硬件的单线程专用程序;
当判定为Linux内核或操作系统时,执行步骤S21;当判定为应用程序时,执行步骤S22;当判定为基于硬件的单线程专用程序时,执行步骤S23;
S21、所述源软件运行环境向所述目的软件运行环境发送一个中断,用于通知所述目的软件运行环境接收所述待发送信息;
S22、所述源软件运行环境向所述目的软件运行环境发送一个信号事件,用于通知所述目的软件运行接收所述待发送信息;
S23、所述源软件运行环境直接将所述待发送信息发送至所述目的软件运行环境。所述目的软件运行环境通过轮询的方式接收所述待发送信息。
其中,当所述通信驱动为以太网通信驱动时,所述待发送信息被封装在以太网报文内部。
其中,所述共享内存通信驱动中的缓存是以2048字节为大小的存储块。
为解决上述问题,本发明采用的另一种技术方案是:提供一种使多个软件运行环境之间通信的方法,包括以下步骤,
S01、为系统中每个软件运行环境分配一个通信编号,并为需与目的软件运行环境进行通信的源软件运行环境分配至少一个接收端口号;
S02、在所述源软件运行环境及目的软件运行环境中创建端点,根据待传输信息的类型在所述源软件运行环境端点、目的软件运行环境端点之间建立相应的信息通道。
其中,所述步骤S02包括以下步骤,
S020、判断所述待传输信息的类型是为数据,还是为消息;当判定所述待传输信息的类型为数据时,执行步骤S021;当判定所述待传输信息的类型为消息时,执行步骤S022;
S021、在所述源软件运行环境中创建第一端点,并与所述目的软件运行环境创建的第二端点建立连接,形成数据通道;
S022、在所述源软件运行环境中创建第三端点,并在所述目的软件运行环境创建第四端点。
其中,所述步骤S022还包括步骤,将所述目的软件运行环境中被所述源软件运行环境调用的函数名映射到所述第四端点上。
本发明的有益效果是:本发明提供了一种多个软件运行环境之间的通信方法、以及使多个软件运行环境之间通信的方法,通过本发明所提供的技术方案,能够根据待传输信息的类型在所述源软件运行环境端点、目的软件运行环境端点之间建立相应的信息通道,能够实现不同软件运行环境之间的相互通信。
此外,本发明根据软件运行环境中通信的特点,将数据通道与消息通道分离,适用不同的通信需求,简化了操作,大大提高了通信效率,而且还可以通过相应的信息通道实现调用对方函数的目的。
进一步的,本发明选择通信驱动方式与具体的硬件类型无关,是不基于CPU内核的通信方式,这将十分有益于复杂嵌入式系统的设计与集成。
附图说明
图1是复杂嵌入式系统的结构模块图;
图2是本发明使多个软件运行环境之间通信的方法的流程图;
图3是一实施例中使多个软件运行环境之间通信的方法的部分流程图;
图4是一实施例中软件运行环境间通过消息通道进行消息传输功能模块图;
图5是一实施例中多个软件运行环境之间的通信方法流程图;
图6是一实施例中多个软件运行环境之间的通信方法部分流程图;
图7是一实施例中多个软件运行环境之间的通信方法部分流程图;
图8是一实施例中多个软件运行环境之间的通信的功能模块图;
图9是共享内存通信驱动方式中一实施例中信息格式的示意图;
图10是共享内存通信驱动方式中一实施例中信息格式的示意图;
图11是一实施例中通过共享内存通信驱动方式传输信息的示意图;
图12是一实施例中通过以太网通信驱动方式传输信息的示意图;
图13是以太网通信驱动方式中一实施例中信息格式的示意图。
具体实施方式
为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
为能更准确地理解本发明的技术内容,本文在这里先解释下多核处理器、消息通道及数据通道的确切含义。
多核处理器是指在一枚处理器中集成两个或多个完整的计算引擎(内核)。多核技术的开发源自于工程师认识到传统的单核处理器的局限性。第一,仅仅提高单核芯片的速度会产生过多的热量且无法明显地带来性能改善。第二,处理器芯片的物理材料不可能提供无限制提高主频的能力。
消息通道是指软件运行环境之间传输控制消息的通道,比如设备管理员通过操作界面对设备发送指令,这个指令要传输到具体的软件执行模块,这个传输过程就通过消息通道实现。也就是说,消息通道每发送一条消息之前先协商临时的连接,协商成功后才可以真正发送消息。
数据通道是指软件运行环境之间传输报文数据的通道,比如网络设备中从硬件接收到一个报文,这个报文的处理过程要经过多个阶段并且需要多个软件运行环境协同处理,那么数据报文从一个软件运行环境传输到另外一个软件运行环境就通过数据通道进行,即数据通道在软件运行环境初始化的过程建立,在发送数据之前仅仅需要检查对应的连接是否建立,如果已经建立则发送数据,如果没有建立则不发送数据。
请参阅图2至图4,为解决上述问题,本发明采用的另一种技术方案是:提供一种使多个软件运行环境之间通信的方法,包括以下步骤,
S01、为系统中每个软件运行环境分配一个通信编号,并为需与目的软件运行环境进行通信的源软件运行环境分配至少一个接收端口号;
S02、在所述源软件运行环境及目的软件运行环境中创建端点,根据待传输信息的类型在所述源软件运行环境端点、目的软件运行环境端点之间建立相应的信息通道。
通过上述方法,根据待传输信息的类型在所述源软件运行环境端点、目的软件运行环境端点之间建立相应的信息通道,能够实现不同软件运行环境之间的相互通信。
在本发明中,通信编号及接收端口号是在系统设计过程中统一规划的。在本发明的某些实施方式中,接收端口号是一个16位整型数值,数值大小范围是0—65535,在某个软件运行环境里面用于一个特定的连接使用的端口是接收端口,所以其中一方要向对方发送消息或者数据的时候需要先确定好对方的软件运行环境通信编号和接收端口。在这里通信编号的范围及接收端口号的范围根据系统设计具体设定。
如上述描述不难看出,本发明根据软件运行环境中通信的特点,将数据通道与消息通道分离,适用不同的通信需求,简化了操作,大大提高了通信效率。
在本发明中,软件运行环境是指软件运行所需的各种条件,包括硬件环境和软件环境。在本说明文档中特指软件环境,既可以是嵌入式操作系统,比如Linux、vxworks、uCos等,也可以是软件开发者自己开发的某种专用软件平台,还可以是一个应用程序。
在如图3所示的一具体的实施例中,所述步骤S02包括以下步骤,
S020、判断所述待传输信息的类型是为数据,还是为消息;当判定所述待传输信息的类型为数据时,执行步骤S021;当判定所述待传输信息的类型为消息时,执行步骤S022;
S021、在所述源软件运行环境中创建第一端点,并与所述目的软件运行环境创建的第二端点建立连接,形成数据通道;
S022、在所述源软件运行环境中创建第三端点,并在所述目的软件运行环境创建第四端点。
如上述可知,当所述待传输信息的类型为数据时,在源软件运行环境、目的软件运行环境之间直接建立数据通道,可用于直接进行传输数据。当所述待传输信息的类型为消息时,只在源软件运行环境、目的软件运行环境创建端点,当源软件运行环境、目的软件运行环境之间传输消息时,才会触发消息通道的建立。在本发明中,消息通道传输的内容绝大多数是ASCII码字符串,数据通道传输的内容全部是二进制数据。也就是说上文所述的数据可以为数据块,也可以为网络数据报文等,所述的消息则指控制字符串及控制指令等。
由前文描述可知,在本发明中,无论是数据通道还是消息通道,均是在所述源软件运行环境端点、目的软件运行环境端点之间建立的。具体的来说,一个端点就是一个数据结构的实例,在这里数据结构通俗地讲就是具备特定数据格式的模板,实例通俗地讲就是根据模板格式分配的一块存储区域。在本发明中,端点的数据结构里面主要包括端点编号、源软件运行环境的通信编号及接收端口号、目的软件运行环境的通信编号及接收端口号。在本发明一具体的实施例中,端点编号是32位的整型数值,可以根据下面的公式计算出来:
端点编号=(软件运行环境通信编号<<16)+接收端口编号。
当然端点编号的数据类型及计算公式可根据实际情况自行编写,端点的内容也可根据编程过程的数据自行修改。
请参阅图4,为软件运行环境间通过消息通道进行消息传输的一具体实施例,其中软件运行环境1的消息通道协议模块内部创建了两个端点,分别是端点(1,100)和端点(1,101);其中软件运行环境2的消息通道协议模块创建了一个端点(2,200);其中软件运行环境3的消息通道协议模块创建了一个端点(3,300)。端点(endpoint)使用(x,y)的方式表示,其中x是软件运行环境的MEAPI编号,其中y是在软件运行环境内为每个端点设定的接收端口号。
在上述一优选的实施例中,所述步骤S022还包括步骤,将所述目的软件运行环境中被所述源软件运行环境调用的函数名映射到所述第四端点上。具体的做法是向目的软件运行环境发送一个包含函数调用指令的消息,令目的软件运行环境提供被调用的函数名称、目的软件运行环境的通信编号及相应的接收端口号,并计算出目的软件运行环境的端点(也就是上文所述的第四端点),然后把被调用的函数名称映射到第四端点上。这样就实现了通过发送消息就能够调用对方函数的功能了,当然,此消息中是含有调用对方函数的指令的。
请参阅图5,本实施方式提供一种多个软件运行环境之间的通信方法,包括以下步骤,
S1、源软件运行环境根据待发送信息的类型与所述目的软件运行环境约定传输信息时选择的信息通道;以及,通过被选择的信息通道将所述待发送信息发送至通信驱动;
S2、所述目的软件运行环境通过被选择的信息通道接收自所述通信驱动传送的待发送信息。
具体的,在如图6所示的实施例中,所述步骤S1包括以下步骤,
S10、所述源软件运行环境向目的软件运行送信息时判断所述待发送信息的类型是消息还是数据;
若判定所述待发送信息的类型为消息,则与所述目的软件运行环境约定传输信息时选择的信息通道为消息通道,并执行步骤S11;若判定所述待发送信息的类型为数据,则与所述目的软件运行环境约定传输信息时选择的信息通道为数据通道,并执行步骤S12;
S11、所述源软件运行环境建立与所述目的软件运行环境连接的消息通道,并通过上述建立好的消息通道将所述待发送信息发送至通信驱动;
S12、通过数据通道将所述待发送信息发送至通信驱动。
正如前文所述那样,消息通道是在源软件运行环境发送一条消息之前先与目的软件运行环境协商临时的连接,协商成功后才可以真正发送消息。当消息传输完成后,消息通道则再次断开。当再次传输消息时,消息通过才会被再建立。在这里,源软件运行环境、目的软件运行环境之间的连接协议可以为TCP三次握手协议,也可根据实际情况选择。而数据通道则是在软件运行初始时就已经建立,源软件运行环境、目的软件运行环境传输数据时不需要建立数据通道,就可直接进行数据的传输。
消息通道及数据通道的建立都是基于源软件运行环境端点、目的软件运行环境端点之间的虚连接,此过程在前文已经阐释,在此不再赘述。
在某些具体的实施例中,所述步骤S11中消息通道具体通过下步骤被建立,
S110、所述源软件运行环境向所述目的软件运行环境发送建立连接的请求;
S111、接收所述目的软件运行环境对上述请求的响应,并建立与所述目的软件运行环境创建之间的连接,形成消息通道。
在某些具体的实施例中,为实现源软件运行环境可以调用目的软件运行环境函数,所述待发送信息中还包含有调用所述目的软件运行环境函数的调用指令。如图7所示的一具体实施例中,软件环境1为源软件运行环境,软件环境2为目的软件运行环境。软件环境1向软件环境2发送建立消息通道的连接请求,软件环境2接收到所述请求后响应所述请求,软件环境1、2通过此次握手完成了消息通道的建立。消息通道建立后,软件环境1便向软件环境2发送消息。为了更安全地确保消息被传送至软件环境2,在某些优选的实施例中,所述步骤S2中,所述目的软件运行环境接收消息时,向所述源软件运行环境发送消息应答。
为了更好地理解上述内容,请参阅图8,为一实施方式中使多个软件运行环境之间通信的系统模块图,通过图8很明了地看出各功能模块之间关系。其中,函数调用封装模块是用于发送调用对方函数的控制指令的,在图中,也就是函数调用封装模块12将调用软件运行环境2函数的控制指令发送至消息通道协议模块14。消息通道协议模块14接收到控制指令后,向消息通道协议模块24发送连接请求,消息通道协议模块24响应所述请求后,与消息通道协议模块14之间建立连接,形成消息通道。消息通道建立好后,消息通道协议模块14将函数调用封装模块12发送来的控制指令传送至通信驱动15,通信驱动15将控制指令传送至通信驱动25,软件运行环境2再通过消息通道协议模块24接收此控制指令。当软件运行环境1、2之间传输数据时,数据通道协议模块13与数据通道协议模块23之间早在软件运行环境1、2初始化的时候就已经建立,所以当软件运行环境1、2之间传输数据时,可直接将数据通过通信驱动15、25进行传输。
在本发明中,所述通信驱动为共享内存通信驱动,或为以太网通信驱动。所述源软件运行环境为Linux内核或操作系统,或为应用程序,或为基于硬件的单线程专用程序。
当所述通信驱动为共享内存通信驱动时,目的软件运行环境的接收处理过程根据源软件运行环境类型的不同选择不同的实现方式。具体的,在某些实施例中,所述步骤S1中通过被选择的信息通道将所述待发送信息发送至通信驱动的步骤和所述步骤S2之间,还包括以下步骤,
S20、判断所述源软件运行环境是为Linux内核或操作系统,是为应用程序,还是为基于硬件的单线程专用程序;
当判定为Linux内核或操作系统时,执行步骤S21;当判定为应用程序时,执行步骤S22;当判定为基于硬件的单线程专用程序时,执行步骤S23;
S21、所述源软件运行环境向所述目的软件运行环境发送一个中断,用于通知所述目的软件运行环境接收所述待发送信息;
S22、所述源软件运行环境向所述目的软件运行环境发送一个信号事件,用于通知所述目的软件运行接收所述待发送信息;
S23、所述源软件运行环境直接将所述待发送信息发送至所述目的软件运行环境,所述目的软件运行环境通过轮询的方式接收所述待发送信息。
在本发明中,所谓共享内存就是整个系统中每个软件运行环境都可以读写的内存区域,而所谓的共享内存通信就是由一方写入然后另一方读出的过程实现双方的通信方式。本发明中,每个软件运行环境都有自己的接收队列,源软件运行环境发送的消息内容或者数据内容可通过共享内存直接挂接到目的软件运行环境的接收队列里,整个传输过程是零拷贝。运用共享内存通信驱动方式极大地提高了传输效率,而且此通信方式与具体的硬件类型无关,是不基于CPU内核的通信方式,这将十分有益于复杂嵌入式系统的设计与集成。
在上述的某些具体的实施例中,当源软件运行环境为Linux内核运行环境或者其它操作系统运行环里时,源软件运行环境可以直接处理硬件中断,所以当源软件运行环境把消息内容或者数据内容挂接到共享内存通信驱动之后,源软件运行环境会发送一个邮箱中断给目的软件运行环境,通知它接收消息或者数据。
当在Linux的应用程序运行环境里面时,源软件运行环境不能直接处理硬件中断,但可以监听文件操作事件,所以当其中源软件运行环境把消息内容或者数据内容挂接到共享内存通信驱动之后,发送一个文件操作事件给目的软件运行环境,通知它接收消息或者内容。
当在直接运行在硬件基础上的单线程专用程序运行环境里面时,源软件运行环境既不能处理硬件中断也不能处理文件操作事件,整个运行环境里面是单线程处理,所有的处理都是通过反复轮询的方式执行的,所以上述信息的通信任务也是通过反复轮询的方式完成。在一具体的实施例中,源软件运行环境是直接将所述待发送信息发送至目的软件运行环境的接收队列中,目的软件运行环境直接从接收队列通过反复轮询的方式接收信息。
在本发明中,共享内存通信驱动使用固定长度的缓存块发送和接收信息,并且确保缓存块的地址起点总是与处理器cache的块地址起点对齐。为了能够包含一个完事最大的以太网报文(最大长度为1500字节),不造成信息的分段和丢失,在某一最佳的实施方式中,所述共享内存通信驱动中的缓存是以2048字节为大小的存储块。
在上述实施例中,信息的格式可以如图9所示,也可以如图10所示。正如本领域人员均可想到的那样,共享内存驱动中的缓存大小是可以根据具体情况设定的,信息的格式也是可以根据实际具体情况设定的。
在上述某些具体的如图11所示的实施例中,描述了通过共享内存通信驱动方式、软件运行环境1向软件运行环境2发送消息或者数据的过程。每个软件运行环境都具备一个接收队列,软件运行环境2接收到软件运行环境1发送的中断或事件后,触发接收队列从共享内存通信驱动中接收消息或者数据。其中消息缓存1----4是以固定长度为大小的内存块,建议数值为2048字节,在此实施例中,既可以缓存协议模块发送的消息,也可以缓存协议模块发送的数据。
请参阅图12及图13,在其他的某些实施例中,当所述通信驱动为以太网通信驱动时,所述待发送信息被封装在以太网报文内部,每个软件运行环境的接收队列在以太网通信驱动程序之上。这种通信驱动方式下,消息或者数据传输过程虽然无法实现零拷贝效果,但能适合不具备共享内存硬件环境条件的系统,对前文所述的共享内存通信驱动的通信方式是一个很好的补充。而且,此通信方式与具体的硬件类型无关,是不基于CPU内核的通信方式,这将十分有益于复杂嵌入式系统的设计与集成。
在以太网通信驱动方式下,信息的格式如前文共享内存通信驱动中所述的那样,但是整个信息的内容又作为以太网消息承载的内容,所以在信息的前面需要封装14字节的以太网报头,其中有6字节的目的MAC地址,6字节的源MAC地址,2字节的报文类型。目的MAC地址和源MAC地址由软件所处的硬件环境决定,而2字节的报文类型则需要以太网通信驱动的实现者自定义,定义的原则是不与现有的常用以太网报文类型相互冲突即可。最终传输的消息缓存格式如图13所示。
综上所述,本发明提供了一种多个软件运行环境之间的通信方法、以及使多个软件运行环境之间通信的方法,通过本发明所提供的技术方案,能够根据待传输信息的类型在所述源软件运行环境端点、目的软件运行环境端点之间建立相应的信息通道,能够实现不同软件运行环境之间的相互通信。
此外,本发明根据软件运行环境中通信的特点,将数据通道与消息通道分离,适用不同的通信需求,简化了操作,大大提高了通信效率,而且还可以通过相应的信息通道实现调用对方函数的目的。
进一步的,本发明选择通信驱动方式与具体的硬件类型无关,是不基于CPU内核的通信方式,这将十分有益于复杂嵌入式系统的设计与集成。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (3)
1.一种多软件运行环境之间通信的方法,其特征在于,包括以下步骤,
S1、源软件运行环境根据待发送信息的类型与目的软件运行环境约定传输信息时选择的信息通道;以及,通过被选择的信息通道将所述待发送信息发送至通信驱动;所述通信驱动为共享内存通信驱动,或为以太网通信驱动;所述源软件运行环境为Linux内核,或为在Linux的应用程序,或为基于硬件的单线程专用程序;
其中,所述源软件运行环境向目的软件运行环境发送信息时判断所述待发送信息的类型是消息还是数据;
若判定所述待发送信息的类型为消息,则与所述目的软件运行环境约定传输信息时选择的信息通道为消息通道,并执行步骤S11;若判定所述待发送信息的类型为数据,则与所述目的软件运行环境约定传输信息时选择的信息通道为数据通道,并执行步骤S12;
S11、所述源软件运行环境建立与所述目的软件运行环境连接的消息通道,并通过上述建立好的消息通道将所述待发送信息发送至通信驱动;
S12、通过数据通道将所述待发送信息发送至通信驱动;
S2、所述目的软件运行环境通过被选择的信息通道接收自所述通信驱动传送的待发送信息;
所述待发送信息中还包含有调用所述目的软件运行环境函数的调用指令;
共享内存通信驱动使用固定长度的缓存块发送和接收信息,并且确保缓存块的地址起点总是与处理器cache的块地址起点对齐。
2.根据权利要求1所述的多软件运行环境之间通信的方法,其特征在于,所述步骤S2中,所述目的软件运行环境接收消息时,向所述源软件运行环境发送消息应答。
3.根据权利要求1所述的多软件运行环境之间通信的方法,其特征在于,当所述通信驱动为共享内存通信驱动时,所述步骤S1中通过被选择的信息通道将所述待发送信息发送至通信驱动的步骤和所述步骤S2之间,还包括以下步骤,
S20、判断所述源软件运行环境是为Linux内核,是为在Linux的应用程序,还是为基于硬件的单线程专用程序;
当判定为Linux内核时,执行步骤S21;当判定为在Linux的应用程序时,执行步骤S22;当判定为基于硬件的单线程专用程序时,执行步骤S23;
S21、所述源软件运行环境向所述目的软件运行环境发送一个中断,用于通知所述目的软件运行环境接收所述待发送信息;
S22、所述源软件运行环境向所述目的软件运行环境发送一个信号事件,用于通知所述目的软件运行接收所述待发送信息;
S23、所述源软件运行环境直接将所述待发送信息发送至所述目的软件运行环境;
当所述通信驱动为以太网通信驱动时,所述待发送信息被封装在以太网报文内部。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210170684 | 2012-05-29 | ||
CN2012101706840 | 2012-05-29 | ||
CN201210516949.8A CN103034543B (zh) | 2012-05-29 | 2012-12-04 | 多软件运行环境通信方法、使多软件运行环境通信的方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210516949.8A Division CN103034543B (zh) | 2012-05-29 | 2012-12-04 | 多软件运行环境通信方法、使多软件运行环境通信的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106339263A CN106339263A (zh) | 2017-01-18 |
CN106339263B true CN106339263B (zh) | 2020-01-31 |
Family
ID=48021466
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610714847.5A Active CN106339263B (zh) | 2012-05-29 | 2012-12-04 | 一种多软件运行环境之间通信的方法 |
CN201610713027.4A Active CN106227614B (zh) | 2012-05-29 | 2012-12-04 | 一种多软件运行环境之间通信的系统 |
CN201610714857.9A Active CN106371933B (zh) | 2012-05-29 | 2012-12-04 | 多软件运行环境之间相互通信的方法 |
CN201210516949.8A Active CN103034543B (zh) | 2012-05-29 | 2012-12-04 | 多软件运行环境通信方法、使多软件运行环境通信的方法 |
Family Applications After (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610713027.4A Active CN106227614B (zh) | 2012-05-29 | 2012-12-04 | 一种多软件运行环境之间通信的系统 |
CN201610714857.9A Active CN106371933B (zh) | 2012-05-29 | 2012-12-04 | 多软件运行环境之间相互通信的方法 |
CN201210516949.8A Active CN103034543B (zh) | 2012-05-29 | 2012-12-04 | 多软件运行环境通信方法、使多软件运行环境通信的方法 |
Country Status (1)
Country | Link |
---|---|
CN (4) | CN106339263B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103218327B (zh) * | 2013-04-28 | 2016-08-10 | 惠州市德赛西威汽车电子股份有限公司 | 嵌入式系统多进程交互共用spi通讯总线的方法 |
CN104572315B (zh) * | 2013-10-23 | 2018-12-25 | 华为技术有限公司 | 实现子系统间通信的方法、通信实体及分布式通信系统 |
CN104838361B (zh) * | 2013-12-03 | 2018-06-15 | 华为技术有限公司 | 一种核间进程通信的方法、装置及系统 |
CN109144749B (zh) * | 2018-08-14 | 2021-07-27 | 苏州硅岛信息科技有限公司 | 一种使用处理器实现多处理器间通信的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1904873A (zh) * | 2005-07-28 | 2007-01-31 | 大唐移动通信设备有限公司 | 嵌入式实时操作系统中多核处理器的核间通信方法及装置 |
CN101170511A (zh) * | 2007-11-20 | 2008-04-30 | 中兴通讯股份有限公司 | 嵌入式操作系统中实现多核处理器通信的装置及方法 |
CN101216814A (zh) * | 2007-12-26 | 2008-07-09 | 杭州华三通信技术有限公司 | 一种多核多操作系统之间的通信方法及系统 |
CN101262501A (zh) * | 2008-04-23 | 2008-09-10 | 杭州华三通信技术有限公司 | 一种多核系统中的核间通信方法和一种多核系统 |
CN101615141A (zh) * | 2008-06-26 | 2009-12-30 | 陈鹰 | 一种进行应用程序调度的方法及应用程序调度模块 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030123638A1 (en) * | 2001-12-28 | 2003-07-03 | Hines Warner Lee | Multi-application operations management for single system environments |
CN100517236C (zh) * | 2006-04-03 | 2009-07-22 | 北京握奇数据系统有限公司 | 智能卡嵌入式操作系统及其控制方法 |
US8307041B2 (en) * | 2009-12-31 | 2012-11-06 | International Business Machines Corporation | Multi-application follow-up |
CN102271123A (zh) * | 2010-06-01 | 2011-12-07 | 阿里巴巴集团控股有限公司 | 一种通信方法、系统及设备 |
-
2012
- 2012-12-04 CN CN201610714847.5A patent/CN106339263B/zh active Active
- 2012-12-04 CN CN201610713027.4A patent/CN106227614B/zh active Active
- 2012-12-04 CN CN201610714857.9A patent/CN106371933B/zh active Active
- 2012-12-04 CN CN201210516949.8A patent/CN103034543B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1904873A (zh) * | 2005-07-28 | 2007-01-31 | 大唐移动通信设备有限公司 | 嵌入式实时操作系统中多核处理器的核间通信方法及装置 |
CN101170511A (zh) * | 2007-11-20 | 2008-04-30 | 中兴通讯股份有限公司 | 嵌入式操作系统中实现多核处理器通信的装置及方法 |
CN101216814A (zh) * | 2007-12-26 | 2008-07-09 | 杭州华三通信技术有限公司 | 一种多核多操作系统之间的通信方法及系统 |
CN101262501A (zh) * | 2008-04-23 | 2008-09-10 | 杭州华三通信技术有限公司 | 一种多核系统中的核间通信方法和一种多核系统 |
CN101615141A (zh) * | 2008-06-26 | 2009-12-30 | 陈鹰 | 一种进行应用程序调度的方法及应用程序调度模块 |
Also Published As
Publication number | Publication date |
---|---|
CN106227614A (zh) | 2016-12-14 |
CN106371933A (zh) | 2017-02-01 |
CN106371933B (zh) | 2019-08-20 |
CN106339263A (zh) | 2017-01-18 |
CN103034543B (zh) | 2016-08-17 |
CN103034543A (zh) | 2013-04-10 |
CN106227614B (zh) | 2019-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10324873B2 (en) | Hardware accelerated communications over a chip-to-chip interface | |
CN105159753B (zh) | 加速器虚拟化的方法、装置及集中资源管理器 | |
US7231638B2 (en) | Memory sharing in a distributed data processing system using modified address space to create extended address space for copying data | |
WO2016187813A1 (zh) | 一种光电混合网络的数据传输方法及装置 | |
CN106339263B (zh) | 一种多软件运行环境之间通信的方法 | |
WO2020000489A1 (zh) | 一种pcie发送、接收方法及装置、设备和系统 | |
CN114553635B (zh) | Dpu网络设备中的数据处理方法、数据交互方法及产品 | |
WO2011162880A2 (en) | Methods and systems to permit multiple virtual machines to separately configure and access a physical resource | |
US10609125B2 (en) | Method and system for transmitting communication data | |
CN103532876A (zh) | 数据流的处理方法与系统 | |
CN108228309A (zh) | 基于虚拟机的数据包发送和接收方法及装置 | |
CN102571912A (zh) | 一种实现基于多核处理器和混合操作系统的卸载协议栈的方法 | |
CN113347017B (zh) | 一种网络通信的方法、装置、网络节点设备及混合网络 | |
CN113296979B (zh) | 一种虚幻引擎与外部程序的数据通信方法 | |
CN117931478A (zh) | 进程间通信方法、装置及存储介质 | |
CN113596111A (zh) | 一种基于分布式的节点间通信方法 | |
CN110958590B (zh) | 一种基于多协议边缘计算网关的异构设备集成系统 | |
US8589587B1 (en) | Protocol offload in intelligent network adaptor, including application level signalling | |
CN116303171A (zh) | 一种服务器之间的数据交互方法、装置、电子设备及介质 | |
WO2012126352A1 (zh) | 在pcie总线上传输报文的方法、设备和系统 | |
WO2012019376A1 (zh) | 无线通信终端网络设备功能的实现方法及装置 | |
KR100412237B1 (ko) | 사용자 수준의 소켓 계층과 그를 이용한 통신 인터페이스방법 | |
CN115037795B (zh) | 一种嵌入式设备多机通信方法 | |
US20230315659A1 (en) | Interrupt emulation on network devices | |
WO2024060247A1 (zh) | 基于蓝牙通信的数据交互方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 350000 Building 28, Fuzhou Software Park C, 89 Software Avenue, Gulou District, Fuzhou City, Fujian Province Applicant after: Ankexun (Fujian) Technology Co., Ltd. Address before: 350400 Pingtan, Fuzhou Province comprehensive experimentation area central business headquarters Applicant before: FUJIAN SUNNADA NETWORK TECHNOLOGY CO., LTD. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |