书签 分享 收藏 举报 版权申诉 / 18

双CPU通信方法、系统和片上系统芯片.pdf

  • 上传人:1****2
  • 文档编号:4605051
  • 上传时间:2018-10-22
  • 格式:PDF
  • 页数:18
  • 大小:1.02MB
  • 摘要
    申请专利号:

    CN201310608631.7

    申请日:

    2013.11.25

    公开号:

    CN104657326A

    公开日:

    2015.05.27

    当前法律状态:

    实审

    有效性:

    审中

    法律详情:

    专利申请权的转移IPC(主分类):G06F 15/163登记生效日:20170214变更事项:申请人变更前权利人:重庆重邮信科通信技术有限公司变更后权利人:锐迪科(重庆)微电子科技有限公司变更事项:地址变更前权利人:400065 重庆市南岸区黄桷垭堡上园1号变更后权利人:401336 重庆市南岸区茶园玉马路8号软件孵化园1楼|||实质审查的生效IPC(主分类):G06F 15/163申请日:20131125|||公开

    IPC分类号:

    G06F15/163; G06F12/08

    主分类号:

    G06F15/163

    申请人:

    重庆重邮信科通信技术有限公司

    发明人:

    陈俊华; 徐小庆

    地址:

    400065重庆市南岸区黄桷垭堡上园1号

    优先权:

    专利代理机构:

    北京集佳知识产权代理有限公司11227

    代理人:

    王宝筠

    PDF完整版下载: PDF下载
    内容摘要

    本发明实施例涉及嵌入式设备技术领域,公开了一种双CPU通信方法、系统和片上系统芯片。其中,该方法包括:接收运行在第一CPU上的第一应用程序通过API传递的待发送给所述第二CPU的数据;将第一虚拟数据通道的状态更新为发送态;将所述待发送给所述第二CPU的数据进行组装,并将组装后得到的数据放入所述第一虚拟数据通道独享的第一缓存区;判断运行在所述第一CPU上的其它应用程序的虚拟数据通道的状态是否均不为发送态,如果是,向所述第二CPU发送中断信号以通知所述第二CPU读取所述第一缓存区中的数据。实施本发明实施例,应用程序可以并行的向对方CPU发送数据,并且避免频繁的发送中断信号。

    权利要求书

    1.  一种双CPU通信方法,其特征在于,所述双CPU包括第一CPU和第二CPU,所述方法包括:
    接收运行在第一CPU上的第一应用程序通过应用程序接口API传递的待发送给所述第二CPU的数据;
    将第一虚拟数据通道的状态更新为发送态;所述第一虚拟数据通道是所述第一应用程序独享的虚拟数据通道;
    将所述待发送给所述第二CPU的数据进行组装,并将组装后得到的数据放入所述第一虚拟数据通道独享的的第一缓存区;
    判断运行在所述第一CPU上的其它应用程序的虚拟数据通道的状态是否均不为发送态,如果是,向所述第二CPU发送中断信号以通知所述第二CPU读取所述第一缓存区中的数据。

    2.
      根据权利要求1所述的方法,其特征在于,在所述接收所述第一CPU控制的第一应用程序通过应用程序接口传递的待发送给所述第二CPU的数据的步骤之前,所述方法还包括:
    接收所述第一应用程序在初始化时通过API发送的创建虚拟数据通道的请求;
    为所述第一应用程序创建独享的第一虚拟数据通道,并在共享存储器中为所述第一虚拟数据通道配置独享的第一缓存区和第二缓存区;所述第二缓存区用于存放所述第二CPU返回给所述第一应用程序的数据;
    保存所述第一虚拟数据通道、所述第一缓存区和所述第二缓存区的属性信息。

    3.
      根据权利要求2所述的方法,其特征在于,在所述接收所述第一CPU控制的第一应用程序通过应用程序接口传递的待发送给所述第二CPU的数据的步骤之前,所述方法还包括:
    接收第一应用程序通过API发送的请求注册回叫Callback函数的请求;
    为所述第一应用程序注册利用所述第一虚拟数据通道和所述第二缓存区接收所述第二CPU返回的数据的Callback函数。

    4.
      根据权利要求2所述的方法,其特征在于,所述方法还包括:
    检测在预定时间长度T内所述第一缓存区和所述第二缓存区的最大占用率;
    判断所述预定时间长度T内所述第一缓存区或所述第二缓存区的最大占用率是否大于预定的第一门限值,如果是,增大所述第一缓存区或所述第二缓存区的大小;
    判断所述预定时间长度T内所述第一缓存区或所述第二缓存区的最大占用率是否小于预定的第二门限值,如果是,减小所述第一缓存区或第二缓存区的大小。

    5.
      根据权利要求2-4任一项所述的方法,其特征在于,所述方法还包括:
    接收所述第一应用程序通过API发送的请求注销所述第一虚拟数据通道的请求;
    注销所述第一虚拟数据通道,并回收所述第一缓存区和所述第二缓存区。

    6.
      一种双CPU通信系统,其特征在于,所述双CPU包括第一CPU和第二CPU,所述系统包括:
    接收单元,用于接收运行在所述第一CPU上的第一应用程序通过应用程序接口API传递的待发送给所述第二CPU的数据;
    通道状态管理单元,用于将所述第一虚拟数据通道的状态更新为发送态;所述第一虚拟数据通道是所述第一应用程序独享的虚拟数据通道;
    通道数据处理单元,用于将所述待发送给所述第二CPU的数据进行组装,并将组装后得到的数据放入所述第一虚拟数据通道独享的第一缓存区;
    第一判断单元,用于判断运行在所述第一CPU上的其它应用程序的虚拟数据通道的状态是否均不为发送态;
    中断信号发送单元,用于在所述第一判断单元的判断结果为是时,向所述第二CPU发送中断信号以通知所述第二CPU读取所述第一缓存区中的数据。

    7.
      根据权利要求6所述的系统,其特征在于,
    所述接收单元还用于接收所述第一应用程序在初始化时通过API发送的创建虚拟数据通道的请求;
    所述系统还包括:
    创建单元,用于为所述第一应用程序创建独享的第一虚拟数据通道,并在共享存储器中为所述第一虚拟数据通道配置所述第一缓存区和第二缓存区;
    保存单元,用于保存所述第一虚拟数据通道、所述第一缓存区和所述第二缓存区的属性信息。

    8.
      根据权利要求7所述的系统,其特征在于,所述系统还包括:
    检测单元,用于检测在预定时间长度T内所述第一缓存区和所述第二缓存区的最大占用率;
    第二判断单元,用于判断所述预定时间长度T内所述第一缓存区或所述第二缓存区的最大占用率是否大于预定的第一门限值;
    第三判断单元,用于判断所述预定时间长度T内所述第一缓存区或所述第二缓存区的最大占用率是否小于预定的第二门限值;
    缓存管理单元,用于当所述第二判断单元的判断结果为是时,增大所述第一缓存区或所述第二缓存区的大小,以及用于当所述第三判断单元的判断结果为是时,减小所述第一缓存区或所述第二缓存区的大小。

    9.
      根据权利要求7或8所述的系统,其特征在于,
    所述接收单元,还用于接收所述第一应用程序通过API发送的请求注销所述第一虚拟数据通道的请求;
    所述系统还包括:
    通道注销单元,用于注销所述第一虚拟数据通道,并回收所述第一缓存区和所述第二缓存区。

    10.
      一种片上系统芯片,所述片上系统芯片包括双CPU和共享存储器,其特征在于,所述片上系统芯片还包括如权利要求6-9任一项所述的双CPU通信系统。

    说明书

    双CPU通信方法、系统和片上系统芯片
    技术领域
    本发明涉及嵌入式设备技术领域,具体涉及一种双CPU通信方法、系统和片上系统芯片。
    背景技术
    随着移动通信的发展,智能终端软件功能越来越复杂,对CPU(中央处理器)的要求也越来越高,单个CPU已经无法满足系统性能的需求。越来越多的移动终端采用多CPU的架构,特别在移动手机领域,BB(Base Band,基带处理器)+AP(Application Processor,应用处理器)双CPU架构的SoC(System on a Chip,片上系统)已经成为市场主流。同时,如何让双CPU之间实现稳定、高效通信也成为了当前必须解决的课题。
    现有技术中的双CPU通信常用的方案如图1所示,首先在双CPU之间的共享存储器中划分两个区域,这两个区域用来缓存需要发送到对方的数据及数据信息(长度、起始地址等等)。以双CPU分别为CPU A和CPU B为例,当CPU A向CPU B发送数据时,先将需要发送的数据放到“A to B Data”区域中,然后再将数据信息存入到“A to B Data Information”区域,接着CPUA触发中断信号通知CPU B数据发送。CPU B接收到中断以后,到共享存储区中“A to B Data Information”区域先取得数据信息Data Information,然后再到“A to B Data”区域中取走要接收的数据,CPU B向CPU A发送数据同理,不再详述。
    现有技术中的上述方案明显有如下几个缺点:
    1、CPU上运行的都是支持多任务的系统,一般情况下多个应用程序同时在运行,当出现这样的场景:CPU A的一个应用程序正在向CPU B发送数据,CPU A的另一个应用程序也需要向CPU B发送数据时,由于CPU间单向数据通道只有一个,为了不造成通道数据的混乱,第二个有发送请求的应用程序只能等待第一个应用程序数据发送完成以后才能发送自己的数据,即各应用程序需要“排队”,造成应用程序的反应延迟;
    2、为了及时将数据发送到对方,而又由于无法预知多任务系统后续是否有数据要发送,导致应用程序每发送一次数据就要向对方CPU发送一次irq(Interrupt Request,中断请求)信号以通知数据发送事件,造成频繁产生中断,影响CPU的正常运行。
    发明内容
    本发明实施例所要解决的技术问题是提供一种双CPU通信方法、系统和片上系统芯片,用于实现并行的CPU间的通信。
    本发明实施例提供一种双CPU通信方法,所述双CPU包括第一CPU和第二CPU,所述方法包括:
    接收运行在第一CPU上的第一应用程序通过应用程序接口API传递的待发送给所述第二CPU的数据;
    将第一虚拟数据通道的状态更新为发送态;所述第一虚拟数据通道是所述第一应用程序独享的虚拟数据通道;
    将所述待发送给所述第二CPU的数据进行组装,并将组装后得到的数据放入所述第一虚拟数据通道独享的第一缓存区;
    判断运行在所述第一CPU上的其它应用程序的虚拟数据通道的状态是否均不为发送态,如果是,向所述第二CPU发送中断信号以通知所述第二CPU读取所述第一缓存区中的数据。
    相应的,本发明实施例还提供一种双CPU通信系统,所述双CPU包括第一CPU和第二CPU,所述系统包括:
    接收单元,用于接收运行在所述第一CPU上的第一应用程序通过应用程序接口API传递的待发送给所述第二CPU的数据;
    通道状态管理单元,用于将第一虚拟数据通道的状态更新为发送态;所述第一虚拟数据通道是所述第一应用程序独享的虚拟数据通道;
    通道数据处理单元,用于将所述待发送给所述第二CPU的数据进行组装,并将组装后得到的数据放入所述第一虚拟数据通道独享的第一缓存区;
    第一判断单元,用于判断运行在所述第一CPU上的其它应用程序的虚拟数据通道的状态是否均不为发送态;
    中断信号发送单元,用于在所述第一判断单元的判断结果为是时,向所述第二CPU发送中断信号以通知所述第二CPU读取所述第一缓存区中的数据。
    相应的,本发明实施例还提供一种片上系统芯片,所述片上系统芯片包括双CPU和共享存储器,所述片上系统芯片还包括如前所述的双CPU通信系统。
    本发明实施例公开的双CPU通信方法、系统和片上系统芯片,运行在一个CPU上的应用程序可利用其独享的虚拟数据通道向另一个CPU发送数据,由于各个应用程序均拥有独享的虚拟数据通道,其虚拟数据通道的缓存区也是独享的,因此在数据发送过程中,各应用程序可以并行的向对方CPU发送数据而互不干扰,提升数据发送的速度,缩短应用程序的反应延迟,提升用户体验;并且,本实施例中,运行在同一CPU的多个应用程序并行的向对方CPU发送数据时,只需向对方CPU发送一个中断信号即可通知对方CPU读取数据,可以避免频繁的产生中断给对方CPU的运行带来影响。
    附图说明
    为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
    图1是现有技术中的片上系统芯片的结构示意图;
    图2是本发明实施例一提供的双CPU通信方法的流程示意图;
    图3是本发明实施例二提供的双CPU通信方法的流程第一示意图;
    图4是本发明实施例二提供的双CPU通信方法的流程第二示意图;
    图5是本发明实施例二提供的双CPU通信方法的流程第三示意图;
    图6是本发明实施例三提供的双CPU通信系统的结构示意图;
    图7是本发明实施例四提供的双CPU通信系统的结构示意图;
    图8是本发明实施例五提供的片上系统芯片的结构示意图。
    具体实施方式
    下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清 楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
    本发明实施例中提供了一种双CPU通信方法、系统和片上系统芯片,用于克服现有技术中双CPU之间通信存在的数据发送速度慢、频繁产生中断的问题。以下分别进行详细说明。
    本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
    实施例一:
    本发明提供一种双CPU通信方法,该双CPU可包括第一CPU和第二CPU,如图2所示,该双CPU通信方法可包括:
    201、接收运行在第一CPU上的第一应用程序通过API(Application Programming Interface,应用程序接口)传递的待发送给上述第二CPU的数据;
    需要说明的是,第一CPU是双CPU中的任意一个CPU,第二CPU是双CPU中的另一个CPU;
    第一应用程序可以是运行在第一CPU上的任意一个应用程序;
    202、将第一虚拟数据通道的状态更新为发送态;
    其中,上述第一虚拟数据通道是上述第一应用程序独享的虚拟数据通道,在本实施例中,独享的含义为该第一虚拟通道仅可供第一应用程序使用以通过该第一虚拟通道向第二CPU发送数据或接收第二CPU返回的数据;
    203、将上述待发送给上述第二CPU的数据进行组装,并将组装后得到的数据放入上述第一虚拟数据通道独享的第一缓存区;
    与上述的“独享”的含义类似,第一缓存区仅用于存放第一应用程序向第二CPU发送的数据;
    204、判断运行在上述第一CPU上的其它应用程序的虚拟数据通道的状态是否均不为发送态,如果是,执行步骤205,否则结束流程;
    205、向上述第二CPU发送中断信号以通知上述第二CPU读取上述第一缓存区中的数据。
    本实施例提供的双CPU通信方法可用于双CPU之间的数据发送,运行在第一CPU上的应用程序可利用其独享的虚拟数据通道向第二CPU发送数据(反之亦然),由于各个应用程序均拥有独享的虚拟数据通道和缓存区,因此在数据发送过程中,各应用程序可以并行的向对方CPU发送数据而互不干扰,提升数据发送的速度,缩短应用程序的反应延迟,提升用户体验;并且,本实施例中,运行在同一CPU的多个应用程序并行的向对方CPU发送数据时,由于增加了步骤204-205的判断机制,所以只需向对方CPU发送一个中断信号即可通知对方CPU读取数据,可以避免频繁的产生中断给对方CPU的运行带来影响。
    实施例二:
    本发明还提供一种双CPU通信方法,该双CPU可包括第一CPU和第二CPU,如图3所示,该双CPU通信方法可包括:
    301、接收运行在第一CPU上的第一应用程序在初始化时通过API发送的创建虚拟数据通道的请求;
    本实施例中,应用程序在初始化时,可通过API接口发送创建虚拟数据通道的请求;
    302、为上述第一应用程序创建独享的第一虚拟数据通道,并在共享存储器中为上述第一虚拟数据通道配置独享的第一缓存区和第二缓存区;
    在接收到上述请求之后,可以为每个应用程序创建独享的虚拟数据通道,并为该虚拟数据通道分配双向的数据缓存区,同样,缓存区也是由该虚拟数据通道独享的;
    其中,缓存区的大小可以按照但不限于以下两种方式中的任意一种:
    a、应用程序在发送创建请求时,通过API参数指定其虚拟数据通道的缓冲区大小,这种可特别适用于应用程序有特殊要求的场景;
    b、将缓冲区大小设计为多个等级(以5个等级为例,分别为level1—level5),然后根据应用程序的业务数据特点来进行配置,例如AT数据流带宽需求小,这个通道的缓存区大小可配置成level1(最小),而PS IP数据流带宽需求高,缓冲区大小可配置成level5(最大);
    本实施例中,每个应用程序独享一个虚拟数据通道,并且每个虚拟数据通道配置独享的两个缓存区,分别用于存放两个方向上的待发送数据,例如第一缓存区用于存放从第一CPU发往第二CPU的数据,第二缓存区可用于存放第二CPU返回给第一CPU的数据;
    303、保存上述第一虚拟数据通道、上述第一缓存区和上述第二缓存区的属性信息;
    具体地,可以将上述第一虚拟数据通道、上述第一缓存区和上述第二缓存区的属性信息(包括数据长度、读写指针等信息)保存在共享存储器中的通道信息结构体数组(Channel Information Structure)中,当然通道信息并不局限于以结构体数组的形式进行存储,还可以以其他合适的形式进行存储,在此不作具体的限定;
    304、接收第一应用程序通过API发送的请求注册Callback(回叫)函数的请求;
    305、为上述第一应用程序注册利用上述第一虚拟数据通道和上述第二缓存区接收上述第二CPU返回的数据的Callback函数;
    第一应用程序可以利用Callback函数来接收和处理第二CPU返回的存放在第二缓存区的数据;
    需要说明的是,步骤301-303与步骤304-305之间并没有固定的先后顺序,步骤304-305也可以在步骤301-303之前执行,或者也可以是同时执行的;
    306、接收运行在第一CPU上的第一应用程序通过应用程序接口API传递的待发送给上述第二CPU的数据;
    307、将上述第一虚拟数据通道的状态更新为发送态;
    可以在通道信息结构体数组中更新第一虚拟数据通道的状态;
    308、将上述待发送给上述第二CPU的数据进行组装,并将组装后得到的数据放入上述第一虚拟数据通道的第一缓存区;
    在将数据放入第一缓存区之后,可以在通道信息结构体数组中更新第一虚拟数据通道和第一缓存区的属性信息,来指明第一缓存区中存放有待发送给第二CPU的数据;
    309、判断运行在上述第一CPU上的其它应用程序的虚拟数据通道的状态是否均不为发送态,如果是,执行步骤310,否则执行步骤311;
    310、向上述第二CPU发送中断信号以通知上述第二CPU读取上述第一缓存区中的数据;
    如果存在至少一个其它应用程序的虚拟数据通道的状态为发送态,则说明还有其它应用程序要向第二CPU发送数据,则就不必向第二CPU发送中断信号;反之,如果没有任何一个其它应用程序的虚拟数据通道的状态为发送态,则需要向第二CPU发送中断信号以通知其读取数据,具体地,第二CPU在接收到中断信号之后,可以先访问通道信息结构体数组来获取哪些缓存区中存在需要读取的数据以及这些缓存区的地址等信息,从而读取缓存区中存放的数据;
    当存在多个应用程序并行地向第二CPU发送数据时,只有最后一个完成数据存放的应用程序会触发中断向第二CPU发送中断信号,因此可以避免频繁的产生中断给第二CPU的运行带来影响;
    311、清除上述第一虚拟数据通道的发送态。
    在本发明的一些实施方式中,如图4所示,本发明提供的双CPU通信方法还可以包括:
    401、检测在预定时间长度T内上述第一缓存区和上述第二缓存区的最大占用率;
    402、判断上述预定时间长度T内上述第一缓存区或上述第二缓存区的最大占用率是否大于预定的第一门限值,如果是,执行步骤403,否则执行步骤404;
    预定时间长度T可以进行合适的设置,例如设置为2分钟;同样,第一门限值可以进行合适的设定,例如设定为90%;
    403、增大上述第一缓存区或上述第二缓存区的大小;结束流程;
    如果一段时间(T)内第一缓存区(或第二缓存区)的最大占用率较高,则说明可能该应用程序需要发送(或接收)的数据较多,为了提升数据发送(或接收)性能,可以增大该缓存区的大小,具体地,可以是将该缓存区的大小增大一个等级;
    404、判断上述预定时间长度T内上述第一缓存区或上述第二缓存区的最大占用率是否小于预定的第二门限值,如果是,执行步骤405,否则结束流程;
    第二门限值可以进行合适的设定,但其应当小于第一门限值,例如设定为30%;
    405、减小上述第一缓存区或第二缓存区的大小;
    当一段时间(T)内第一缓存区或第二缓存区的最大占用率较低,则说明可能该应用程序在该方向的需要发送的数据较少,为了避免缓存空间的浪费,可以减小该缓存区的大小,具体地,可以是将该缓存区的大小减小一个等级。
    现有技术中,双向数据通道的缓存空间的大小是预先分配的,在实际运行中可能出现某个方向上数据量较大而另一个方向上数据量较少,而导致一个方向上数据通道缓存空间不足,而另一个方向上的数据通道缓存空间浪费的现象,上述步骤401-405可以动态的合理调整虚拟数据通道的缓存区的大小,避免由于缓存区分配不合理造成的缓存空间不足和浪费的现象,优化缓存资源的配置。
    在本发明的一些实施方式中,本发明提供的双CPU通信方法还可以包括:
    501、接收上述第一应用程序通过API发送的请求注销上述第一虚拟数据通道的请求;
    当应用程序不再需要使用为其创建的专享虚拟数据通道时,可以通过API 接口发送请求来注销该虚拟数据通道;
    502、注销上述第一虚拟数据通道,并回收上述第一缓存区和第二缓存区;
    在虚拟数据通道被注销后,为该虚拟数据通道配置的缓存区占用的缓存空间被回收。
    本实施例中提供的双CPU通信方法,该方法相比现有技术具有以下有益效果:
    1、在该方法中,为每个应用程序创建独享的虚拟数据通道,这样在多个应用程序都需要发送数据时,可实现多个应用程序并行的发送数据,而互不造成干扰,提升数据发送的数据,缩短应用程序的反应延迟,提升用户体验;
    2、在该方法中,运行在同一CPU的多个应用程序并行的向对方CPU发送数据时,只需向对方CPU发送一个中断信号即可通知对方CPU读取数据,可以避免频繁的产生中断给对方CPU的正常运行带来影响;
    3、在该方法中,可以动态的调整为各虚拟数据通道配置的缓存区的大小,避免由于缓存区分配不合理造成的缓存空间不足和浪费的现象,优化缓存资源的配置。
    实施例三:
    本发明还提供一种双CPU通信系统,该系统可用于执行如实施例一或二所描述的方法,其中,第一CPU是双CPU中的任意一个,第二CPU即是另外一个,如图6所示,该系统可以包括:
    接收单元601,用于接收运行在上述第一CPU上的第一应用程序通过应用程序接口API传递的待发送给上述第二CPU的数据;
    其中第一应用程序可以是运行在第一CPU上的任意一个应用程序;
    通道状态管理单元602,用于将第一虚拟数据通道的状态更新为发送态;其中,上述第一虚拟数据通道是上述第一应用程序独享的虚拟数据通道,在本实施例中,独享的含义为该第一虚拟通道仅可供第一应用程序使用以通过该第一虚拟通道向第二CPU发送数据或接收第二CPU返回的数据;
    通道数据处理单元603,用于将上述待发送给上述第二CPU的数据进行组装,并将组装后得到的数据放入上述第一虚拟数据通道独享的第一缓存区;
    与上述的“独享”的含义类似,第一缓存区仅用于存放第一应用程序向第二CPU发送的数据;
    第一判断单元604,用于判断运行在上述第一CPU上的其它应用程序的虚拟数据通道的状态是否均不为发送态;
    中断信号发送单元605,用于在上述第一判断单元的判断结果为是时,向上述第二CPU发送中断信号以通知上述第二CPU读取上述第一缓存区中的数据。
    实施例四:
    本发明还提供一种双CPU通信系统,第一CPU是双CPU中的任意一个,第二CPU即是另外一个,如图7所示,该系统可包括接收单元701、创建单元702、保存单元703、注册单元704、通道状态管理单元705、通道数据处理单元706、第一判断单元707、中断信号发送单元708,其中,
    接收单元701,可以用于接收第一应用程序在初始化时通过API发送的创建虚拟数据通道的请求;
    本实施例中,应用程序在初始化时,可通过API接口发送创建虚拟数据通道的请求;
    创建单元702,可以用于为上述第一应用程序创建独享的第一虚拟数据通道,并在共享存储器中为上述第一虚拟数据通道配置独享的第一缓存区和第二缓存区;
    本实施例中,在接收单元701接收到上述请求之后,创建单元702可以为每个应用程序创建独享的虚拟数据通道,并分配双向的数据缓存区,缓存区的大小可以按照但不限于以下两种方式中的任意一种:
    a、应用程序在发送创建请求时,通过API参数指定其虚拟数据通道的缓冲区大小,这种可特别适用于应用程序有特殊要求的场景;
    b、将缓冲区大小设计为多个等级(以5个等级为例,分别为level1—level5),然后根据应用程序的业务数据特点来进行配置,例如AT数据流带宽需求小,这个通道的缓存区大小可配置成level1(最小),而PS IP数据流带宽需求高,缓冲区大小可配置成level5(最大);
    本实施例中,每个应用程序独享一个虚拟数据通道,并且每个虚拟数据通道配置独享的两个缓存区,分别用于存放两个方向上的待发送数据,例如从第一CPU发往第二CPU的数据存放在第一缓存区,则第二CPU返回给第一CPU的数据存放在第二缓存区中;
    保存单元703,可以用于保存上述第一虚拟数据通道、上述第一缓存区和上述第二缓存区的属性信息;
    具体地,可以将上述第一虚拟数据通道、上述第一缓存区和上述第二缓存区的属性信息(包括数据长度、读写指针等信息)保存在共享存储器中的通道信息结构体数组(Channel Information Structure)中,当然通道信息并不局限于以结构体数组的形式进行存储,还可以以其他合适的形式进行存储,在此不作具体的限定。
    接收单元701还可以用于接收第一应用程序通过API发送的请求注册Callback函数的请求;
    注册单元704,可以用于为上述第一应用程序注册可以利用上述第一虚拟数据通道和上述第二缓存区接收上述第二CPU返回的数据的Callback函数;
    接收单元701还可以用于接收运行在上述第一CPU上的第一应用程序通过应用程序接口API传递的待发送给上述第二CPU的数据;
    通道状态管理单元705,用于将上述第一应用程序的第一虚拟数据通道的状态更新为发送态;
    通道数据处理单元706,用于将上述待发送给上述第二CPU的数据进行组装,并将组装后得到的数据放入上述第一虚拟数据通道的第一缓存区;
    第一判断单元707,用于判断运行在上述第一CPU上的其它应用程序的虚拟数据通道的状态是否均不为发送态;
    中断信号发送单元708,用于在上述第一判断单元的判断结果为是时,向上述第二CPU发送中断信号以通知上述第二CPU读取上述第一缓存区中的数据;
    通道状态管理单元705,还可用于当第一判断单元707的判断结果为否时,清除上述第一虚拟数据通道的发送态。
    在本发明的一些实施方式中,该系统还可进一步包括:
    检测单元,用于检测在预定时间长度T内上述第一缓存区和上述第二缓存区的最大占用率;
    第二判断单元,用于判断上述预定时间长度T内上述第一缓存区或上述第二缓存区的最大占用率是否大于预定的第一门限值;
    第三判断单元,用于判断上述预定时间长度T内上述第一缓存区或上述第二缓存区的最大占用率是否小于预定的第二门限值;
    缓存管理单元,用于当上述第二判断单元的判断结果为是时,增大上述第一缓存区或上述第二缓存区的大小,以及用于当上述第三判断单元的判断结果为是时,减小上述第一缓存区或上述第二缓存区的大小。
    本实施例中,预定时间长度T可以进行合适的设置,例如设置为2分钟;同样,第一门限值或第二门限值也可以进行合适的设定,例如第一门限值设定为90%,第二门限值应当小于第一门限值,例如第二门限值设定为30%;;
    如果一段时间(T)内第一缓存区(或第二缓存区)的最大占用率较高,则说明可能该应用程序需要发送(或接收)的数据较多,为了提升数据发送(或接收)性能,可以增大该缓存区的大小,具体地,可以是将该缓存区的大小增大一个等级;
    在本发明的一些实施方式中,接收单元701还可以用于接收上述第一应用程序通过API发送的请求注销上述第一虚拟数据通道的请求;
    相应的,该系统还可包括:
    通道注销单元,用于注销上述第一虚拟数据通道,并回收上述第一缓存区和第二缓存区。
    本实施例中提供的双CPU通信系统,该系统相比现有技术具有以下有益效果:
    1、该系统可为每个应用程序创建一个独享的虚拟数据通道,这样在多个应用程序都需要发送数据时,可实现多个应用程序并行的发送数据,而互不造成干扰,提升数据发送的数据,缩短应用程序的反应延迟,提升用户体验;
    2、在该系统中,运行在同一CPU的多个应用程序并行的向对方CPU发 送数据时,只需向对方CPU发送一个中断信号即可通知对方CPU读取数据,可以避免频繁的产生中断给对方CPU的正常运行带来影响;
    3、该系统可以动态的调整为各虚拟数据通道配置的缓存区的大小,避免由于缓存区分配不合理造成的缓存空间不足和浪费的现象,优化缓存资源的配置。
    实施例五:
    本发明还提供一种片上系统芯片,该片上系统芯片包括双CPU和共享存储器,并且该片上系统芯片还包括如实施例三或四描述的双CPU通信系统,具体内容可以参考实施例三的描述,在此不予赘述。
    该片上系统芯片的结构如图8所示,图8中,CPU A和CPU B组成双CPU,共享存储器中存储有通道信息结构体数组,共享存储器中还包括为N个虚拟数据通道配置的2N个缓存区,其中,虚拟数据通道_N_A2B和虚拟数据通道_N_B2A表示第N个虚拟数据通道的两个缓存区。
    以上实施例提供的双CPU通信方法、系统和片上系统芯片可以支持多个应用程序并发的向对方CPU发送数据,下面以两个应用程序并行通过两个虚拟通道发送数据的场景来进行描述。
    例如A1、A2分别是运行在第一CPU上的两个应用程序,都需要向第二CPU发送数据:
    A1、A2通过API接口传递要发送的数据;
    根据API接口信息为A1、A2分别选择对应的虚拟数据通道(已创建),启动发送流程;
    分别更新A1、A2的虚拟数据通道的状态为sending(发送态);
    分别对A1、A2传递的数据进行组装后写入A1、A2的虚拟数据通道对应的缓冲区;
    扫描所有虚拟数据通道的状态,如果只有A1、A2的虚拟数据通道处于sending状态,则清除A1、A2的虚拟数据通道的发送态,并向第二CPU发送一个中断信号;如果检测到其他通道也有处于sending状态,只需清除A1、A2的虚拟数据通道的发送态,不用向第二CPU发送中断信号。
    在上述过程中,A1、A2两个应用程序可以并行的向第二CPU发送数据,而无需像现有技术中那样“排队”;另外,虽然两个虚拟数据通道都有发送数据的动作,但是最后只产生了一次中断,减少了数据接收方第二CPU的中断响应频率,提高了工作效率。当然对于三个或更多个应用程序并发同样适用,当有N个应用程序并发发送数据时,中断也只需要产生一次。
    本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
    以上对本发明实施例所提供的双CPU通信方法、系统和片上系统芯片进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

    关 键  词:
    CPU 通信 方法 系统 芯片
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:双CPU通信方法、系统和片上系统芯片.pdf
    链接地址:https://www.zhuanlichaxun.net/p-4605051.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1