一种双处理器间的通讯方法

文档序号:6573315阅读:314来源:国知局
专利名称:一种双处理器间的通讯方法
技术领域
本发明涉及一种多处理器的通讯方法,尤其涉及一种双处理器间通过DPRAM(Dual Port RAM,双端口随机存取存储器)进行通讯的方法。
背景技术
在通讯、多媒体处理等广泛使用计算机系统的领域,随着处理的数据量和复杂程度的不断提高,包含一个处理器的系统已经很难满足用户对实时性和处理能力的要求。因此,大型复杂的系统通常包含两个或多个处理器,每个处理器完成各自的任务。此外,在某些系统中还需要使用不同类型的处理器完成不同的任务。例如,将控制功能和数据运算分别交由不同的处理器进行处理,以达到最佳的系统性能。
作为一个系统,多个处理器之间需要实时交换数据才能保证协同并行地工作。可将多个处理器以总线的方式连接在一起实现处理器之间的数据交换。但是采用这种方式,通常需要使用VME(Versa Module Europe,欧洲通用模块)等支持多处理器的总线结构对系统进行设计,并且需要在各处理器上运行同样的操作系统才能有效地进行同步和互斥。因此这种方式适用范围较小,成本较高。
基于以上原因,在包含两个处理器的系统中通常采用共享存储器进行消息和数据的交互,以实现两个处理器器之间的通讯,通常共享存储器采用DPRAM。但是采用这种方式也需要设计专门的总线控制电路以实现两个处理器对DPRAM的分时访问。这增加了硬件设计的难度和成本,并且灵活性和通用性较差。

发明内容
本发明所要解决的技术问题是,克服现有技术中两个处理器之间的通讯方法的不足,提出一种采用DPRAM和特定的通讯协议实现两个处理器之间的实时通讯的方法,降低对硬件电路的依赖程度,提高灵活性和通用型。
为了解决上述问题,本发明提出一种双处理器间的通讯方法,应用于包含第一处理器、第二处理器和DPRAM的系统中,其中,所述第一处理器、第二处理器分别与DPRAM的不同端口相连;第二处理器可触发第一处理器的中断;其特征在于,在DPRAM中划分出4个不重叠的存储区域第一存储区、第二存储区、第三存储区和第四存储区;第二处理器周期性交替触发第一处理器的中断第一中断和第二中断;在触发第一中断之后、触发第二中断之前,第二处理器读取第一存储区中保存的通讯数据,并在第三存储区写入通讯数据;作为对第一中断的响应,第一处理器在第二存储区写入通讯数据,并读取第四存储区中保存的通讯数据;在触发第二中断之后、触发第一中断之前,第二处理器读取第二存储区中保存的通讯数据,并在第四存储区写入通讯数据;作为对第二中断的响应,第一处理器在第一存储区写入通讯数据,并读取第三存储区中保存的通讯数据。
此外,在所述DPRAM中设置中断控制位,所述第二处理器以在该中断控制位写入标识中断类型的数值的方式触发所述第一处理器的中断;在接收到中断后,所述第一处理器根据该中断控制位中的数值判断接收到的中断的类型,并清中断;所述中断控制位长度大于1比特。
此外,所述第一处理器运行的子系统包含第一时钟计数器,第二处理器运行的子系统包含第二时钟计数器,第二处理器在触发第一中断之后、触发第二中断之前将第一时钟计数器加1;第一处理器作为对第一中断的响应将第二时钟计数器加1。
此外,所述通讯数据包含数据长度,用于标识相应存储区中保存的数据的长度;数据类型,用于标识数据的类型;和数据内容。
此外,所述第二处理器在第四存储区写入表示系统时间的通讯数据,所述第一处理器根据该通讯数据调整系统时间。
此外,触发第一中断到触发第二中断之间的时间间隔和触发第二中断到触发第一中断的时间间隔大于第二处理器和第一处理器进行中断处理和对DPRAM进行读写操作所需的时间。
此外,所述第二中断的触发时刻与其相邻的两次第一中断的触发时刻之间的时间间隔相等。
本发明通过由两个处理器中的一个触发2次中断的方式发起对DPRAM的特定区域的读写操作,不仅实现了两个处理器的实时通讯,并且完全隔离了运行在两个处理器上的操作系统的差异性,极大缩短了不同系统的整合和移植的周期。


