CN101416470A - 具有高层面业务合成的处理器间通信协议 - Google Patents
具有高层面业务合成的处理器间通信协议 Download PDFInfo
- Publication number
- CN101416470A CN101416470A CNA2004800289393A CN200480028939A CN101416470A CN 101416470 A CN101416470 A CN 101416470A CN A2004800289393 A CNA2004800289393 A CN A2004800289393A CN 200480028939 A CN200480028939 A CN 200480028939A CN 101416470 A CN101416470 A CN 101416470A
- Authority
- CN
- China
- Prior art keywords
- ipc
- business
- client
- server
- assembly
- 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.)
- Pending
Links
Images
Classifications
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/327—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the session layer [OSI layer 5]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Medical Informatics (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种允许动态业务合成的IPC网络(1900)。IPC客户端(1902)可以例如请求诸如新的相片业务这样的业务,并教导IPC网络什么业务组件组成该业务。在允许IPC客户端(1902)使用业务之前,IPC服务器(1908)等待,直至全部的所请求业务组件(1914,1916)已经在IPC网络(1900)登记。动态的业务合成允许IPC网络(1900)中操作的客户端/组件改变业务定义,而无需影响网络(1900)中操作的应用程序之间的处理器间通信。而且,IPC网络(1900)动态地了解新业务,并且能够识别网络(1900)内业务的可用性。
Description
技术领域
本发明通常涉及电子学领域,更具体地,涉及具有高层面业务合成的处理器间通信(IPC)协议/网络。
背景技术
多数电子系统包括许多联网的单元(组件),诸如形成系统的硬件和软件。在多数系统中,存在用于负责在形成联网单元的不同组件之间的通信以及在不同联网单元自身之间的通信的层。这个层一般被称为处理器间通信(IPC)层。
最近几年,为了解决处理器间通信,已经引入了若干协议。IPC产品的一个例子是PCI AGP控制器(PAC),其集成了Host-to-PCI网桥、动态随机存取存储器(DRAM)控制器和数据路径以及加速图形接口(AGP)界面。IPC产品的另一个例子是OMAPTM平台。这些平台都没有提供多少在硬件层面之上的支持,并且也几乎没有在较低层面组件或信道层面(物理层)提供设计灵活性。
例如,PAC平台是封闭的体系结构并且被嵌入在操作系统的TAPI层面中,其中IPC码不能由开发者访问。因此,这些平台不延伸到组件层面并且它们也不允许动态指配IPC资源、硬件支持能力或多节点路由等。对于有时要将不同类型的业务组合以供系统中的组件使用的需求,能够允许动态组合不同业务(例如,相机和JPEG业务)以形成组合业务的IPC网络将是非常有益的。而且,在例如其中对于联接至IPC网络的两个不同处理器的音频服务的定义是不同的情况中,IPC网络中处理相同业务的不同“定义”的能力也是有益的。由上可知,在现有技术中存在对于能够提供现有技术中这些缺点的解决方案的IPC协议的需要。
附图说明
在所附权利要求中特别给出本发明的相信是新颖的特征。参考以下说明,结合附图可以很好地理解本发明,在附图中相似的附图标记指代相似的组件,附图中:
图1显示了根据本发明的实施例的IPC网络的图。
图2显示了根据本发明的实施例的IPC栈。
图3显示了根据本发明的实施例的IPC组件IPC指配。
图4显示了根据本发明的实施例的主IPC表。
图5显示了根据本发明的实施例的信道指配的图。
图6显示了突出根据本发明的实施例在IPC客户端初始化例程期间涉及的步骤的图。
图7显示了突出根据本发明的实施例在IPC客户端初始化期间涉及的步骤的图。
图8显示了根据本发明的实施例的IPC封装的第一层面的图。
图9显示了突出在根据本发明的实施例的IPC组件初始化期间采取的步骤的图。
图10显示了突出在根据本发明的实施例的组件初始化期间采取的步骤的图。
图11显示了根据本发明的实施例,在IPC客户端和IPC服务器之间的IPC数据传递。
图12显示了根据本发明的实施例的IPC数据报头的图。
图13显示了在根据本发明的实施例的IPC数据请求期间采取的步骤的图。
图14显示了根据本发明的实施例的IPC网络。
图15显示了根据本发明的电子设备,诸如无线电通信设备。
图16和17显示了根据本发明实施例的出站流的图。
图18显示了根据本发明的实施例的入站流的图。
图19显示了根据本发明实施例的IPC网络的图。
图20显示了一流程图,其突出了在根据本发明执行业务合成时采取的一些步骤。
具体实施方式
尽管由申请文件通过限定本发明特征的权利要求(其被认为是新颖的)作出结论,但是应当认为,通过以下说明并结合附图可以更好地理解本发明。
本发明的IPC对于在系统中操作的不同处理器所需要的彼此通信提供了支持。例如,在包括应用处理器(AP)和基带处理器(BP)的无线电通信设备中使用的双处理器(或多处理器)无线电体系结构中,IPC以有效的方式对于处理器所需要的彼此通信提供了支持。IPC提供该支持,而无需对AP或BP的设计施加任何约束。
IPC允许采取IPC作为其处理器间通信栈的任何处理器在一起共存并且操作,就好像这两个处理器实际上在共享公共操作系统和存储器的相同处理器内核上运行一样。随着在通信设备中使用多个处理器成为规范,本发明的IPC提供了不同处理器之间的可靠通信。
IPC硬件提供了将不同处理器与IPC网络结合的物理连接。在本发明的一个实施例中,数据分组优选地在不同主机之间异步地传输。连接至IPC网络的处理器使它们的物理和逻辑地址被静态地或动态地指配(例如,IPC地址)。而且,由于在本发明的一个实施例中,数据分组可以在IPC网络内部的任一方向中流动,所以它们需要携带其试图达到的处理器的目的地地址。优选地,还使用现有的循环冗余检查(CRC)技术来检查分组。尽管本发明的IPC网络的网络活动可能与在使用IP传输层的互联网网络(例如传输控制协议/互联网协议(TCP/IP)网络)上建立的那些网络活动有些相似之处,但是本发明的IPC不像TCP/IP网络中那样被划分为具有网关的较小网络。
现在参考图1,显示了根据本发明的实施例的IPC网络100。IPC网络100包括:多个IPC客户端102-106,以及IPC服务器108,该IPC服务器108使用不同的IPC物理链路联接至IPC客户端102-106,其中作为说明性的例子,不同的IPC物理链路诸如共享的存储器110、通用异步接收机/发射机(UART)112和通用串行总线(USB)114。应当注意,对于本发明的IPC,IPC客户端102-106可以与当前IPC服务器108协商以交换角色。如果IPC客户端102-106协商成为IPC服务器并且成为新的IPC服务器,那么给定IPC服务器中的改变,全部剩余的IPC客户端被指令改变服务器的IP地址。
在图2中,显示了根据本发明的实施例的IPC服务器108(或IPC客户端102-108)的IPC栈200。IPC栈200被设计为集成在操作系统(OS)中并且提供对于组件业务量的处理器间通信需求的支持。IPC栈由以下三个主层构成:
(1).IPC表示管理器(202)-这个层用于翻译不同系统组件(例如,软件线程)之间的不同数据类型。
(2).IPC会话管理器(204)-这个层是对于IPC栈和全部系统组件之间的传入/传出IPC业务量的中央储存库。IPC会话管理器204具有若干功能:对于共同参与的IPC组件指配组件ID;判定IPC数据是否需要被封装;路由IPC数据,终止IPC业务量;为IPC处理器设置保持器;提供IPC地址,指配及鉴权IPC客户端等。
IPC传输层Transport Layer(208)-位于IPC会话管理器(层)204之内,IPC传输层208提供了非常基本的循环冗余检查,用于在不同处理器之间传输IPC数据。另外,IPC传输层208负责将IPC消息路由至它们在IPC网络100上的最终目的地。传输层的路由功能仅仅在IPC服务器上启用。
IPC路由器模块(210)-将IPC数据传输至目的组件(未显示)。传入IPC消息除了携带其它信息之外,还携带始发者组件ID、IPC消息操作码,诸如音频和调制解调器。注意到,根据本发明的实施例,唯一的操作码被指配给每一组件/软件线程(例如,参见图5中的502),诸如联接至IPC网络的音频和调制解调器。IPC会话管理器204依靠路由器模块210来将IPC数据发送到正确的(一个或多个)组件。
(3).设备接口层(206)-负责管理IPC物理到逻辑的IPC信道。它的主要功能是完全抽取IPC硬件,使得栈IPC变为独立于硬件。设备接口层206管理下面的IPC链路的物理带宽,以支持全部IPC逻辑信道。在传入路径中,设备接口层206从不同的物理信道110-114拾取数据并将它们向上传递到IPC栈的其它部分。在传出路径上,设备接口层206通过将IPC逻辑信道发送到合适的物理信道上,而管理它们的数据负载。设备接口层206还在将属于相同IPC信道的IPC分组发送至IPC硬件之前,链接它们。在IPC会话管理器204和IPC设备接口层206之间预协商信道需求。设备接口层206规定了硬件端口,该硬件端口进一步给IPC客户端102-106提供了设备接口。
参考图3,显示了IPC组件ID指配例程。任何希望参与IPC通信的新组件必须首先在步骤302向它的IPC会话管理器(例如,会话管理器204)请求IPC识别编号(ID)。然后,本地会话管理器(例如,位于组件所联接至的客户端中的会话管理器)将向IPC服务器的会话管理器警告新的IPC组件,并且在步骤304中将提供组件ID指配。根据本发明的实施例,组件ID是动态的,并且可以由会话管理器(例如,服务器的会话管理器)重新指配。主IPC服务器位置最有可能在主AP上。每一IPC节点优选地将具有唯一的IPC节点ID,并且会话管理器将在其数据库中对于每一参与的IPC节点保存以下信息:
-IPC节点类型:例如,特定的BP或AP、无线局域网(WLAN)AP等
-IPC地址:IPC节点的IPC地址。
-数据类型:IPC节点的数据类型
-操作码列表:这是组件已经预订的全部IPC消息操作码的列表。
-组件ID:全部组件ID的列表。
现在参考图4,其中显示了IPC栈以及全部主IPC表。动态路由表402包括:节点类型、IPC地址/端口#信息、数据类型和预订列表。组件路由表404包括:将操作码信息与预订至每个特定操作码的全部组件链接的信息。最后,信道资源表406包括:每个信道ID与物理信道ID列表的链接。
在图5中,显示了根据本发明的IPC栈如何为诸如软件线程(例如音频等)这样的组件提供IPC信道的框图。在步骤504中,组件502首先请求IPC信道。在步骤506中,图5中显示的会话管理器在使用所定义的API与设备层协商组件的请求。然后设备层(设备接口)请求硬件资源,例如数据信道508。在步骤510中,图5所示的会话管理器响应于该请求,向请求者授权IPC信道。接下来,组件502在指配的信道508上发送其数据。然后设备层将数据转发至IPC网络。逻辑到物理信道ID的映射是IPC设备接口的功能。
现在参考图6,IPC客户端初始化中的第一个步骤是在IPC客户端602和IPC服务器604之间发送登记请求(步骤606)。然后在步骤608中,IPC服务器604鉴权IPC客户端602的请求。随后在步骤610中,将IPC地址发送到IPC客户端并完成登记。在步骤612中,IPC客户端的会话管理器将其动态路由表的复本发送至IPC服务器。
图7中显示了在IPC客户端初始化处理期间采取的更具体的步骤。在步骤702中,客户端会话管理器(在表中显示为会话(客户端))将配置请求发送至IPC服务器的会话管理器(在表中显示为会话(服务器))。在步骤704中,由IPC服务器的会话管理器请求鉴权。然后,在步骤706中执行在IPC客户端和IPC服务器之间的鉴权。
配置请求中的参数包括:节点类型和数据类型。会话服务器响应于步骤702中的配置请求,为请求者指配IPC地址。如果不存在用于请求者的动态路由表,它还建立该动态路由表。然后,在步骤708中它向请求者发送配置指示。配置指示参数包括:服务器的IPC地址和客户端的新指配的IPC地址。
响应于接收到配置指示,附装于会话客户端的组件可以向客户端会话管理器请求控制/数据。然后在步骤710中,会话客户端将配置指示确认消息发送至会话服务器。“配置指示确认”消息没有参数。一旦接收到步骤710中的配置指示确认消息,会话服务器就可以启动到新配置的会话客户端的IPC流。然后在步骤712和714中,会话服务器将配置更新消息发送至会话客户端。这导致在步骤716和718中,图7中显示的这两个会话客户端更新它们各自的动态路由表(未显示)并将配置更新确认消息发送至会话服务器。一旦接收到配置更新确认消息,会话服务器就确定全部IPC参与者都已经被更新。
当分组被IPC会话管理器接收时,它成为包括源组件ID、目的地ID、信道ID和BP或AP类型的数据形式。如果没有插入目的地ID,那么IPC会话管理器将添加目的地组件ID。IPC会话管理器还将插入IPC地址。是IPC会话管理器根据接收的消息操作码而发现目的地ID。目的地ID基于查询表。每一次组件预订新的IPC消息操作码(例如,音频组件通过向IPC会话管理器发送请求而预订音频消息)时,这个查询表都被动态更新。
在图8中,显示了根据本发明的实施例,在组件和其IPC会话管理器之间的通用目的地ID发现序列期间的事件顺序。在步骤802中,组件发送其源ID(但没有目的地ID)、目的地BP或AP的类型、以及包括报头和数据的IPC数据。在步骤804中,IPC会话管理器查看IPC数据报头操作码和目的地BP或AP的类型,以查询相应的动态路由表并找到正确的目的地地址。在步骤806中,IPC会话管理器插入组件的IPC地址并将其向下发送至设备层。
在图9中,显示了在IPC组件初始化期间采取的典型步骤。一旦BP已经由图9中所示的IPC服务器配置,它就允许组件,诸如组件902预订不同的业务。在步骤904中,组件将自己预订功能,诸如音频、视频等。然后,组件预订信息被发送至IPC会话管理器,用于组件ID的创建(如果还没有指配ID)并为特定的IPC地址创建或更新动态路由表(步骤906)。在步骤908中,会话管理器以来自步骤906的信息更新IPC服务器。在步骤912中,动态路由表的确认被IPC服务器发送至IPC客户端。一旦服务器被警告,新的动态路由表就在步骤910中更新并广播至全部参与的处理器。
在图10中,在组件(客户端)1002、也称为客户端会话管理器的会话(客户端)1004以及也称为服务器会话管理器的会话(服务器)1006之间,显示了相同的组件初始化过程。由组件(客户端)1002发送步骤1008中的组件配置请求。响应于该请求,客户端会话管理器1004与其设备层(未显示)协商逻辑信道。客户端会话管理器1004还指配组件ID并将新的操作码列表添加至其动态路由表(未显示)。在步骤1010中,客户端会话管理器1004发送配置应答,该配置应答包括组件ID和信道ID作为参数。响应于该配置应答,组件(客户端)1002从客户端的会话管理器1004接收其ID和信道ID。
一旦客户端会话管理器1004在步骤1010应答步骤1008中的配置请求,客户端会话管理器1004就在步骤1012中发送配置更新请求至会话服务器1006。用于配置更新请求的参数是动态路由表中已经作出的任何新的改变。会话管理器对于该IPC地址更新动态路由表。然后,在步骤1016中服务器会话管理器1006向全部IPC客户端发送配置更新,而它在步骤1014中向IPC客户端发送配置更新指示。服务器的会话管理器1006确定IPC服务器已经利用被发送的改变而更新了其路由表。
步骤1016的配置更新消息包括动态路由表作为(一个或多个)参数,在步骤1018中,会话服务器1006在该配置更新消息中更新动态路由表并发送配置更新确认消息。然后,会话服务器1006确定全部IPC参与者已经被更新。
IPC会话管理器确定传入和传出IPC分组的路由路径。传出分组的路由由组件的IPC地址确定。如果发现目的地地址是本地处理器的地址,那么在会话管理器内部执行IPC到操作系统(OS)的映射。如果发现目的地地址是本地IPC客户端的地址,那么分组被发送至IPC栈,用于进一步处理(例如,封装)。注意,如果目的地组件与发送IPC分组的组件位于相同的处理器上,那么不需要封装并且通过正常的OS消息呼叫(例如,Microsoft Message Queue等)传递该分组。以这种方式,组件不必担心修改它们的消息输入方案。它们仅需要将它们的消息登入方法从OS特定的设计改变为IPC呼叫。
对于传入的分组,如果消息的目的地地址不等于IPC服务器的地址,那么传入的分组被路由至合适的IPC客户端。传入的分组的路由由IPC服务器的会话管理器处理。否则,消息被取决于组件目的地ID是否被设置为有效组件ID或OXFF而被转发至正确的一个组件或多个组件。
IPC路由器模块将IPC数据传输至目的地组件。传入的IPC消息除了其它信息之外,还携携带始发者组件ID和IPC消息操作码,例如音频、调制解调器等的操作码。IPC会话管理器依赖于它的组件路由表,发送IPC数据至正确的(一个或多个)组件。动态路由表和组件路由表都由IPC服务器/客户端更新。
在加电期间,每一组件必须将自己登记至它的会话管理器,以获得IPC组件ID。另外,它还必须预订传入的IPC消息,诸如音频、调制解调器等。该消息被存储在组件路由表中,以供IPC会话管理器使用。
如图11所示,当组件1102在步骤1104将其数据请求发送至IPC会话管理器时,在目的地IPC节点(例如,BP)进行检查。如果IPC节点不支持IPC消息操作码,则错误应答返回至组件1102。除了错误应答,IPC会话管理器还返回对于能够接收该特定操作码的全部IPC节点的更新。由组件决定它将消息改发至哪个IPC节点。如果会话管理器确定目的地组件位于IPC网络中而不是本地处理器中,那么在数据在IPC网络上发送之前,IPC会话管理器1106以IPC报头信息封装数据。
在图12中,显示了根据本发明的实施例的IPC数据报头1202。该报头包括:源IPC地址和目的地IPC地址、源端口、由IPC路由器提供的目的地端口、由IPC传输器提供的长度及检查和信息、以及由会话管理器提供的源IPC组件和目的地IPC组件。消息操作码、消息长度和IPC数据由组件1204提供。
图13中显示了根据本发明的实施例的典型的IPC数据请求。在步骤1302中,组件发送更新请求。组件更新参数优选地包括节点类型和操作码。组件搜索支持其目的地操作码的节点类型。如果节点类型等于0xFF,则会话管理器将组件信息发送至关于全部IPC参与者的全部节点表。如果操作码字段等于0xFF,则会话管理器向组件发送属于特定节点类型的操作码列表。另一方面,如果操作码具有特定的值,则会话管理器向组件发送真值或假值,其对应于节点类型支持还是不支持该特定操作码。
在步骤1304,组件更新指示被发送至组件。如果节点类型等于0xFF,则节点表被返回至组件。如果操作码字段等于0xFF,则操作码的列表被返回至组件。然而,如果操作码是特定的值,则返回真或假消息。在步骤1306,作出组件数据请求。关于组件数据请求的参数包括:节点类型、IPC消息操作码、IPC消息数据、信道ID和组件ID。在组件数据请求中,会话管理器检查节点类型,以确定是否支持该操作码。如果节点类型不支持该操作码,则在步骤1308发送组件更新指示。然而,如果节点类型支持该操作码,则在步骤1310将数据请求发送至设备层。数据请求参数包括IPC消息、信道ID和IPC报头。
设备层调度基于信道ID发送数据请求消息。设备层基于端口#报头信息选择IPC硬件。一旦提交了数据,就在步骤1312中将数据确认消息发送至会话管理器。在步骤1314,会话管理器将组件数据确认消息发送至组件。组件可以在发送更多的IPC消息之间等待该确认。一旦接收到该数据确认,组件就可以发送下一IPC消息。
在步骤1316,设备层发送数据指示消息,其包括:IPC消息数据和IPC报头。会话管理器检查消息的目的地IPC报头,并且如果该报头与本地IPC地址不同,则会话管理器发送(路由)该消息至正确的IPC节点。在步骤1310,会话管理器发送数据请求至具有保留信道ID的设备层。会话管理器检查目的地组件ID,并且如果它等于0xFF,则路由该消息至预订了该操作码的全部组件。在步骤1318,会话管理器发送组件数据指示消息,并且组件接收IPC数据。
IPC栈为了通信而使用在全部参与的IPC节点之间的保留控制信道。在加电时,IPC服务器的会话管理器使用这个链路,以将消息广播至IPC客户端或者反之。在正常操作期间,这个控制信道被用于在全部AP和BP之间携带控制信息。
在图14中,显示了位于IPC栈和IPC硬件之间的控制信道1402—1406。当在不同的IPC硬件之间发送数据时,控制信道信息1408也同数据分组1410一起被发射。IPC客户端初始时在IPC控制信道上广播它的配置请求。IPC服务器接收该广播并以该客户端的IPC地址作出响应。这个IPC地址变为与该特定处理器(AP或BP)的动态路由表相关联。
IPC应用程序接口(APIs)
下面列出了用于本发明的IPC协议的一些API。
1).到IPC会话管理器的组件接口:
CreateComponentInst()
在IPC会话管理器中创建组件数据库。在属于IPC地址的动态数据路由表中使用诸如组件数据类型这样的信息以及对消息操作码的预订。
OpenChannelKeep()
打开IPC信道,并且如果一条IPC信道可用,则发出ChannelGrant()。保留信道,直至发出CloseChannel()。组件将QoS请求发送至IPC会话管理器。如果还没有指配组件ID(例如,ChannelGrant()),则IPC信道指配组件ID。
OpenChannel()
打开IPC信道,并且如果一条IPC信道可用,则发出ChannelGrant()。参数与用于OpenChannelKeep()的相同。
OpenChannelWThru()
打开IPC信道,并且如果一条IPC信道可用,则发出ChannelGrant()。这是对于写入通过信道的请求,其表示在这条信道上关断封装(例如,Non UDP AT命令)。
CloseChannel()
请求关闭IPC信道。组件不再需要该信道。然后释放资源。
ChannelGrant()
信道被授权给请求者。如果还没有指配信道ID,则由IPC会话管理器指配信道ID。
ChannelError()
发生了信道错误。信道被关闭并且通知请求者。
ChannelDataIndication()
向请求者警告要传送信道上的数据。这个消息由IPC表示管理器发送至目标组件。它还包括控制信道数据。
DataChannelRequest()
请求者希望在打开的信道上发送数据。它还包括控制信道数据。
ChannelClose()
请求关闭IPC信道。信道不活动计时器期满,并且与超时相关联的信道关闭。它也可能是由于信道错误而引起的。
2).到/自IPC设备接口的IPC会话管理器
OpenChannel()
打开逻辑IPC信道,并且如果一条逻辑IPC信道可用,则发出ChannelGrant()。IPC会话管理器将信道优先权请求发送至IPC设备接口管理器。
CloseChannel()
请求关闭IPC逻辑信道。组件决定不再需要该信道。
ChannelGrant()
一条逻辑信道被授权给请求者。
ChannelError()
发生了信道错误(例如,在传入数据上的CRC故障或者物理信道故障)。
ChannelDataIndication()
请求者被警告要发送信道上的数据。
DataChannelRequest()
请求者希望在逻辑信道上发送数据。
ChannelClose()
请求关闭IPC信道。信道不活动计时器期满,并且与超时相关联的信道关闭。它也可能是由于信道错误而引起的。
3).到IPC表示管理器的IPC会话管理器
ChannelDataIndication()
请求者被警告要传送信道上的数据。该信息要以正确的数据格式转发至目标组件。
4).IPC硬件/IPC栈接口
OpenChannel()
打开物理IPC信道,并且如果一条物理IPC信道可用,则发出ChannelGrant()。IPC会话管理器将信道优先权请求发送至IPC硬件。
CloseChannel()
请求关闭IPC物理信道。该组件不再需要该信道。
ChannelGrant()
物理信道被授权给请求者。
ChannelError()
发生信道错误(例如,传入数据上的CRC故障或物理信道故障)。
ChannelDataIndication()
请求者被警告要发送信道上的数据。
DataChannelRequest()
请求者希望在物理信道上发送数据。
ChannelClose()
请求关闭IPC信道。信道不活动计时器期满,并且与超时相关联的信道关闭。它也可能是由于信道错误而引起的。
在图15中,显示了电子设备的框图,该电子设备诸如是无线电通信设备(例如,蜂窝电话等)1500,其具有使用IPC网络彼此通信的基带处理器(BP)1502和应用处理器(AP)1504。本发明的IPC协议提供了在诸如通信设备这样的系统中的多个处理器之间的通信。IPC允许移动应用(MA)客户端(例如iDENTM WLAN)登记到MA服务器,诸如个人通信系统(PCS)应用,并且为两个MA提供了自由通信的手段而对于取决于其自身MA内部的软件体系结构、操作系统、软件等没有任何限制。
IPC协议允许将任何IPC相符的MA动态添加到用于通信的IPC链路中。于是,形成了IPC网络而无需依赖任何编译时间或者无需消耗任何其它软件。本发明的IPC给出了关于软件组件与IPC栈通信的标准途径,并且栈之下的硬件也被抽取,使得组件可以选择不同的链路用来通信。
现在参考图16,显示了三个组件,诸如软件线程1602、1604和1606,还显示了它们如何建立出站流。例如软件现场1602发送对于预定QoS1608的请求1612并提交它的操作码预订列表1610。接下来,响应于消息1618,软件线程1602被指配了信道ID 1614和组件ID 1616。根据本发明的实施例,诸如软件线程1602、1604和1606这样的组件被取决于它们的需求而指配了IPC硬件资源。可以取决于系统需求而动态安装或卸载组件1602、1604和1606。
在图17中,组件1602、1604和1606在它们所指配的信道上发送IPC数据,所述信道诸如是用于软件线程1602的信道1702。组件1602、1604和1606提交它们的数据以及目标IPC节点,尽管当没有指定节点时组件也可以将它们的消息广播至全部IPC节点。组件1602、1604和1606不需要知道目的地组件ID,也无需知道它们相关联的信道以及它们的IPC地址。关于入站流,消息操作码识别组件。例如,在图18中,组件1602、1604和1606由消息操作码识别。通过先前讨论的组件路由表发现组件ID。IPC会话管理器将传入的数据路由到已经预订了消息中的IPC操作码的全部组件。
高级业务合成
现在参考图19,显示了IPC网络的图,其包括正在请求新业务的第一客户端1902、服务器1908以及多个其它客户端1904、1906、1910和1912。在根据本发明的实施例的高层面业务合成的一个例子中,正在请求的客户端1902需要使用相片业务,该业务请求使用照相机和JPEG应用程序。利用本发明的高层面合成,正在请求相片业务的客户端(或组件)1902能够“教导”它的IPC会话管理器(图19中未显示)“新”业务意味着什么(例如,每一业务是IPC操作码或其它ID的列表的合成)。
在这个特定的例子中,为正在请求的IPC客户端1902所请求的新的相片业务给定业务ID(也简称为ID),诸如由IPC服务器1908提供的唯一操作码。IPC服务器的会话管理器(未显示)将保持更高层面的路由表,其中指配给相片业务的业务ID将指向构成相片业务的其它ID(例如,操作码)。当组件或客户端通过发送新的操作码或业务ID到IPC服务器1908而请求组合业务时,IPC服务器1908将等待,直至业务所需要的全部组件(例如,JPEG 1916和相机1914)都已经在返回之前登记至正在请求的组件/客户端1902。
组件或客户端可以动态合成业务并通知IPC服务器1908。这可以通过请求组件或客户端1902发送“组件到IPC”会话管理器API(即,NewService()而实现,其向IPC服务器的会话管理器通知组件/客户端已经装配了包含一个或多个ID的“新”业务,在这个特定实例中,是代表相机和JPEG业务的操作码。IPC服务器1908响应于接收到新业务API而建立用于新组合的业务的业务ID。IPC服务器1908接下来从已经登记的IPC节点中发现包括组合业务的单元(例如,组件、应用程序)。当全部用于组合业务的单元都已经定位时,宣布业务存在并作好准备。
在这个特定实例中,IPC客户端1902将发送新业务API,并建立由IPC服务器1908指配的新业务ID。这个新业务ID将指代用于相机和JPEG应用程序的操作码/ID。用于相片业务的新ID将存储在用于IPC客户端1902和IPC服务器1908的会话管理器中。在IPC服务器1908中,业务ID表将相片业务ID与其用于相机和JPEG应用程序的组成Id(例如,操作码)相链接。尽管已经讨论了相片业务,但是可以请求不同的业务,它们组合多个不同ID。
在IPC体系结构1900中,软件组件可以动态地预订不同业务ID。例如,一个MA上的音频软件组件可以预订与它可以支持的音频相关联的全部操作码。IPC客户端1902记录该组件预订,并将该预订通知给IPC服务器1908。于是,任何MA上的组件仅需要发送它们的IPC数据,该IPC数据伴随有指配给组合业务的特定业务ID。它们不需要预先知道IPC网络上提供什么业务或者哪里支持哪些业务。
IPC网络1900允许组件改变业务定义,而不影响不同MA之间的处理器间通信。另外,组件不需要预先知道业务的概念、在编译时间期间登记业务,也不需要单独地检查业务是否在IPC网络1900上可用。IPC网络1900动态地了解业务并且能够识别业务在网络上的可用性。
参考图20,显示了流程图,其突出了根据本发明的实施例所采取的一些步骤。在步骤2002,组件/客户端,诸如IPC客户端1902请求业务(例如,相片业务)。如果它是新的业务类型,则IPC客户端1902可以通过发送新业务API而向IPC网络教导该业务,其中新业务API定义了新业务所包含的IPC操作码/ID的合成。在这个例子中,在步骤2004,IPC会话管理器确定相片业务包括与相机和JPEG业务相关联的操作码。IPC客户端1902使用NewService API将这个信息发送到IPC服务器1908,IPC服务器1908接下来向IPC客户端1902提供定义新相片业务的新操作码或业务ID。然后,IPC客户端1902可以通过将所指配的ID发送至IPC服务器1908而请求相片业务。
一旦已经确定了对于“业务”的操作码列表,IPC服务器1908在步骤2006中等待,直至全部的所请求业务组件都已经登记至IPC网络1900。一旦全部的所请求业务组件(例如,JPEG 1916和相机1914)都已经登记,则IPC服务器1908令IPC客户端1902使用所请求的相片业务。IPC服务器1908可以将消息发送至每一个所需的组件,这些所需的组件请求它们成为组合业务(例如,相片业务)的一部分。组件,诸如JPEG应用程序1916和相机1914可以接受或拒绝成为该业务的一部分。如果组件不接受称为组合业务的一部分,那么IPC服务器1908将寻找支持该业务的另一组件。
一旦IPC服务器1908已经能够得到来自全部所需组件,诸如JPEG1916和相机1914的许可,那么IPC服务器1908让正在请求的客户端1902知道它可以继续前进并使用它在步骤2008中已经请求的业务。在IPC客户端1902已经结束使用相片业务之后,它将消息发送至IPC服务器1908,后者将释放相机1914和JPEG业务1916,以供其它组件/客户端使用。如果作为业务的一部分的组件,诸如相机1914或JPEG业务1916在正在由请求的客户端1902使用业务期间由于任何原因而掉线,则IPC服务器1908将尝试定位替换,如果它不能及时地找到一个替换,那么正在请求的组件/客户端1902(或组件)停止使用业务。
IPC网络1900动态发现组件业务并支持业务概念的优点包括:组件开发独立于IPC栈操作的益处。而且,组件可以动态地合成“业务”,并且组件可以具有相同业务的改变的不同定义。作为例子,音频业务的概念对于iDEN BP和PCS BP可以是不同的。IPC仍然可以通过允许经由IPC网络发送组件而将音频数据路由到任一方,以发现哪个音频业务将更好地服务。
尽管已经说明和描述了本发明的优选实施例,但是可以清楚地看出,本发明不限于此。对于本领域技术人员可以得到多种修改、改变、变型、替换和等同物,而不脱离所附权利要求中所限定的本发明。
Claims (10)
1.一种处理器间通信(IPC)网络,包括:
IPC服务器;和
联接至所述IPC服务器的IPC客户端,其中所述IPC客户端可以动态请求使用新的组合业务,所述新的组合业务组合了在所述IPC网络中可用的多个业务。
2.根据权利要求1所述的IPC网络,其中所述IPC客户端通过向所述IPC服务器发送消息而动态地请求所述新的组合业务,所述消息向所述IPC服务器通知组成所述新的组合业务的所述多个业务。
3.根据权利要求2所述的IPC网络,其中所述IPC客户端向所述IPC服务器发送应用程序接口(API)消息,所述消息向所述IPC服务器通知哪些多个业务组成所述新的组合业务。
4.根据权利要求2所述的IPC网络,其中所述IPC客户端将用于构成所述新的组合业务的所述多个业务中的每一个业务的ID发送至所述IPC服务器。
5.根据权利要求1所述的IPC网络,其中在所述IPC网络中可用的每一业务都具有指配给它们中每一个的操作码,并且所述新的组合业务被所述IPC服务器指配了唯一的操作码。
6.一种用于在具有IPC客户端和IPC服务器的处理器间通信(IPC)网络中提供业务合成的方法,包括以下步骤:
由所述IPC客户端请求新业务,所述新业务组合了多个业务的使用;以及
将ID指配给所述新业务,所述新业务链接至所述新业务所需的多个业务。
7.根据权利要求6所述的方法,其中所述IPC服务器将指配给所述新业务的所述ID发送至所述IPC客户端。
8.根据权利要求6所述的方法,其中所述IPC客户端将API发送至所述IPC服务器,所述API向所述IPC服务器通知哪些多个业务组成所述新业务。
9.根据权利要求7所述的方法,其中所述IPC服务器将指配给所述新业务的所述ID链接至与所述新业务所需的所述多个业务相关联的ID。
10.根据权利要求9所述的方法,其中在允许所述IPC客户端使用所述新业务之前,所述IPC服务器等待,直至构成所述新业务的全部的所述多个业务都可用为止。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/677,881 US20050091306A1 (en) | 2003-10-02 | 2003-10-02 | Interprocessor communication protocol with high level service composition |
US10/677,881 | 2003-10-02 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101416470A true CN101416470A (zh) | 2009-04-22 |
Family
ID=34465434
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2004800289393A Pending CN101416470A (zh) | 2003-10-02 | 2004-09-20 | 具有高层面业务合成的处理器间通信协议 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20050091306A1 (zh) |
KR (1) | KR100787850B1 (zh) |
CN (1) | CN101416470A (zh) |
WO (1) | WO2005038558A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101841925A (zh) * | 2010-04-21 | 2010-09-22 | 华为终端有限公司 | 一种双中央微处理器间的通信方法、装置及系统 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004265193A (ja) * | 2003-03-03 | 2004-09-24 | Canon Inc | 情報処理方法、情報処理装置、サーバ装置の制御方法、サーバ装置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3490473B2 (ja) * | 1993-02-17 | 2004-01-26 | 松下電器産業株式会社 | プロセッサ間通信システム |
US5835779A (en) * | 1996-03-15 | 1998-11-10 | Lucent Technologies Inc. | Message transmission among processing units using interrupt control technique |
US6240479B1 (en) | 1998-07-31 | 2001-05-29 | Motorola, Inc. | Method and apparatus for transferring data on a split bus in a data processing system |
JP2000099332A (ja) * | 1998-09-25 | 2000-04-07 | Hitachi Ltd | 遠隔手続き呼び出し最適化方法とこれを用いたプログラム実行方法 |
US6747970B1 (en) * | 1999-04-29 | 2004-06-08 | Christopher H. Lamb | Methods and apparatus for providing communications services between connectionless and connection-oriented networks |
WO2001020476A1 (en) * | 1999-09-16 | 2001-03-22 | General Electric Company | A virtual modular relay device |
US7051108B1 (en) * | 2000-12-21 | 2006-05-23 | Emc Corporation | Method and system of interprocess communications |
US20020161844A1 (en) | 2001-02-27 | 2002-10-31 | Overtoom Eric J. | Method and apparatus for peer to peer communication over a master slave interface |
US7064766B2 (en) * | 2001-10-18 | 2006-06-20 | Microsoft Corporation | Intelligent caching data structure for immediate mode graphics |
US20040006595A1 (en) * | 2002-07-03 | 2004-01-08 | Chiang Yeh | Extended features to conferencing system using a web-based management interface |
US7140002B2 (en) * | 2002-11-07 | 2006-11-21 | International Business Machines Corporation | Method and system for automatic code generation accessing functionality in a remote process |
-
2003
- 2003-10-02 US US10/677,881 patent/US20050091306A1/en not_active Abandoned
-
2004
- 2004-09-20 WO PCT/US2004/030641 patent/WO2005038558A2/en active Application Filing
- 2004-09-20 KR KR1020067008545A patent/KR100787850B1/ko not_active IP Right Cessation
- 2004-09-20 CN CNA2004800289393A patent/CN101416470A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101841925A (zh) * | 2010-04-21 | 2010-09-22 | 华为终端有限公司 | 一种双中央微处理器间的通信方法、装置及系统 |
WO2011131118A1 (zh) * | 2010-04-21 | 2011-10-27 | 华为终端有限公司 | 一种双中央微处理器间的通信方法、装置及系统 |
CN101841925B (zh) * | 2010-04-21 | 2012-10-17 | 华为终端有限公司 | 一种双中央微处理器间的通信方法、装置及系统 |
US8964927B2 (en) | 2010-04-21 | 2015-02-24 | Huawei Device Co., Ltd. | Method, device and system for communication between double central processing units |
Also Published As
Publication number | Publication date |
---|---|
KR100787850B1 (ko) | 2007-12-27 |
WO2005038558A3 (en) | 2009-04-09 |
WO2005038558A2 (en) | 2005-04-28 |
KR20060080242A (ko) | 2006-07-07 |
US20050091306A1 (en) | 2005-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8326918B2 (en) | Interprocessor communication protocol | |
US20050010925A1 (en) | Interprocessor communication protocol with smart streaming port | |
US8209423B2 (en) | Mobile server with multiple service connections | |
CN104980427A (zh) | 用于内容中心网络中的简单的服务发现的系统和方法 | |
CN113826424B (zh) | 用于向网络提供外部业务的实体 | |
CN100530161C (zh) | 提供端口的动态专用的处理器间通信网络 | |
CN104980426A (zh) | 用于内容中心网络中的动态名称配置的系统和方法 | |
CN110178354A (zh) | 消息会话中继协议/超文本传输协议文件传输 | |
US7356594B2 (en) | Interprocessor communication protocol providing intelligent targeting of nodes | |
JP2007526544A5 (zh) | ||
CN100481771C (zh) | 用于拦截网络访问的系统及其方法 | |
CN113424608A (zh) | 用于为网络提供外部服务的实体 | |
CN101416470A (zh) | 具有高层面业务合成的处理器间通信协议 | |
US20030167341A1 (en) | Communications system, communications method, network manager, and transfer device | |
US20050027824A1 (en) | Interprocessor communication protocol providing guaranteed quality of service and selective broadcasting | |
JP2010146246A (ja) | マルチエージェントシステム用フレームワークコンピュータプログラム、ネットワークシステム、及びエージェント間通信方法 | |
EP2053823A1 (en) | Mobile server with multiple service connections | |
US20030147383A1 (en) | Object communication services software development system and methods | |
US20060047854A1 (en) | Active node, and contents transfer system and method using the active node |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20090422 |