双cpu通信方法、系统和片上系统芯片的制作方法_4

文档序号:8339573阅读:来源:国知局
如图8所示,图8中,CPU A和CPU B组成双CPU,共享存储器中存储有通道信息结构体数组,共享存储器中还包括为N个虚拟数据通道配置的2N个缓存区,其中,虚拟数据通道_N_A2B和虚拟数据通道_N_B2A表示第N个虚拟数据通道的两个缓存区。
[0136]以上实施例提供的双CPU通信方法、系统和片上系统芯片可以支持多个应用程序并发的向对方CPU发送数据,下面以两个应用程序并行通过两个虚拟通道发送数据的场景来进行描述。
[0137]例如Al、A2分别是运行在第一 CPU上的两个应用程序,都需要向第二 CPU发送数据:
[0138]Al、A2通过API接口传递要发送的数据;
[0139]根据API接口信息为Al、A2分别选择对应的虚拟数据通道(已创建),启动发送流程;
[0140]分别更新Al、A2的虚拟数据通道的状态为sending (发送态);
[0141]分别对A1、A2传递的数据进行组装后写入A1、A2的虚拟数据通道对应的缓冲区;
[0142]扫描所有虚拟数据通道的状态,如果只有Al、A2的虚拟数据通道处于sending状态,则清除A1、A2的虚拟数据通道的发送态,并向第二 CPU发送一个中断信号;如果检测到其他通道也有处于sending状态,只需清除Al、A2的虚拟数据通道的发送态,不用向第二CPU发送中断信号。
[0143]在上述过程中,A1、A2两个应用程序可以并行的向第二 CPU发送数据,而无需像现有技术中那样“排队”;另外,虽然两个虚拟数据通道都有发送数据的动作,但是最后只产生了一次中断,减少了数据接收方第二 CPU的中断响应频率,提高了工作效率。当然对于三个或更多个应用程序并发同样适用,当有N个应用程序并发发送数据时,中断也只需要产生一次。
[0144]本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random AccessMemory, RAM)、磁盘或光盘等。
[0145]以上对本发明实施例所提供的双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上的第一应用程序通过API传递的待发送给所述第二CPU的数据;将第一虚拟数据通道的状态更新为发送态;将所述待发送给所述第二CPU的数据进行组装,并将组装后得到的数据放入所述第一虚拟数据通道独享的第一缓存区;判断运行在所述第一CPU上的其它应用程序的虚拟数据通道的状态是否均不为发送态,如果是,向所述第二CPU发送中断信号以通知所述第二CPU读取所述第一缓存区中的数据。实施本发明实施例,应用程序可以并行的向对方CPU发送数据,并且避免频繁的发送中断信号。
【IPC分类】G06F15-163, G06F12-08
【公开号】CN104657326
【申请号】CN201310608631
【发明人】陈俊华, 徐小庆
【申请人】重庆重邮信科通信技术有限公司
【公开日】2015年5月27日
【申请日】2013年11月25日
当前第4页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1