CN115756883A - 芯片间的交互处理方法、系统、电子设备和可读存储介质 - Google Patents
芯片间的交互处理方法、系统、电子设备和可读存储介质 Download PDFInfo
- Publication number
- CN115756883A CN115756883A CN202211332744.4A CN202211332744A CN115756883A CN 115756883 A CN115756883 A CN 115756883A CN 202211332744 A CN202211332744 A CN 202211332744A CN 115756883 A CN115756883 A CN 115756883A
- Authority
- CN
- China
- Prior art keywords
- message
- data
- sender
- receiver
- frame
- 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
Landscapes
- Communication Control (AREA)
Abstract
本申请公开了芯片间的交互处理方法、系统、电子设备和可读存储介质,该方法包括:消息发送方根据指示信息判断共享内存的读写状态是否为空闲,其中,指示信息的内容为空的情况下读写状态为空闲;消息发送方在读写状态为空闲的情况下,将消息写入到共享内存中;消息发送方在写入消息完成之后,将消息接收方的标识信息写入到指示信息中;消息接收方判断指示信息中的标识信息是否为消息接收方自己,如果是,消息接收方从共享内存中读取消息,并在读取消息完成之后将指示信息清空。通过本申请解决了现有技术中在SOC间进行数据交互效率比较低的问题,从而提高了SOC间数据传输的效率,减少了SOC间数据交互消耗的时间。
Description
技术领域
本申请涉及到芯片领域,具体而言,涉及芯片间的交互处理方法、系统、电子设备和可读存储介质。
背景技术
系统级芯片(也可以称为系统芯片)的英文全称为System on Chip,英文简称为SOC,SOC是在一块芯片上集成一整个信息处理系统,简单来说SOC芯片是在中央处理器(简称为CPU)的基础上扩展音视频等功能和专用接口的超大规模集成电路,SOC使单芯片能够完成完整的系统,在移动计算、边缘计算、物联网等领域应用广泛。
随着电子设备功能的日益增加,在有些电子设备中使用一个SOC已经无法满足该电子设备功能的需要了,因此在这些设备中使用了多个SOC。在使用多个SOC时,SOC之间可以通过各种类型的总线进行连接。
发明人发现,在现有技术中,在SOC间进行数据交互时效率比较低,这导致SOC间进行数据交互时需要消耗比较多的时间。
发明内容
本申请实施例提供了芯片间的交互处理方法、系统、电子设备和可读存储介质,以至少解决现有技术中在SOC间进行数据交互效率比较低的问题。
根据本申请的一个方面,提供了一种芯片间的交互处理方法,包括:消息发送方根据指示信息判断共享内存的读写状态是否为空闲,其中,所述指示信息的内容为空的情况下所述读写状态为空闲;所述消息发送方和消息接收方均为系统级芯片SOC,所述消息发送方和消息接收方中的一方将一块内存映射出虚拟地址,所述消息发送方和所述消息接收方的另一方通过所述虚拟地址与所述一方共同使用所述一块内存作为所述共享内存;所述消息发送方在所述读写状态为空闲的情况下,将消息写入到所述共享内存中;所述消息发送方在写入所述消息完成之后,将所述消息接收方的标识信息写入到所述指示信息中;所述消息接收方判断所述指示信息中的标识信息是否为所述消息接收方自己,如果是,所述消息接收方从所述共享内存中读取所述消息,并在读取所述消息完成之后将所述指示信息清空。
进一步地,所述共享内存被分为n个内存块,其中,所述n大于1,所述消息发送方和消息接收方使用所述n个内存块中的一个内存块写入和读取所述消息,所述n个内存块中每个内存块均包括头部信息,其中,所述头部信息中包括所述指示信息。
进一步地,在所述消息需要进行阻塞处理的情况下,所述方法还包括:所述消息接收方在从所述共享内存中读取所述消息之后,所述消息接收方将所述消息的应答写入到所述共享内存中,并将所述消息发送方的标识信息写入到所述指示信息中;其中,所述阻塞为所述消息接收方在读取到所述消息之后进行应答,所述消息发送方在获取到应答之后才能执行下一步处理;所述消息发送方判断所述指示信息中的标识信息是否为所述消息发送方自己,如果是,则所述消息发送方从所述共享内存中读取所述应答,在读取所述应答成功之后将所述指示信息清空。
进一步地,所述消息接收方将所述消息的应答写入到所述共享内存中包括:所述消息接收方根据所述指示信息判断所述共享内存的读写状态是否为空闲,在为空闲的情况下,所述消息接收方将所述消息写入到所述共享内存中;如果所述消息接收方在等待预定时长之后所述共享内存的读写状态依然不为空闲的情况下,所述消息接收方确定超时;和/或,所述消息发送方在将所述消息写入所述共享内存之后,所述消息发送方在预定时长之后仍然没有从所述指示信息中发现自己的标识信息,则所述消息发送方确定超时。
进一步地,还包括:数据发送方和数据接收方在各自对应的内存中申请缓存空间,其中,所述数据发送方和所述数据接收方申请的缓存空间的地址和长度相同,所述数据发送方申请缓存空间为第一缓存空间,所述数据接收方申请的缓存空间为第二缓存空间,所述数据发送方是所述消息发送方和所述消息接收方的其中一个,所述数据接收方所述消息发送方和所述消息接收方的另一个;所述数据发送方将数据写入到所述第一缓存空间,其中,被写入到所述第一缓存空间的所述数据通过直接存储器访问DMA被传输到所述第二缓存空间。
进一步地,在所述数据发送方将所述数据写入到所述第一缓存空间之后,所述方法还包括:所述数据发送方获取所述数据接收方的读指针和写指针,其中,所述写指针用于指示所述第二缓存空间中当前能够写入数据的起始位置,所述读指针用于指示所述第二缓存空间中当前已经被所述数据接收方读取的数据的末尾位置;在所述数据通过DMA被传输到所述第二缓存空间之后,所述数据发送方根据所述数据的长度对所述写指针进行更新,并向所述数据接收方发送通知消息;所述数据接收方在接收到来自所述数据发送方的通知消息之后,从所述读指针的位置开始读取所述数据,在读取所述数据完成之后,将所述读指针指示的地址加上读取的所述数据的长度作为地址索引通过通知消息发送给所述数据接收方;所述数据接收方根据所述地址索引更新所述读指针。
进一步地,在所述数据发送方获取所述数据接收方的读指针和写指针之后,所述方法还包括:在所述读指针和所述写指针相等且不等于0的情况下,所述数据发送方将所述读指针和所述写指针设置为0。
进一步地,如果所述写指针大于读指针,则判断所述第二缓存空间的长度减去所述写指针的差是否大于所述数据的长度,在大于的情况下,所述数据通过DMA被传输到所述第二缓存空间;如果所述写指针小于所述读指针,则判断所述读指针减去所述写指针的差是否大于所述数据的长度,在大于的情况下,所述数据通过DMA被传输到所述第二缓存空间。
进一步地,作为所述数据发送方的SOC和作为所述数据接收方的SOC通过高速串行总线PCIE总线连接,作为所述数据发送方的SOC和作为所述数据接收方的SOC中的一个为所述PCIE的根复合体RC,另一个为所述PCIE的终端节点EP。
进一步地,作为所述EP的SOC发起所述数据的DMA传输。
进一步地,所述写指针和所述读指针保存在所述共享内存中;和/或,所述通知消息按照所述消息的发送和接收的方式进行发送和接收。
进一步地,还包括:帧发送方获取待发送的帧,其中,所述帧发送方是所述消息发送方和所述消息接收方的其中一个,帧接收方所述消息发送方和所述消息接收方的另一个;所述帧发送方发起DMA将所述帧发送给所述帧接收方。
进一步地,在所述帧发送方发起DMA将所述帧发送给所述帧接收方之前,所述方法还包括:所述帧发送方获取读指针和写指针,其中,所述写指针用于指示所述帧接收方的用于缓存帧的缓存空间中当前能够写入帧的起始位置,所述读指针用于指示用于缓存帧的所述缓存空间当前已经被所述帧接收方读取完毕的帧的末尾位置;所述帧发送方根据所述写指针和所述读指针判断所述用于缓存帧的缓存空间中是否还有剩余的空间;所述帧发送方在还有剩余的空间的情况下,发起DMA将所述帧发送给所述帧接收方;在所述帧发送方将所述帧发送给所述帧接收方之后,所述帧发送方更新所述写指针。
进一步地,还包括:所述帧接收方根据所述读指针和所述写指针的位置判断所述用于缓存帧的所述缓存空间中是否还有未读取的帧;所述帧接收方在还有未读取的帧的情况下,所述帧接收方从所述用于缓存帧的所述缓存空间中根据所述读指针读取帧,并在读取所述帧之后,所述帧接收方更新所述读指针。
进一步地,所述写指针和所述读指针保存在所述共享内存中。
进一步地,作为所述帧发送方的SOC和作为所述帧接收方的SOC通过高速串行总线PCIE总线连接,所述帧接收方为所述PCIE的根复合体RC,所述帧发送方为所述PCIE的终端节点EP。
根据本申请的另一个方面,还提供了一种包括多芯片的系统,其特征在于,包括:至少两个SOC,所述至少两个SOC之间连接,所述至少两个SOC中包括作为发送方的SOC和作为接收方的SOC,所述发送方用于上述的消息发送方、数据发送方和/或帧发送方的方法步骤;所述接收方用于实现上述的消息接收方、数据接收方和/或帧接收方的方法步骤。
根据本申请的另一个方面,还提供了一种电子设备,包括存储器和多个系统级芯片,其特征在于,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述多个系统级芯片中的至少之一执行以实现上述的方法步骤。
根据本申请的另一个方面,还提供了一种可读存储介质,其上存储有计算机指令,其特征在于,该计算机指令被执行时实现上述的方法步骤。
在本申请实施例中,采用了消息发送方根据指示信息判断共享内存的读写状态是否为空闲,其中,所述指示信息的内容为空的情况下所述读写状态为空闲;所述消息发送方和消息接收方均为系统级芯片SOC,所述消息发送方和消息接收方中的一方将一块内存映射出虚拟地址,所述消息发送方和所述消息接收方的另一方通过所述虚拟地址与所述一方共同使用所述一块内存作为所述共享内存;所述消息发送方在所述读写状态为空闲的情况下,将消息写入到所述共享内存中;所述消息发送方在写入所述消息完成之后,将所述消息接收方的标识信息写入到所述指示信息中;所述消息接收方判断所述指示信息中的标识信息是否为所述消息接收方自己,如果是,所述消息接收方从所述共享内存中读取所述消息,并在读取所述消息完成之后将所述指示信息清空。通过本申请解决了现有技术中在SOC间进行数据交互效率比较低的问题,从而提高了SOC间数据传输的效率,减少了SOC间数据交互消耗的时间。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的硬盘录像机的使用场景示意图;
图2是根据本申请实施例的多个SOC连接示意图;
图3是根据本申请实施例的芯片间的交互处理方法的流程图;
图4是根据本申请实施例的芯片间共享内存的示意图;
图5是根据本申请实施例的RC向EP发送消息的流程示意图;
图6是根据本申请实施例的读写指针变化的示意图;
图7是根据本申请实施例的通过PCIE显示业务的数据流程框图;以及,
图8是根据本申请实施例的视频帧传输处理的流程示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
下面首先对以下实施方式中涉及到的技术术语进行说明。
级联
一个设备中包含多个SOC时,SOC之间需要传递数据,SOC之间相互连接称之为级联。级联方式有很多种,例如以下实施方式中使用的PCIE就是级联方式中的一种。
PCIE
高速串行总线(Peripheral Component Interconnect Express,简称为PCIE或PCIe)是第三代输入输出(I/O)总线,是一种端对端的互连协议,提供了高速传输带宽的解决方案。PCIE存在多种版本,目前PCIE已经发展到第五代PCIE5.0,每一代的发展主要是速率上的提升,无论哪种版本均可以适用于以下实施例。
在PCIE系统定义了有几种设备类型:根复合体(Root Complex,简称为RC)、交换设备(Switch)、终端节点(Endpoint,简称为EP)等。其中,根复合体是SOC和PCIE总线之间的接口,由于PCIE支持的拓扑结构为树状拓扑,根复合体位于PCIE倒立树拓扑的“根”,并代表SOC与PCIE拓扑结构中的其余部分进行通信。从广义上讲,RC可以理解为系统SOC和PCIE拓扑之间的接口,PCIE端口在配置空间中被标记为“根端口”,一个RC可以包括多个根端口。Switch:提供扩展或聚合能力,并允许更多的设备连接到一个PCIE端口。它们充当包路由器,根据地址或其他路由信息识别给定包需要走哪条路径。Endpoint:处于PCIE总线系统拓扑结构中的末端,一般作为总线操作的发起者或者终结者。Endpoint只能接受来自上级拓扑的数据包或者向上级拓扑发送数据包。
乒乓(Ping-Pong)机制
Ping-Pong机制是一种数据缓冲的手段,能够同时利用两个数据缓冲区(Buffer,简称为BUF)达到数据连续传输的目的。在该机制中一般存在两个BUF,模块A在读一个BUF时,模块B可以同时写另一个BUF,这样A和B模块同时操作以提高效率。
DMA
直接存储器访问(Direct Memory Access,简称为DMA)不同速度的硬件装置来数据交互,而不需要依赖于处理器产生大量的中断。DMA传输将数据从一个地址空间复制到另外一个地址空间。处理器仅初始化这个传输动作,传输动作本身是由DMA控制器来实行和完成。在实现DMA传输时,是由DMA控制器直接掌管总线,因此,存在着一个总线控制权转移问题。即DMA传输前,处理器要把总线控制权交给DMA控制器,而在结束DMA传输后,DMA控制器应立即把总线控制权再交回给处理器。一个完整的DMA传输过程包括DMA请求、DMA响应、DMA传输、DMA结束4个步骤。
DDR
DDR的英文全称为Double Data Rate,其中文名称为双倍速率,DDR SDRAM中文名称为双倍速率同步动态随机存储器,习惯称为DDR,其中,SDRAM是Synchronous DynamicRandom Access Memory的缩写,即同步动态随机存取存储器。DDR是内存的其中一种。
HDMI
高清多媒体接口(High Definition Multimedia Interface,简称为HDMI)是一种全数字化视频和声音发送接口,可以发送未压缩的音频及视频信号。HDMI可以同时发送音频和视频信号,由于音频和视频信号采用同一条线材,简化了系统线路的安装难度。
VGA
视频图形阵列(Video Graphics Array,简称为VGA)是一个使用模拟信号的显示标准。VGA接口即采用VGA标准输出数据的专用接口,VGA线是与VGA接口配合使用的传输线。
BNC
尼尔-康塞曼卡口(Bayonet Neill-Concelman,简称为BNC)是一种很常见的同轴电缆终结器。BNC电缆连接器由一根中心针、一个外套和卡座组成。
XVR/DVR/NVR
在安装视频监控系统中经常涉及到NVR、DVR、XVR这三个名称。不管是NVR、DVR还是XVR都是视频监控系统中硬盘录像机的类别,在以下实施方式中将NVR、DVR、XVR统称为硬盘录像机。NVR是Network Video Recorder的缩写,中文被称作是网络硬盘录像机。
NVR最主要的功能是通过网络接收网络摄像机(IPC)设备传输的数字视频码流,并进行存储、管理,从而实现网络化带来的分布式架构优势。通过NVR,可以同时观看、浏览、回放、管理、存储多个网络摄像机的视频数据。
DVR全称为Digital Video Recorder,即数字视频录像机,相对于传统的模拟视频录像机,其采用硬盘录像,故常常被称为硬盘录像机。DVR是一套进行图像计算存储处理的计算机系统,具有对图像、语音和动态帧等进行长时间录像、录音、远程监视和控制的功能。
XVR即数字硬盘录像机,可实现模拟视频与音频编码、录像与视频管理、模数互转的功能,场景适应强。简单来说,XVR实现了NVR+DVR的功能,并且可以自由切换。
图1是根据本申请实施例的硬盘录像机的使用场景示意图,如图1所示,硬盘录像机(XVR/DVR/NVR)与相机连接,该相机可以是网络摄像头等拍摄设备,硬盘录像机通过BNC线或者网线从相机获取视频流。在硬盘录像机获取视频流之后,一方面硬盘录像机可以通过HDMI线或者VGA线将视频流发送给与其连接的显示器进行播放显示,另一方面硬盘录像机还可以通过网络将获取到的视频流上传到云端,其中,上传到云端的视频流可以是硬盘录像机处理过的或者没有处理过的,上传到云端之后移动终端就可以通过云端来获取自己需要的码流。在图1示出的场景中,硬盘录像机在视频系统中起到了重要的作用,多媒体流会在硬盘录像机进行处理、保存或中转,由于硬盘录像机承担了大量的运算工作,因此,在很多硬盘录像机中均使用了多个SOC以提高运算效率,图2是根据本申请实施例的多个SOC连接示意图,如图2所示,硬盘录像机中包括多个SOC(即SOC0、SOC1到SOCn),其中,SOC0通过PCIE桥与其他SOC进行连接。图2中示出的是SOC的硬件连接关系,在使用PCIE连接之后,SOC间有了进行数据交互的物理基础,如何提高SOC间的交互效率是以下实施方式需要解决的问题。
需要说明的是,在图2中虽然示出的是硬盘录像机中的SOC间的连接关系,但是以下实施方式并不限于应用在硬盘录像机中,在其他设备中如果也使用了多个SOC,那么以下实施方式也适用于这些设备。
在以下实施方式中,提供一种芯片间的交互处理方法,图3是根据本申请实施例的芯片间的交互处理方法的流程图,如图3所示,下面对图3中的方法所涉及到的步骤进行说明。
步骤S302,消息发送方根据指示信息判断共享内存的读写状态是否为空闲,其中,所述指示信息的内容为空的情况下所述读写状态为空闲;所述消息发送方和消息接收方均为系统级芯片SOC,所述消息发送方和消息接收方中的一方将一块内存映射出虚拟地址,所述消息发送方和所述消息接收方的另一方通过所述虚拟地址与所述一方共同使用所述一块内存作为所述共享内存。
在该步骤中涉及到共享内存,如果一个设备中包括多个SOC,一般每个SOC均会有一个对应的内存(该内存可以采用DDR),SOC会通过自己对应的内容来进行数据的交互。在该步骤中,两个进行消息交互的SOC使用同一块内存作为共享内存来进行交互。图4是根据本申请实施例的芯片间共享内存的示意图,如图4所示,将进行使用共享内存的两个SOC称为第一SOC和第二SOC,其中第一SOC可以是消息发送方也可以是消息接收方,对应的,第二SOC可以是消息接收方也可以是消息发送方。在使用创建共享内存时,可以使用第一SOC对应的DDR,也可以使用第二SOC对应的DDR。在具体选择使用第一SOC还是第二SOC时可以根据第一SOC和第二SOC承担的计算量来选择,可以选择计算量相对较小的SOC,使用该SOC的DDR作为共享内存。在图4中,可以将第一SOC的内存中预定大小的内存划分为共享内存使用,图4中划分出了6MB的内存作为共享内存,第二SOC和第一SOC对应的内存的起始地址为0x00000000,所划分出的6MB的内存的起始地址为0xC05800000,第一SOC将作为共享内存的该块内存映射为虚拟地址,第二SOC使用该虚拟地址就可以使用该共享内存。在使用共享内存进行消息交互时,就不需要使用DMA来进行消息传输了。在一个可选实施方式中,上述共享内存的创建可以在初始化阶段进行,在初始化得到共享内存之后,上述的指示信息可以配置在所述共享内存。
步骤S304,所述消息发送方在所述读写状态为空闲的情况下,将消息写入到所述共享内存中;
消息发送方和消息接收方共同使用共享内存,因此需要避免消息发送方和消息接收方对共享内存的重复写入。为了解决这个问题使用指示信息来标识共享内存的读写状态,只有在读写状态为空闲的时候才进行消息写入,这种处理方式可以避免消息发送方和消息接收方式对共享内存的重复写入。
步骤S306,所述消息发送方在写入所述消息完成之后,将所述消息接收方的标识信息写入到所述指示信息中;
消息发送方和消息接收方共同使用共享内存还存在另外一个问题,就是使用共享内存的两方在从共享内存中读取消息的时候,需要知道该消息是不是自己的。为了解决这个问题,将消息接收方的标识信息写入到指示信息中,一方面该指示信息中被写入了内容,在这种情况下,该指示信息指示该共享内存非空闲,不能再往共享内存中写入数据了;另一个方面,该指示信息中写入的内容是消息接收方的标识信息,这样就能够明确应该由谁来读取该消息。
步骤S308,所述消息接收方判断所述指示信息中的标识信息是否为所述消息接收方自己,如果是,所述消息接收方从所述共享内存中读取所述消息,并在读取所述消息完成之后将所述指示信息清空。
消息接收方式根据指示信息中的标识信息能够知道应该由自己来进行消息的读取,并且在消息读取完成之后将指示信息清空,清空之后的指示信息用于指示共享内存的状态为空闲状态,此时又可以进行数据的写入了。
在上述步骤中,消息发送方和消息接收方均在同一块共享内存中进行操作,这样就不再需要两个SOC芯片对应的内存中进行数据拷贝,能够提高消息的交互速度,并且在上述步骤中采用了标识信息来指示共享内存是否能够进行数据写入,避免重复写入所导致的问题;上述标识信息还能够用来指示共享内存中存储的数据的读取方,避免了数据被误读。因此通过上述步骤解决了现有技术中在SOC间进行数据交互效率比较低的问题,从而提高了SOC间数据传输的效率,减少了SOC间数据交互消耗的时间。
上述消息发送方发送的消息可以是普通的消息,在消息发送方发送出该消息之后不需要等待消息接收方的处理结果就可以进行下一步处理。在另一种情况下,消息发送方发送的消息还可以是需要进行阻塞处理的消息,所述阻塞为所述消息接收方在读取到所述消息之后进行应答,所述消息发送方在获取到应答之后才能执行下一步处理。在一个可选实施方式中,可以增加相应的步骤对阻塞进行数据,即在所述消息需要进行阻塞处理的情况下,所述方法还包括:所述消息接收方在从所述共享内存中读取所述消息之后,所述消息接收方将所述消息的应答写入到所述共享内存中,并将所述消息发送方的标识信息写入到所述指示信息中;其中,所述消息发送方判断所述指示信息中的标识信息是否为所述消息发送方自己,如果是,则所述消息发送方从所述共享内存中读取所述应答,在读取所述应答成功之后将所述指示信息清空。从该可选实施方式可以看出,在进行阻塞处理时,其实就是消息接收方作为应答的发送方,而消息发送方作为应答的接收方这样的一个处理过程,该处理过程与图3中示出的消息发送和接收步骤是相似的,只不过对于应答而言,消息发送方和消息接收方的身份互换了而已。
采用上述可选实施方式中的步骤就可以对需要进行阻塞的消息进行处理,虽然按照上述步骤能够实现正常的处理流程,但是作为一种可选的实施方式还可以考虑增加对于超时的处理,这样可以避免消息发送方或者消息接收方一直处于等待状态(即使这种情况发生的概率是很低的)。即在该可选实施方式中,所述消息接收方将所述消息的应答写入到所述共享内存中包括:所述消息接收方根据所述指示信息判断所述共享内存的读写状态是否为空闲,在为空闲的情况下,所述消息接收方将所述消息写入到所述共享内存中;如果所述消息接收方在等待预定时长之后所述共享内存的读写状态依然不为空闲的情况下,所述消息接收方确定超时;和/或,所述消息发送方在将所述消息写入所述共享内存之后,所述消息发送方在预定时长之后仍然没有从所述指示信息中发现自己的标识信息,则所述消息发送方确定超时。通过该可选实施方式增加了超时处理,使通过共享内存进行消息交互更加稳定,不容易出现错误。
需要说明的是,在需要同时传递多个消息的时候,可以开辟多块共享内存,这相当于将所述共享内存分为n个内存块,其中,所述n大于1,所述消息发送方和消息接收方使用所述n个内存块中的一个内存块写入和读取所述消息,所述n个内存块中每个内存块均包括头部信息,其中,所述头部信息中包括所述指示信息,该头部信息中还可以包括其他内容,例如该消息是否需要进行阻塞处理等。通过该可选实施方式,在SOC间需要同时发送和接收多个消息的时候,每个消息都可以使用一个内存块,这样消息之间不会带来干扰,使用多个消息的并行交互称为可能,共享内存划分的数量的多少可以根据SOC间需要进行交互的消息的数量来决定。
上述消息发送方和消息接收方均为SOC,SOC之间级联的方式有很多种,在可选的实施方式中推荐使用PCIE来进行SOC间的级联,在使用PCIE的情况下,一个SOC作为PCIE中的RC,另一个SOC作为PCIE中的EP即可。在以下实施方式中,将作为RC的SOC称为是主SOC(简称为主片),将作为EP的SOC称为从SOC(简称为从片)。在图4中第一SOC可以是主片,第二SOC可以是从片。下面以主片向从片发送消息为例对上述实施方式中的步骤进行说明。
在主片向从片发送消息之前,首先需要创建共享内存,其中,创建共享内存可以通过如下步骤来进行:
1、初始化时,主从片分别将xMB(在图4中为6MB)内存映射出虚拟地址。
2、根据不同业务数量,将共享内存分为nKB*n个内存块。
3、每个内存块起始放内存管理结构,包括头和nKB内存等。
4、头包括:远端(即进行交互的另一个SOC)chipID(SOC的标识信息)、消息类型、消息长度、是否阻塞、读状态、写状态等。
(1)远端chipID(即消息接收方的标识信息):标识该消息是哪个片的消息。
(2)消息类型和/或长度,就是用来指示该消息的类型,以及该消息的长度。
(3)是否阻塞:阻塞的意思是接收消息端完成处理逻辑后,应答。发送端接收到应答后才能继续执行下一步逻辑。
(4)读状态和/或写状态:标记该消息是否已写或已读取。
5、nKB内存用于消息中的具体数据的传输,按具体业务灵活使用。受限于共享内存的大小,在共享内存中传递的消息(简称为msg)数据量不大,一般为几个字节到几十个字节不等,但是,可以使用的共享内存比较大的情况下,也可以传输较大数据量,因此此处对消息的大小不做限制。该消息可以包括:命令、线程debug信息、其他状态信息等。以命令为例,主要包括命令号、通道号(硬盘录像机中的用于标识视频通道的标识信息)、命令参数、命令缓存(buf)等。对于其他状态信息可以包括以下至少之一:升级状态、主从片应答、智能处理结果、内存信息、组件句柄、数据读写完成状态确认、错误信息、编码状态、线程状态、音频通道信息、屏幕菜单式调节方式(on-screen display,简称为OSD)颜色信息、时间戳、电子放大信息、解码信息、云台控制信息、模数信息等。需要说明的是,硬盘录像机中的SOC处理来自IPC的数据,因此也可以传输IPC的一些状态信息或显示装置的状态信息。如果SOC用于处理其他类型设备的数据,则也可以传输其他类型设备相关的状态信息,在此不再一一赘述。
在图4中将共享内存开在了主片,但实际应用时,如果主片内存压力较大,则也可以将共享内存调整到从片。
在每个msg头包含的远端ID、读状态和写状态,其中,读状态和写状态用于交互状态更新,下面结合头中包括的这些信息对主片(RC)和从片(EP)之间进行消息交互的过程进行说明。以下以主片向从片发送消息为例进行说明,在主片给从片发送消息的处理中,存在如下几种情况:
1、RC给EP发消息,EP读消息。在这种情况下需要考虑如何避免内存重复写入。
2、RC给EP发消息,EP也给RC发消息。RC和EP同时是发送端又是读取端。由于使用的是同一个msg口(即同一段共享内存),在这种情况下需要考虑:(1)避免内存重复写入。(2)判断当前共享内存中已经写入的消息是否是自己的。
3、考虑到还可能使用阻塞模式,即RC需要等待EP处理完毕,才能继续处理下一个逻辑。在阻塞模式中还需要考虑:(1)避免内存重复写入。(2)判断当前消息是否是自己的。(3)增加等待读取端反馈机制。
在上述三种情况下,情况3是最复杂,并且情况3中的交互流程中已经包括了情况1和情况2,图5是根据本申请实施例的RC向EP发送消息的流程示意图,图5示出了情况3中的流程,下面结合图5对主片(RC)和从片(EP)之间的消息交互进行说明。
在图5中,内存的地址的索引方式是根据内存的起始地址(即基址)加上偏移量(即端口port)来计算得到的,RC和EP都可以通过基址加上Port口偏移量来计算得到保存消息(msg)的地址,然后通过该地址来进行消息的写入和读取。在流程开始时,RC首先进行初始化,在初始化的过程中将读写状态清空,然后进行消息发送流程中。在发送消息流程中,判断msg读写是否为空闲,如果是空闲则可以在共享内存中写入数据,然后将读写状态(即指示信息)置位为EP的标识信息;如果读写状态不是空闲则进行等待,等到超时之后该流程结束。在等待期间如果读写状态变成了空闲,则进行数据写入。在将消息中的数据写入到共享内存之后,如果是阻塞模式,则判断共享内存中读写状态中的标识信息是否为自己,如果是自己则进行数据读取,在读取数据之后清空读写状态。
对于EP来说,其根据读写状态中的目标的标识信息(targetID)判断共享内存中的数据是否为自己的,如果是,再根据读写状态不为空来确定内存中确实有数据,然后进行数据读取,在数据读取完毕之后,清空读写状态。如果是阻塞模式,则EP对读取到的消息进行相应的处理之后得到该消息的应答,然后判断msg读写状态是否为空闲,如果为空闲则写入应答的数据,并将读写状态中写入RC的标识信息;如果读写状态不为空闲,则进行等待,超时处理与RC相同,在此不再赘述。
在图5是的流程中,说明1到说明3是对流程各个步骤作用的解释,其中,说明1:主从片通过msg头里的读写状态维护,完成消息通知交互和避免内存重复写入问题,这里解决了内存误覆盖问题。说明2:每次写入和读取时,判断当前消息是否是发给自己的消息。解决某端写完后马上读取时,误认为是自己消息问题。说明3:阻塞模式主要包含:从片应答、超时等待机制,这里可以满足部分处理需要线性执行的需求。
在上述实施方式中,主要通过共享内存来传递消息(msg),将这种方式也称为是msg交互。如果SOC间需要交互的数据量比较大,共享内存不足以传输大量数据的情况下,一方面可以增加共享内存,但是这会带来计算成本的增加,另一方面可以考虑使用另外的交互方式来传输这种数据。下面结合一个可选的实施方式对此进行说明。
在该可选实施方式中,为了与上述消息的发送方和接收方进行区分,将数据的发送方和接收方分别称作是数据发送方和数据接收方,所述数据发送方是所述消息发送方和所述消息接收方的其中一个,所述数据接收方所述消息发送方和所述消息接收方的另一个;即数据发送方可以是进行数据交互的SOC中的其中之一,数据接收方为进行数据交互的SOC中的另一个。
在可选实施方式中,使用DMA的方式来传输数据,其中包括如下步骤:数据发送方和数据接收方在各自对应的内存中申请缓存空间,其中,所述数据发送方和所述数据接收方申请的缓存空间的地址和长度相同,所述数据发送方申请缓存空间为第一缓存空间,所述数据接收方申请的缓存空间为第二缓存空间;所述数据发送方将数据写入到所述第一缓存空间,其中,被写入到所述第一缓存空间的所述数据通过直接存储器访问DMA被传输到所述第二缓存空间。由于数据发送方和数据接收方申请的缓存空间是对齐的,这样就可以通过DMA将数据从第一缓存空间传输到第二缓存空间中,通过DMA一方面可以提供数据传输的速率,另一方面也可以传输数据量比较大的数据。
在数据传输的过程中,可能会传输不同长度的数据,在这种情况下数据发送方需要根据数据接收方的缓存空间的使用情况来确定数据接收方是否能够接收该长度的数据,在一个可选实施方式中数据发送方可以通过获取数据接收方的缓存空间的指针的方式来进行判断。即在该可选实施方式中,所述数据发送方获取所述数据接收方的读指针和写指针,其中,所述写指针用于指示所述第二缓存空间中当前能够写入数据的起始位置,所述读指针用于指示所述第二缓存空间中当前已经被所述数据接收方读取的数据的末尾位置;在所述数据通过DMA被传输到所述第二缓存空间之后,所述数据发送方根据所述数据的长度对所述写指针进行更新,并向所述数据接收方发送通知消息;所述数据接收方在接收到来自所述数据发送方的通知消息之后,从所述读指针的位置开始读取所述数据,在读取所述数据完成之后,将所述读指针指示的地址加上读取的所述数据的长度作为地址索引通过通知消息发送给所述数据接收方;所述数据接收方根据所述地址索引更新所述读指针。通过该可选实施方式,读指针和写指针均是由一方(即数据发送方)来进行维护,这有利于数据发送方发送不同长度的数据。
在根据读指针和写指针进行判断的时候,为了提高缓存空间的利用率,如果所述读指针和所述写指针相等且不等于0,这说明所有传输给数据接收方的数据均被读取完毕了,此时该缓存空间就可以重新利用了,此时,所述数据发送方将所述读指针和所述写指针设置为0。通过这种方式可以在保证数据均被正确接收情况下最大程度利用缓存空间。对于写指针与读指针不相等的情况下,则需要分为两种情况来判断数据接收方剩余的缓存空间。其中,如果所述写指针大于读指针,则判断所述第二缓存空间的长度减去所述写指针的差是否大于所述数据的长度,在大于的情况下,所述数据通过DMA被传输到所述第二缓存空间;如果所述写指针小于所述读指针,则判断所述读指针减去所述写指针的差是否大于所述数据的长度,在大于的情况下,所述数据通过DMA被传输到所述第二缓存空间。
在上述实施方式中,涉及到写指针和读指针以及通知消息的发送,在已经开辟了共享内存的情况下,所述写指针和所述读指针保存在所述共享内存中;和/或,所述通知消息可以按照图3中示出的步骤进行发送和接收,即采用msg交互。对于读写指针保存和获取也可以采取其他方式,对于通知消息的交互也可以采用其他的方式,在此不再赘述。
在上述实施方式中已经提到,可以使用PCIE来进行SOC间的级联,在使用PCIE的情况下,一个SOC作为PCIE中的RC,另一个SOC作为PCIE中的EP即可,将作为RC的SOC称为是主SOC(简称为主片),将作为EP的SOC称为从SOC(简称为从片)。在图4中第一SOC可以是主片,第二SOC可以是从片。下面以主片向从片发送消息为例对上述实施方式中的步骤进行说明。
在上述不同长度数据交互的过程中,可以是从从片向主片发送数据,也可以是从主片向从片发送数据。在一个可选实施方式中,考虑到主片可能计算负荷比较大,为了减轻主片的计算负荷,无论是从从片向主片发送数据还是从主片向从片发送数据,DMA传输均可以由作为EP的SOC(即从片)发起。下面以从片和主片之间的数据交互为例进行说明。在下面的例子中,数据发送方被称为本地,数据接收方被称为远端。
在该例子中不固定长度的数据通过一段buf(即缓存空间)传输,并且该buf循环使用。该例子可以用于编码码流等数据的传输,也可以用于码流抓图的数据传输。在该例子中从片发送数据,主片接收数据,采用msg交互+DMA方式。msg交互在上述实施方式中已经进行过说明,在此不再赘述。在本例子中使用DMA有两点需要注意:(1)内存连续且不能回头,所谓回头就是缓冲区通过读写指针循环使用内存,这样指针到达末尾之后会从头开始,这种回头的处理方式不利于进行数据读写,容易造成混乱。(2)两个SOC的缓存空间的地址、数据长度需要对齐。在例子中,在共享内存里增加特殊读写指针,维护数据读写。
由于DMA在从片实现,下面分别以主传从、从传主两种情况进行描述。
第一种情况:从片给主片发数据。
步骤1:初始化。主片根据业务申请数据buf。从片通过msg(即通知消息)获取主片的数据buf的物理地址,该buf称为远端buf。从片申请数据buf,称为本地buf,远端和本地buf的地址和长度按要求对齐。
步骤2:从片判断本地buf是否有空间,如果没有空间,则等待空间的出现,直到超时。有则拷贝数据到本地buf,并更新本地buf的数据长度(locDataLen)。
步骤3:从片根据远端buf读写指针(其中写指针为w,读指针为r),判断剩余空间长度,注意这里不能回头。即:
(1)当w大于r时,(bufLen-w)是否大于待写入数据长度,如果大于则进行步骤4。
(2)当w小于r时,(r-w)是否大于待写入数据长度,如果大于则进行步骤4。
(3)当w等于r时,说明数据均被读取完毕。因此,当w与r相等且不等于0时,将w和r置0,该操作用于提高内存利用效率。
步骤4:从片配置并发起DMA,参数:
(1)源地址:本地buf首地址。
(2)长度:locDataLen。
(3)目的地址:远端buf首地址+w。
步骤5:从片更新远端地址buf的写指针:w=w+locDataLen。
步骤6:从片发起msg(即通知消息),通知主片已写数据,该通知消息中包含写指针w和数据长度locDataLen。
步骤7:主片读取msg,获取w和数据长度,根据buf首地址+w拷贝出数据。
步骤8:主片发起msg,通知从片已读完数据,并返回当前地址索引,即w+locDataLen。
步骤9:从片读取msg,更新读指针。
以上是一次完整的数据交互,可以看出数据发送方从片完成了内存的维护工作,其中,包括远端buf的读写索引维护也是在从片维护,再次强调下,在例子中的读写索引非循环使用。
图6是根据本申请实施例的读写指针变化的示意图,下结合图6对数据传输过程中的读写指针的状态进行说明,如图6所示,状态1:读写指针初始状态为0。状态2:从片写入数据1。状态3:从片写入数据2。状态4:主片读取数据1。状态5:主片读取数据2。状态6:从片将读写指针置0。
状态6的读写指针置0操作,用于解决DMA不能回头的问题,同时又尽可能的充分利用buf空间。所以从片每次写入前,都会对读写指针做判断。即上述步骤3的第三种情况:当远端buf的读写指针相等且不为0时,将读写指针置0。
第二种情况:主片给从片发送数据。
主片发给从片的操作相似但不同,原因是DMA在从片实现。初始化以及两端buf空间是否充足的判断,与第一种情况相同,不再赘述。与第一种情况的不同之处在于:主片将数据拷贝到本地buf后,发送msg给从片,包括数据长度、读写索引等,在该msg中传输的主要是用于指示读写状态的相关信息,当然,在实际应用时也可以根据需要传递其他信息。从片接收到msg后发起DMA操作,完成后发反馈msg给主片。主片接收到从读完的msg消息后更新读指针。
上述两个例子如果是传输码流的话,由于码流等数据较小一般几十KB,而DMA的传输效率在256K以上可以达到较优的效果。此时可以将多个通道的数据合并在一起进行传输,或者将多个帧的数据一起进行传输。例如,对于实时性要求不高:可以多通道+多帧一次传输。有例如,对实时性有一定要求:可以多通道一次性传输。
在上述实施方式中介绍了SOC间消息的交互,以及不固定长度的数据的交互。需要说明的是,上述实施方式中的不固定长度数据的交互方式也可以用来传输视频帧。但是,考虑到视频帧作为一种特殊的数据,其可以通过另一种可选方式来进行传输,以提高帧传输效率。在该可选实施方式中,为了与上述消息的发送方和接收方进行区分,将帧的发送方和帧的接收方分别称作是帧发送方和帧接收方,所述帧发送方是所述消息发送方和所述消息接收方的其中一个,帧接收方所述消息发送方和所述消息接收方的另一个;即帧发送方可以是进行数据交互的SOC中的其中之一,帧接收方为进行数据交互的SOC中的另一个。
在该可选实施方式中,帧发送方获取待发送的帧;所述帧发送方发起DMA将所述帧发送给所述帧接收方。这里与不固定长度数据的发送和接收不同,由帧发送方来发起DMA。
在该可选实施方式中,读指针和写指针的维护也与不固定长度数据的发送和接收不同,所述帧发送方获取读指针和写指针,其中,所述写指针用于指示所述帧接收方的用于缓存帧的缓存空间中当前能够写入帧的起始位置,所述读指针用于指示用于缓存帧的所述缓存空间当前已经被所述帧接收方读取完毕的帧的末尾位置;所述帧发送方根据所述写指针和所述读指针判断所述用于缓存帧的缓存空间中是否还有剩余的空间;所述帧发送方在还有剩余的空间的情况下,发起DMA将所述帧发送给所述帧接收方;在所述帧发送方将所述帧发送给所述帧接收方之后,所述帧发送方更新所述写指针。由此可见,是由帧发送方来维护写指针的。
所述帧接收方根据所述读指针和所述写指针的位置判断所述用于缓存帧的所述缓存空间中是否还有未读取的帧;所述帧接收方在还有未读取的帧的情况下,所述帧接收方从所述用于缓存帧的所述缓存空间中根据所述读指针读取帧,并在读取所述帧之后,所述帧接收方更新所述读指针。由此可见,是由帧接收方来维护读指针的。
在上述实施方式中,涉及到写指针和读指针以及通知消息的发送,在已经开辟了共享内存的情况下,所述写指针和所述读指针保存在所述共享内存中;和/或,帧发送方和帧接收方之间交互的通知消息可以按照图3中示出的步骤进行发送和接收,即采用msg交互。对于读写指针保存和获取也可以采取其他方式,对于通知消息的交互也可以采用其他的方式,在此不再赘述。
在上述实施方式中已经提到,可以使用PCIE来进行SOC间的级联,在使用PCIE的情况下,一个SOC作为PCIE中的RC,另一个SOC作为PCIE中的EP即可,将作为RC的SOC称为是主SOC(简称为主片),将作为EP的SOC称为从SOC(简称为从片)。下面以所述帧接收方为RC,所述帧发送方为EP为例进行说明。
在该例子中,帧传输主要是从片视频帧传输到主片,用于显示、智能分析等,帧传输的特点是数据量比较大,在该例子中以传输视频帧进行显示为例进行说明。图7是根据本申请实施例的通过PCIE显示业务的数据流程框图,如图7所示,从片中模拟视频采集模块(VI)通道绑定到视频处理模块(VP)通道,然后取帧(即帧1到帧N),通过PCIE发送给主片,在主片中如果需要进行视频处理则有VP模块,如果从片传输帧的大小小于视频显示模块(VO)窗口大小时,传输原始帧以降低PCIE带宽,此时不需要VP模块;接收到的帧传输到HDMI通道;在图7的另一个传输通道中,解码模块(VDEC)通道传输真到VP通道,然后然后取帧(即帧1到帧N),通过PCIE发送给主片,然后发送给VO窗口。
由于交互频繁,可以在共享内存开出一段buf用于读写指针维护,例如:从片仅维护写指针,主片仅维护读指针。在显示窗口比较多的情况下,每个显示窗口对应一对读写指针维护,避免帧覆盖。从片中在其对应的内存中开辟缓存空间池(VP out Buf pool),在不同通道共享该缓存空间池的情况下,该pool按最大情况下申请。
图8是根据本申请实施例的视频帧传输处理的流程示意图,如图8所示,EP和RC均有初始化的过程,在初始化时通过偏移得到共享内存的位置。EP从自己对应的内存中开辟缓存空间池(VP out Buf pool),该缓存空间池用缓存向RC发送的视频帧,EP接收来自RC的消息,该消息中携带有命令,通过命令完成VI和/或VP的配置,然后从VP获取一帧,根据读写指针判断接收方RC是否有剩余的空间,如果有则发起DMA,并更新写指针;如果没有剩余空间则等待,并且在等待的过程中还可以继续判断是否有剩余的空间,直到超时。RC开启预览之后判断预览的通道是否在从片,如果在,则在对应的内存中分配n个帧的buf,然后发送携带有命令(cmd)的消息(msg)给从片。RC根据读写指针轮询判断是否有帧需要读取,如果有,则读取并发送给VO。
关闭显示业务流程为:
1、主片停止取帧,发消息给从片。
2、从片停止送帧,释放资源。读写指针清零,归还内存到共享buf pool。
当显示窗口较多时,每个窗口的数据量较小,而DMA的传输效率在256K以上可以达到较优的效果。在这种情况下,可以使用多窗口单次传输机制:
1、基于当前显示分辨率申请一个完整buf,即无论是单画面显示还是多画面显示,最多消耗内存为该buf大小。
2、通过查询获取每个窗口对应通道新帧的状态,按新帧状态,以及对应通道的显示窗口大小,分割并排列上述buf。
3、获取每个通道的新帧到buf,发起DMA,一次传输所有需要更新新帧到RC端。
4、buf使用PING-PONG机制,获取和DMA同时进行,提高效率。
通过上述实施方式,解决了现有技术中在SOC间进行数据交互效率比较低的问题,从而提高了SOC间数据传输的效率,减少了SOC间数据交互消耗的时间,并且上述实施方式还可以适应大多数厂商的芯片级联。
在本实施例中,提供一种电子装置,包括存储器和处理器,存储器中存储有计算机程序,处理器被设置为运行计算机程序以执行以上实施例中的方法。
上述程序可以运行在处理器中,或者也可以存储在存储器中(或称为计算机可读介质),计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
这些计算机程序也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤,对应与不同的步骤可以通过不同的模块来实现。
该系统或者装置用于实现上述的实施例中的方法的功能,该系统或者装置中的每个模块与方法中的每个步骤相对应,已经在方法中进行过说明的,在此不再赘述。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (19)
1.一种芯片间的交互处理方法,其特征在于,包括:
消息发送方根据指示信息判断共享内存的读写状态是否为空闲,其中,所述指示信息的内容为空的情况下所述读写状态为空闲;所述消息发送方和消息接收方均为系统级芯片SOC,所述消息发送方和消息接收方中的一方将一块内存映射出虚拟地址,所述消息发送方和所述消息接收方的另一方通过所述虚拟地址与所述一方共同使用所述一块内存作为所述共享内存;
所述消息发送方在所述读写状态为空闲的情况下,将消息写入到所述共享内存中;
所述消息发送方在写入所述消息完成之后,将所述消息接收方的标识信息写入到所述指示信息中;
所述消息接收方判断所述指示信息中的标识信息是否为所述消息接收方自己,如果是,所述消息接收方从所述共享内存中读取所述消息,并在读取所述消息完成之后将所述指示信息清空。
2.根据权利要求1所述的方法,其特征在于,所述共享内存被分为n个内存块,其中,所述n大于1,所述消息发送方和消息接收方使用所述n个内存块中的一个内存块写入和读取所述消息,所述n个内存块中每个内存块均包括头部信息,其中,所述头部信息中包括所述指示信息。
3.根据权利要求1所述的方法,其特征在于,在所述消息需要进行阻塞处理的情况下,所述方法还包括:
所述消息接收方在从所述共享内存中读取所述消息之后,所述消息接收方将所述消息的应答写入到所述共享内存中,并将所述消息发送方的标识信息写入到所述指示信息中;其中,所述阻塞为所述消息接收方在读取到所述消息之后进行应答,所述消息发送方在获取到应答之后才能执行下一步处理;
所述消息发送方判断所述指示信息中的标识信息是否为所述消息发送方自己,如果是,则所述消息发送方从所述共享内存中读取所述应答,在读取所述应答成功之后将所述指示信息清空。
4.根据权利要求3所述的方法,其特征在于,
所述消息接收方将所述消息的应答写入到所述共享内存中包括:所述消息接收方根据所述指示信息判断所述共享内存的读写状态是否为空闲,在为空闲的情况下,所述消息接收方将所述消息写入到所述共享内存中;如果所述消息接收方在等待预定时长之后所述共享内存的读写状态依然不为空闲的情况下,所述消息接收方确定超时;和/或,
所述消息发送方在将所述消息写入所述共享内存之后,所述消息发送方在预定时长之后仍然没有从所述指示信息中发现自己的标识信息,则所述消息发送方确定超时。
5.根据权利要求1所述的方法,其特征在于,还包括:
数据发送方和数据接收方在各自对应的内存中申请缓存空间,其中,所述数据发送方和所述数据接收方申请的缓存空间的地址和长度相同,所述数据发送方申请缓存空间为第一缓存空间,所述数据接收方申请的缓存空间为第二缓存空间,所述数据发送方是所述消息发送方和所述消息接收方的其中一个,所述数据接收方所述消息发送方和所述消息接收方的另一个;
所述数据发送方将数据写入到所述第一缓存空间,其中,被写入到所述第一缓存空间的所述数据通过直接存储器访问DMA被传输到所述第二缓存空间。
6.根据权利要求5所述的方法,其特征在于,在所述数据发送方将所述数据写入到所述第一缓存空间之后,所述方法还包括:
所述数据发送方获取所述数据接收方的读指针和写指针,其中,所述写指针用于指示所述第二缓存空间中当前能够写入数据的起始位置,所述读指针用于指示所述第二缓存空间中当前已经被所述数据接收方读取的数据的末尾位置;
在所述数据通过DMA被传输到所述第二缓存空间之后,所述数据发送方根据所述数据的长度对所述写指针进行更新,并向所述数据接收方发送通知消息;
所述数据接收方在接收到来自所述数据发送方的通知消息之后,从所述读指针的位置开始读取所述数据,在读取所述数据完成之后,将所述读指针指示的地址加上读取的所述数据的长度作为地址索引通过通知消息发送给所述数据接收方;
所述数据接收方根据所述地址索引更新所述读指针。
7.根据权利要求6所述的方法,其特征在于,在所述数据发送方获取所述数据接收方的读指针和写指针之后,所述方法还包括:
在所述读指针和所述写指针相等且不等于0的情况下,所述数据发送方将所述读指针和所述写指针设置为0。
8.根据权利要求6所述的方法,其特征在于,如果所述写指针大于读指针,则判断所述第二缓存空间的长度减去所述写指针的差是否大于所述数据的长度,在大于的情况下,所述数据通过DMA被传输到所述第二缓存空间;如果所述写指针小于所述读指针,则判断所述读指针减去所述写指针的差是否大于所述数据的长度,在大于的情况下,所述数据通过DMA被传输到所述第二缓存空间。
9.根据权利要求5至8中任一项所述的方法,其特征在于,作为所述数据发送方的SOC和作为所述数据接收方的SOC通过高速串行总线PCIE总线连接,作为所述数据发送方的SOC和作为所述数据接收方的SOC中的一个为所述PCIE的根复合体RC,另一个为所述PCIE的终端节点EP。
10.根据权利要求9所述的方法,其特征在于,作为所述EP的SOC发起所述数据的DMA传输。
11.根据权利要求6至8中任一项所述的方法,其特征在于,所述写指针和所述读指针保存在所述共享内存中;和/或,所述通知消息按照所述消息的发送和接收的方式进行发送和接收。
12.根据权利要求1所述的方法,其特征在于,还包括:
帧发送方获取待发送的帧,其中,所述帧发送方是所述消息发送方和所述消息接收方的其中一个,帧接收方所述消息发送方和所述消息接收方的另一个;
所述帧发送方发起DMA将所述帧发送给所述帧接收方。
13.根据权利要求12所述的方法,其特征在于,
在所述帧发送方发起DMA将所述帧发送给所述帧接收方之前,所述方法还包括:所述帧发送方获取读指针和写指针,其中,所述写指针用于指示所述帧接收方的用于缓存帧的缓存空间中当前能够写入帧的起始位置,所述读指针用于指示用于缓存帧的所述缓存空间当前已经被所述帧接收方读取完毕的帧的末尾位置;所述帧发送方根据所述写指针和所述读指针判断所述用于缓存帧的缓存空间中是否还有剩余的空间;
所述帧发送方在还有剩余的空间的情况下,发起DMA将所述帧发送给所述帧接收方;
在所述帧发送方将所述帧发送给所述帧接收方之后,所述帧发送方更新所述写指针。
14.根据权利要求13所述的方法,其特征在于,还包括:
所述帧接收方根据所述读指针和所述写指针的位置判断所述用于缓存帧的所述缓存空间中是否还有未读取的帧;
所述帧接收方在还有未读取的帧的情况下,所述帧接收方从所述用于缓存帧的所述缓存空间中根据所述读指针读取帧,并在读取所述帧之后,所述帧接收方更新所述读指针。
15.根据权利要求13或14所述的方法,其特征在于,所述写指针和所述读指针保存在所述共享内存中。
16.根据权利要求12至14中任一项所述的方法,其特征在于,作为所述帧发送方的SOC和作为所述帧接收方的SOC通过高速串行总线PCIE总线连接,所述帧接收方为所述PCIE的根复合体RC,所述帧发送方为所述PCIE的终端节点EP。
17.一种包括多芯片的系统,其特征在于,包括:至少两个SOC,所述至少两个SOC之间连接,所述至少两个SOC中包括作为发送方的SOC和作为接收方的SOC,所述发送方用于实现权利要求1至16中任一项所述的消息发送方、数据发送方和/或帧发送方的方法步骤;所述接收方用于实现权利要求1至16中任一项所述的消息接收方、数据接收方和/或帧接收方的方法步骤。
18.一种电子设备,包括存储器和多个系统级芯片,其特征在于,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述多个系统级芯片中的至少之一执行以实现权利要求1至16任一项所述的方法步骤。
19.一种可读存储介质,其上存储有计算机指令,其特征在于,该计算机指令被执行时实现权利要求1至16任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211332744.4A CN115756883A (zh) | 2022-10-28 | 2022-10-28 | 芯片间的交互处理方法、系统、电子设备和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211332744.4A CN115756883A (zh) | 2022-10-28 | 2022-10-28 | 芯片间的交互处理方法、系统、电子设备和可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115756883A true CN115756883A (zh) | 2023-03-07 |
Family
ID=85355698
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211332744.4A Pending CN115756883A (zh) | 2022-10-28 | 2022-10-28 | 芯片间的交互处理方法、系统、电子设备和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115756883A (zh) |
-
2022
- 2022-10-28 CN CN202211332744.4A patent/CN115756883A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6519268B1 (en) | Asynchronous data pipe for automatically managing asynchronous data transfers between an application and a bus structure | |
US6516361B2 (en) | Method of and apparatus for capturing and processing continuous media-based data streams transmitted over an IEEE 1394 serial bus | |
JP5194014B2 (ja) | データワードストリーム処理装置 | |
KR100405250B1 (ko) | 데이터 전송 제어 장치 및 전자 기기 | |
KR100605657B1 (ko) | 수신된 데이터를 처리하는 방법 및 장치와, 하나 이상의 원격 디바이스로부터 데이터를 수신하는 수신 디바이스 | |
CN113439419A (zh) | 一种基于PCIe的数据传输方法、装置及系统 | |
CN115827524A (zh) | 一种数据传输方法以及装置 | |
JP4009022B2 (ja) | データ伝送方法及びデータ伝送装置 | |
US7711787B2 (en) | On-chip network interfacing apparatus and method | |
CN114286035A (zh) | 图像采集卡、图像采集方法及图像采集系统 | |
KR100311707B1 (ko) | 데이타 통신 시스템, 데이타 통신 방법, 데이타 통신 장치 및 디지탈 인터페이스 | |
CN113439268B (zh) | 一种基于PCIe的数据传输方法、装置及系统 | |
CN113498600B (zh) | 一种基于PCIe的数据传输方法及装置 | |
KR100516411B1 (ko) | 패킷화된 데이터 통신 인터페이스 장치의 pci-직렬 버스 인터페이스 장치를 자율적으로 동작하는 방법 및 시스템 | |
CN115756883A (zh) | 芯片间的交互处理方法、系统、电子设备和可读存储介质 | |
CN117009087A (zh) | 一种图像输出方法、装置、设备及存储介质 | |
KR100464469B1 (ko) | 데이터 전송 제어 장치 및 전자기기 | |
CN112822386B (zh) | 数据的采集方法及系统 | |
US6421745B1 (en) | Asynchronous connections with scattering page tables for transmitting data from a producer device to a consumer device over an IEEE 1394 serial data bus | |
CN111200594B (zh) | 接收数据的方法、装置、数据接收设备和存储介质 | |
US7720821B1 (en) | Method of and apparatus for writing and reading time sensitive data within a storage device | |
CN116048893B (zh) | 光纤总线接口的测试方法及相关设备 | |
WO2021147052A1 (zh) | 一种基于PCIe的数据传输方法及装置 | |
CN115883756A (zh) | 切换装置及其切换方法 | |
JPH10336252A (ja) | シリアルデータ転送制御装置およびシリアルデータ転送方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |