本发明专利技术公开了一种双端口随机存储器同步通信的方法,设置CPU通信的中断标识和链路标识符,该方法包括:异步启动两个CPU,向对方发送中断;CPU响应对方CPU,建立同步通信通道。本发明专利技术还公开了相应的装置,该装置包括:第一CPU、第二CPU、第一双端口状态寄存器、第二双端口状态寄存器、双端口随机存储器;其中,第一双端口状态寄存器与第一CPU对应,第二双端口状态寄存器与第二CPU对应;双端口随机存储器一端连接第一CPU,另一端连接第二CPU;两个双端口状态寄存器的bit0到bit30位为表明双端口随机存储器中断类型的状态位,bit31位为中断触发位。本发明专利技术使得两个CPU能够同步通信,不需要增加新的硬件设备,安全可靠,提高了通信的效率。
【技术实现步骤摘要】
本专利技术涉及同步通信技术,具体地,涉及一种单板上两个独立CPU使用双 端口随机存储器(DPRAM , Double Port Random Access Memory )同步通信的 方法及装置。
技术介绍
随着嵌入式系统的不断发展, 一个嵌入式单板上集成的功能越来越多。只 使用一个嵌入式CPU去实现和管理单板上的所有功能,已经让设计者越来越感 到力不从心。越来越多的设计者开始采用多个嵌入式CPU,对单板上的业务和 功能进行分散式管理。目前,最常用的分"^管理方式是使用两个CPU,两个CPU之间的通信方 式有很多种串口、网口、 DPRAM等等。对于串口和网口的通信方式,无论 是硬件还是软件,技术上都非常成熟,在设计和开发中,使用起来通常很方便。 但是,当单板上的两个CPU之间需要进行大批量的数据传输时,串口和网口速 率太低,往往不能满足通信的需要,DPRAM则是此时最好的选择。使用DPRAM作为单板上两个CPU间的通信方式,已经广泛应用于很多嵌 入式系统的设计之中。但是,DPRAM仅仅是一个随机存储器(RAM),没有 与串口和网口芯片类似的底层协议。因此,当期望把DPRAM的驱动设计为高 效、全双工模式时,DPRAM自身不能对两端的通信初始化进行协商同步。在 以往的设计中,通常把DPRAM的驱动设计为简单低效的查询半双工模式,从 而避免协商同步的过程。或者,把DPRAM两端的CPU设计为主从模式,主控 CPU初始化DPRAM两端的驱动,然后,启动从属CPU,从而实现初始化的协 商同步。现有技术在将DPRAM设计为两个CPU间的通信通道时,同步需求主要体 现在三个方面(l)初始化DPRAM两端驱动,建立通信链路的协商过程;(2) 当通信链路出现异常时,重新恢复通信链路的再次协商过程;(3)使用DPRAM 链路收发消息后,相互通知的过程。在这三种情况下,仅仅依赖DPRAM本身 是无法完成同步的,必须依靠必要的外部手段。
技术实现思路
有鉴于此,本专利技术的主要目的在于提供一种DPRAM同步通信的方法,能 实现DPRAM的同步通信。本专利技术的另一目的在于提供一种高效的通过DPRAM同步通信的装置。 为达到上述目的,本专利技术的技术方案是这样实现的一种双端口随机存储器同步通信的方法,设置CPU通信的中断标识和链路 标识符,该方法包4舌A、 异步启动两个CPU,两个CPU分别向只于方发送中断;B、 收到中断的CPU响应对方CPU,并建立同步通信通道。 步骤A中启动每个CPU的过程进一步包括Al 、关闭CPU自身的双端口随机存储器中断,将链路标识符置0; A2、初始化CPU自身的双端口随机存储器驱动,并向双端口随机存储器 另 一端的CPU发送REQ中断请求;A3、 CPU开启自身的双端口随机存储器中断。 所述步骤B进一步包括Bl、收到中断的CPU读取双端口状态寄存器中的值,并将相应的双端口 状态寄存器清零;B2、判断所述双端口状态寄存器值的bitO位是否为1,如果是,则为REQ 中断,响应REQ请求,否则,进入步骤B3;B3、判断所述双端口状态寄存器值的bill位是否为1,如果是,则为ACK 中断,CPU将自身的链路标识符置1,结束流程;否则,进入步骤B4;B4、判断所述双端口状态寄存器值的bit2位是否为1,如果是,则为读中 断,CPU唤醒自身的写任务;否则,进入步骤B5;B5、判断所述双端口状态寄存器值的bit3位是否为1,如果是,则为写中 断,CPU唤醒自身的读任务,否则,不做处理。步骤B2中所述响应REQ中断进一步包括B21、 CPU关闭自身双端口随机存储器中断,并将链路标识符置0; B22、 CPU初始化自身双端口随机存储器的驱动,并向另一CPU发送ACK 中断;B23 、 CPU将《连^4示识符置1,并开启双端口随才几存l渚器中断。 一种双端口随机存储器同步通信的装置,该装置包括第一CPU、第二CPU、第一双端口状态寄存器、第二双端口状态寄存器、 双端口随机存储器;其中,第一双端口状态寄存器与第一CPU对应,第二双端口状态寄存器与 第二CPU对应;双端口随机存储器一端连接第一CPU,另一端连接第二CPU; 所述两个双端口状态寄存器的bit0到bit30位为表明双端口随机存储器中断类 型的状态位,以及bit31位为中断触发位。第一 CPU对第一双端口状态寄存器只写,对第二双端口状态寄存器只读; 第二CPU对第一双端口状态寄存器只读,对第二双端口状态寄存器只写;第一 双端口状态寄存器的bit31位引出,连接到第二CPU的中断控制器,作为第二 CPU的一个中断输入信号;第二双端口状态寄存器的bit31位引出,连接到第 一 CPU的中断控制器,作为第一 CPU的一个中断输入信号。本专利技术在DPRAM同步通信的设计中,引入了中断标识和表征两个CPU之 间通信链路连接情况的链路标识符,中断标识在两个CPU之间通信时,将CPU 自身的动作通知对方CPU,链路标识符用来帮助CPU判断,是否可以使用通 信链路进行同步通信,从而不需要增加新的硬件设备即实现了 DPRAM的同步 通信,且安全可靠,提高了通信的效率。附图说明图1为本专利技术一个实施例的硬件示意图2为本专利技术DPRAM通信链路建立流程图3为CPIJ1启动流程图4为CPU1中断类型判断流程图5为CPU1响应REQ中断流程图。具体实施例方式下面结合一个工程实施例,对本专利技术方法的具体实施作进一步的详细描述。 本专利技术一个实施例的装置如图1所示,单板上使用了两个完全独立的CPU, 分别是CPU1和CPU2。 DPRAM和用于同步功能的两个32位双端口状态寄存 器statl和stat2在同 一个基于现场可编程门阵列(FPGA, Field Programmable Gate Array )中实现。statl与CPU1对应,stat2与CPU2对应;DPRAM —端连 接CPU1,另一端连接CPU2;状态寄存器的bit0到bit30位为状态位,用于表 明DPRAM中断(int)的类型,bit31位为中断触发位,用于使对方CPU触发 中断。statl和stat2各bit位的定义相同,具体如表一所示<table>table see original document page 7</column></row><table>在DPRAM的驱动中,设计了一个标识DPRAM链路连接状态的标识符 flag,表示链路连接状态。当flag等于1时,表示链路处于连接状态;当flag 等于0时,表示链路处于断开状态。CPU在向DPRAM发送或读取消息之前, 必须先判断这个标识符。只有当flag等于l时,才能发送或读取消息。通常情况下,单板上电后,两个CPU启动时间会有差异,以CPUl比CPU2 先启动为例,DPRAM通信链^^的建立过程如图2所示步骤201: CPU1、 CPU2异步启动,分别向对方发送中断。CPUl与CPU2启动过程基本相同,以CPUl为例,启动步骤如图3所示, 包括步骤201a:关闭DPRAM中断; 步骤201b:将flag标识符置O,即设置为断开状态; 步骤201 c:初始化CPU 1的DPRAM驱动; 步骤20Id:向DPRAM另 本文档来自技高网...
【技术保护点】
一种双端口随机存储器同步通信的方法,其特征在于,设置CPU通信的中断标识和链路标识符,该方法包括:A、异步启动两个CPU,两个CPU分别向对方发送中断;B、收到中断的CPU响应对方CPU,并建立同步通信通道。
【技术特征摘要】
【专利技术属性】
技术研发人员:冷再鲜,刘志强,刘一峰,
申请(专利权)人:中兴通讯股份有限公司,
类型:发明
国别省市:94[中国|深圳]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。