图1是通过DPRAM通讯的双处理器系统的结构示意图;图2是本发明的双处理器间的通讯方法的示意图;图3是采用本发明的通讯方法的ARM和DSP通讯的时序关系图。
具体实施例方式
本发明的基本思路是,在包含处理器A和处理器B的系统中,处理器B以固定的时间间隔触发2次处理器A的中断,在中断触发后,处理器A和处理器B同时对DPRAM的特定区域进行读或写操作,以实现在该时间间隔中处理器A和处理器B之间的双向数据和消息的通讯。
下面将结合附图和实施例对本发明进行详细的描述。
图1是通过DPRAM通讯的双处理器系统的结构示意图,如图1所示,该系统包含处理器A、处理器B和DPRAM。其中,处理器A和处理器B与DPRAM之间都以地址和数据总线相连。此外,处理器A和DPRAM之间还包含中断控制线。
其中,处理器A通常是有较好控制功能的嵌入式处理器,如ARM或PPC,负责整个系统的任务调度和管理;处理器A上运行操作系统A。
处理器B通常是有较强运算功能的DSP(Digital Signal Processing,数字信号处理器),负责复杂的数据运算和处理;处理器B上运行操作系统B。
DPRAM是具有2个独立的访问端口的RAM(随机存取存储器),允许处理器A和处理器B分别通过不同的端口对其进行数据的读写操作,用于存储两个处理器间交互的消息或数据。
中断控制线用于触发处理器A的中断。中断的实现原理同硬件的设计有关,可以采用对DPRAM中的特定寄存器写数据产生中断,读数据清中断的方式。本实施例采用处理器B写DPRAM中的中断控制位产生中断,处理器A读DPRAM中的中断控制位清中断的工作方式。
作为一个包含多处理器协同工作的系统,特别是包含多处理器的ASIC(Application Special Integrated Circuit,专用集成电路)芯片,需要保证一个系统内有唯一的时钟。在本实施例中,以处理器B作为系统中的唯一时钟源,通过以固定的时间间隔T不断地触发处理器A的中断,可以使得两个处理器保持同步。
为了实现处理器A和处理器B对DPRAM的互斥访问,处理器B需要在时间间隔T触发2次处理器A的中断以发起通讯。也就是说,将系统时间划分为长度为T的单元,我们称之为帧;一帧可包含多个处理器的时钟周期,每一帧开始的时刻,称为全帧时刻,每一帧的中间时刻,称为半帧时刻。处理器B在全帧时刻发起的中断称为全帧中断;处理器B在半帧时刻发起的中断称为半帧中断。
图2是本发明的双处理器间的通讯方法的示意图。如图2所示,DPRAM被划分为上行消息、上行数据、下行消息、下行数据和中断控制位5个区域。其中,上行消息和上行数据区域保存处理器A发送给处理器B的消息和数据;下行消息和下行数据区域保存处理器B发送给处理器A的消息和数据;中断控制位用于处理器B写入中断信息以区分中断的类型,同时触发中断。
处理器A和处理器B之间的通讯包含全帧通讯和半帧通讯两部分全帧通讯当全帧时刻来临时处理器B和处理器A进行如下操作201处理器B向中断控制位写入全帧中断信息,触发硬件中断;其中全帧中断信息可以是大于0的整数,用以标识该中断的类型为全帧中断。
202处理器B从DPRAM读取上行数据;203处理器B向DPRAM写入下行消息;204同时,处理器A响应硬件中断,读取中断控制位,识别出是全帧中断;并向中断控制位写入0,清中断,以便能够响应下一次中断请求;此外,根据系统设计的要求,清中断的方式也可以是处理器A读取中断控制位后自动清除。
205处理器A向DPRAM写入上行消息;206处理器A从DPRAM读取下行数据。
半帧通讯当半帧时刻来临时处理器B和处理器A进行如下操作207处理器B向中断控制位写入半帧中断信息,触发硬件中断;其中半帧中断信息是不等于0和全帧中断信息的整数,用以标识该中断的类型为半帧中断。
208处理器B从DPRAM读取上行消息;209处理器B向DPRAM写入下行数据;210同时,处理器A响应硬件中断,读取中断控制位,识别出是半帧中断;并向中断控制位写入0,清中断,以便能够响应下一次中断请求;211处理器A向DPRAM写入上行数据;212处理器A从DPRAM读取下行消息。
处理器B可通过周期性中断(时钟中断)获知全帧时刻和半帧时刻的来临以触发相应的中断。在全帧时刻和半帧时刻,处理器A和处理器B分别重复上述步骤,即可实现两个处理器之间的实时通讯。
下面将以包含ARM和DSP两个处理器的WCDMA物理层软件测试平台为例对本发明作进一步的描述。
该测试平台由后台模块子系统和前台模块子系统组成,分别运行于ARM和DSP两个处理器上,ARM上运行的操作系统是VxWorks,DSP上运行的是Nucleus。由于两个操作系统实现的机制不同,系统函数也不一样,不能直接通过消息进行交互,因此在这个系统中采用DPRAM作为中间媒介实现消息和数据的交互。
在该测试平台中采用了一个4K字节大小的DPRAM,包含ULMSG,DLMSG,ULDATA,DLDATA,INTReg五个区域,分别对应上行消息、下行消息、上行数据、下行数据和中断控制位,其中ULMSG、DLMSG、ULDATA、DLDATA分为长度和数据/信息两部分,数据/信息部分还可包含数据/信息类型和数据/信息内容,长度部分为1字节,用于标识该区域的数据/信息长度,具体的空间以及数据流向等信息见下表

在这个系统中,一帧包含16个时隙,为了实现两个处理器间的实时通讯,DSP需要分别在0时隙触发全帧中断和7时隙触发半帧中断来启动通讯。具体的通讯协议如以上步骤201至212所述。
其中,中断控制位的长度为1字节,DSP将其设置为1和2时分别触发全帧中断和半帧中断;ARM读取中断控制位后将其清零。
在该系统中,为了使两个处理器上的系统时间保持一致,通常在两个子系统上分别设置有时钟计数器,当全帧时刻来临时,DSP上的时钟计数器加1,同时ARM在接收到全帧中断时也将其上的时钟计数器加1。
此外,DSP还可在半帧时刻,以消息的形式将时钟信息提交给ARM,ARM根据该信息进行时钟计数器的调整。
该系统中DSP和ARM进行通讯的时序关系如图3所示。
由以上描述可知,处理器A和处理器B的八个读写操作需要在两个全帧中断之间完成,这需要处理器A和处理器B的主频(处理速度)满足此要求。在上述WCDMA物理层软件测试平台的例子中,根据3GPP协议,1帧为10ms,并且该帧被分为16个时隙,因此DSP和ARM最多在8个时隙内需要完成一次读和一次写操作。
在上述实施例的基础上,本发明还有其它变换方式,例如,触发处理器A的中断可以通过其它方式实现。
一般的处理器都提供有GPIO(通用输入输出),用于用户自定义用途。我们可以利用处理器B的GPIO#0作为触发处理器A的中断的用途,并连接一根从处理器B的GPIO#0到处理器A的中断线。这样我们通过写GPIO#0的控制寄存器相应的值就可以发出脉冲(电平),进而触发处理器A中断。处理器A检测到中断请求后通过读(或写0)的方式就可以清中断。通过这种方式同样能够实现处理器间的中断控制。
权利要求
1.一种双处理器间的通讯方法,应用于包含第一处理器、第二处理器和DPRAM的系统中,其中,所述第一处理器、第二处理器分别与DPRAM的不同端口相连;第二处理器可触发第一处理器的中断;其特征在于,在DPRAM中划分出4个不重叠的存储区域第一存储区、第二存储区、第三存储区和第四存储区;第二处理器周期性交替触发第一处理器的中断第一中断和第二中断;在触发第一中断之后、触发第二中断之前,第二处理器读取第一存储区中保存的通讯数据,并在第三存储区写入通讯数据;作为对第一中断的响应,第一处理器在第二存储区写入通讯数据,并读取第四存储区中保存的通讯数据;在触发第二中断之后、触发第一中断之前,第二处理器读取第二存储区中保存的通讯数据,并在第四存储区写入通讯数据;作为对第二中断的响应,第一处理器在第一存储区写入通讯数据,并读取第三存储区中保存的通讯数据。
2.如权利要求1所述的双处理器间的通讯方法,其特征在于,在所述DPRAM中设置中断控制位,所述第二处理器以在该中断控制位写入标识中断类型的数值的方式触发所述第一处理器的中断;在接收到中断后,所述第一处理器根据该中断控制位中的数值判断接收到的中断的类型,并清中断;所述中断控制位长度大于1比特。
3.如权利要求1所述的双处理器间的通讯方法,其特征在于,所述第一处理器运行的子系统包含第一时钟计数器,第二处理器运行的子系统包含第二时钟计数器,第二处理器在触发第一中断之后、触发第二中断之前将第一时钟计数器加1;第一处理器作为对第一中断的响应将第二时钟计数器加1。
4.如权利要求1所述的双处理器间的通讯方法,其特征在于,所述通讯数据包含数据长度,用于标识相应存储区中保存的数据的长度;数据类型,用于标识数据的类型;和数据内容。
5.如权利要求1所述的双处理器间的通讯方法,其特征在于,所述第二处理器在第四存储区写入表示系统时间的通讯数据,所述第一处理器根据该通讯数据调整系统时间。
6.如权利要求1所述的双处理器间的通讯方法,其特征在于,触发第一中断到触发第二中断之间的时间间隔和触发第二中断到触发第一中断的时间间隔大于第二处理器和第一处理器进行中断处理和对DPRAM进行读写操作所需的时间。
7.如权利要求1所述的双处理器间的通讯方法,其特征在于,所述第二中断的触发时刻与其相邻的两次第一中断的触发时刻之间的时间间隔相等。
全文摘要
一种双处理器间的通讯方法,在DPRAM中划分出4个不重叠的存储区域第一存储区、第二存储区、第三存储区和第四存储区;第二处理器周期性交替触发第一处理器的中断第一中断和第二中断;在触发第一中断之后、触发第二中断之前,第二处理器读取第一存储区中保存的通讯数据,并在第三存储区写入通讯数据;作为对第一中断的响应,第一处理器在第二存储区写入通讯数据,并读取第四存储区中保存的通讯数据;在触发第二中断之后、触发第一中断之前,第二处理器读取第二存储区中保存的通讯数据,并在第四存储区写入通讯数据;作为对第二中断的响应,第一处理器在第一存储区写入通讯数据,并读取第三存储区中保存的通讯数据。
文档编号G06F13/24GK101013414SQ20071006394
公开日2007年8月8日 申请日期2007年2月14日 优先权日2007年2月14日
发明者吴利予 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1