一种AMP系统核间通讯方法及系统与流程

文档序号:26139283发布日期:2021-08-03 14:22阅读:326来源:国知局
一种AMP系统核间通讯方法及系统与流程

本发明涉及嵌入式驱动技术领域,尤其涉及一种amp系统核间通讯方法、系统及计算机可读存储介质。



背景技术:

在嵌入式多核系统领域,存在两种技术,一是amp(asymmetricmulti-processing),即非对称多处理(在这种架构下,存在多个处理器;每个中央处理器在某个特定时间内,被指定一个特定的任务去执行),另外一种是smp(symmetricmulti-processing),即对称多处理(在一个计算机上汇集了一组处理器,即多cpu,各cpu之间共享内存子系统以及总线结构)。smp系统上的每个cpu共享系统所有资源,包括串口在内,smp系统只要一个控制台就够了。而amp每个cpu有独立的运行代码,任务的调度也是独立的,对整个系统资源的访问也是互斥的,每个cpu上运行的操作系统(os)甚至完全不一样。

一个硬件cpu上的两个内核,各自运行自己的操作系统和应用软件。虽然两个核运行各自独立的系统,但是两个核必然有通讯的需求,这就是核间通讯。

为了实现核间通讯,人们通常用到几种常用方法,方法一:如图1所示,主从核共享内存,这也是最容易想到的方法。即分配一片内存,主从核都可以访问,一个核把要通讯的数据写入共享内存,另外一个核从共享内存中读取该数据即可。方法二,如图2所示,是借助网络协议,主从核作为独立的网络主机节点互相通讯。主核系统和从核系统均创建用于通讯的socket,一方要发消息给另外一方,只需往本端的socket写入数据,对端通过自己的socket即可收到该消息块。

以上两种方法,都存在内存拷贝若干次的问题,并且主从双核系统均需要内存拷贝,在要求性能的系统中,这两种方法均不可取。

因此,现有技术还有待于改进和发展。



技术实现要素:

本发明的主要目的在于提供一种amp系统核间通讯方法、系统及计算机可读存储介质,旨在解决现有技术中实现核间通讯存在内存拷贝若干次的问题。

为实现上述目的,本发明提供一种amp系统核间通讯方法,所述amp系统核间通讯方法包括如下步骤:

主核发送数据给从核前,设置hdlc的第一通道的si为环回模式,并设置siram为预设值;

设置hdlc的第一通道的bd参数和道属性,初始化hdlc的第一通道;

将发送数据所在的物理地址挂载到hdlc的第一通道的当前发送bd上;

设置当前发送bd为就绪状态;

hdlc控制器将需要发送的数据发送出去,环回后被第一通道接收,则数据发送完成。

可选地,所述的amp系统核间通讯方法,其中,所述hdlc控制器将需要发送的数据发送出去,环回后被第一通道接收,则数据发送完成,之后还包括:

创建hdlc的第一通道的接收任务,轮询接收bd是否存在状态为满的bd;

如果当前接收bd状态为满,则表示从核已接收到数据;

将当前数据所在的内存地址传递给上层处理;

申请空闲接收内存,并将内存物理地址挂载到当前bd;

从核成功接收主核的数据并处理。

可选地,所述的amp系统核间通讯方法,其中,所述amp系统核间通讯方法还包括:

从核发送数据给主核前,设置hdlc的第二通道的si为环回模式,并设置siram为预设值;

设置hdlc的第二通道的bd参数和通道属性,初始化hdlc的第二通道;

将发送数据所在的物理地址挂载到hdlc的第二通道的当前发送bd上;

设置当前发送bd为就绪状态;

hdlc控制器将需要发送的数据发送出去,环回后被第二通道接收,则数据发送完成。

可选地,所述的amp系统核间通讯方法,其中,所述hdlc控制器将需要发送的数据发送出去,环回后被第二通道接收,则数据发送完成,之后还包括:

创建hdlc的第二通道的接收任务,轮询接收bd是否存在状态为满的bd;

如果当前接收bd状态为满,则表示主核已接收到数据;

将当前数据所在的内存地址传递给上层处理;

申请空闲接收内存,并将内存物理地址挂载到当前bd;

主核成功接收从核的数据并处理。

可选地,所述的amp系统核间通讯方法,其中,所述amp系统核间通讯方法还包括:

将cpu中hdlc的第一通道和第二通道均设置为环回模式;

所述第一通道由主核发送数据,从核从所述第一通道接收数据;

所述第二通道由从核发送数据,主核从所述第二通道接收数据。

可选地,所述的amp系统核间通讯方法,其中,所述环回模式为串口发送数据被串口自身接收。

可选地,所述的amp系统核间通讯方法,其中,所述amp系统核间通讯方法还包括:

将需要发送的数据存放在外部内存中,按通道存放;

ucc将muram中保存的每个通道的发送缓存打包到发送fifo中,经过siram的路由指示,由tdm接口发送到线路e1线路上。

可选地,所述的amp系统核间通讯方法,其中,所述amp系统核间通讯方法还包括:

tdm接口从e1线路上接收收到数据,根据siram中的路由配置决定e1每个时隙的选择通道接收;ucc的接收fifo将数据分发到具体时隙muram指向的外部内存中。

此外,为实现上述目的,本发明还提供一种系统,其中,所述系统包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的amp系统核间通讯程序,所述amp系统核间通讯程序被所述处理器执行时实现如上所述的amp系统核间通讯方法的步骤。

此外,为实现上述目的,本发明还提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储有amp系统核间通讯程序,所述amp系统核间通讯程序被处理器执行时实现如上所述的amp系统核间通讯方法的步骤。

本发明中,主核发送数据给从核前,设置hdlc的第一通道的si为环回模式,并设置siram为预设值;设置hdlc的第一通道的bd参数和道属性,初始化hdlc的第一通道;将发送数据所在的物理地址挂载到hdlc的第一通道的当前发送bd上;设置当前发送bd为就绪状态;hdlc控制器将需要发送的数据发送出去,环回后被第一通道接收,则数据发送完成。本发明可以实现核间通讯,不需要内存拷贝,从而满足高性能系统的核间通讯的要求。

附图说明

图1是现有技术中主从核共享内存实现核间通讯的原理示意图;

图2是现有技术中借助网络协议主从核作为独立的网络主机节点互相通讯的原理示意图;

图3是本发明amp系统核间通讯方法的较佳实施例的流程图;

图4是本发明amp系统核间通讯方法的较佳实施例中主核发送数据给从核的流程图;

图5是本发明amp系统核间通讯方法的较佳实施例中从核接收主核发来的hdlc数据的处理流程图;

图6是本发明amp系统核间通讯方法的较佳实施例中从核发送数据给主核的流程图;

图7是本发明amp系统核间通讯方法的较佳实施例中主核接收从核发来的串口数据的处理流程图;

图8是本发明amp系统核间通讯方法的较佳实施例中主核发送数据给从核的过程示意图;

图9是本发明amp系统核间通讯方法的较佳实施例中从核发送数据给主核的过程示意图;

图10为本发明系统的较佳实施例的运行环境示意图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明较佳实施例所述的amp系统核间通讯方法,如图3,所述amp系统核间通讯方法包括以下步骤:

步骤s10、主核发送数据给从核前,设置hdlc的第一通道的si为环回模式,并设置siram为预设值;

步骤s20、设置hdlc的第一通道的bd参数和道属性,初始化hdlc的第一通道;

步骤s30、将发送数据所在的物理地址挂载到hdlc的第一通道的当前发送bd上;

步骤s40、设置当前发送bd为就绪状态;

步骤s50、hdlc控制器将需要发送的数据发送出去,环回后被第一通道接收,则数据发送完成。

具体地,如图4所示,图4为主核发送数据给从核的流程图,设置hdlc通道1(即第一通道)的si环回模式(所述环回模式为串口发送数据被串口自身接收),siram[loop]等1;设置hdlc通道1的bd(bufferdescription,缓存描述符))参数,通道属性等,初始化hdlc通道1;将发送数据所在的物理地址挂载到hdlc通道1的当前发送bd上;设置当前发送bd为就绪状态;hdlc控制器将要发送的数据发送出去,环回后被通道1自己接收;发送完毕,主核发送数据给从核成功。

进一步地,如图5所示,图5为从核接收主核发来的hdlc数据的处理流程图,创建hdlc的第一通道的接收任务,轮询接收bd是否存在状态为满的bd;如果当前接收bd状态为满,则表示从核已接收到数据;将当前数据所在的内存地址传递给上层处理;申请空闲接收内存,并将内存物理地址挂载到当前bd;从核成功接收主核的数据并处理。

具体地,创建hdlc通道1(即第一通道)的接收任务hdlc_recvtask,不停的轮询接收bd是否有满的;如果当前接收bd状态为满,则表示收到了数据;将当前数据所在的内存地址传递给上层处理;申请空闲接收内存,并将内存物理地址挂载到当前bd;成功接收主核的数据并处理。

进一步地,如图6所示,图6为从核发送数据给主核的流程图,从核发送数据给主核前,设置hdlc的第二通道的si为环回模式,并设置siram为预设值;设置hdlc的第二通道的bd参数和通道属性,初始化hdlc的第二通道;将发送数据所在的物理地址挂载到hdlc的第二通道的当前发送bd上;设置当前发送bd为就绪状态;hdlc控制器将需要发送的数据发送出去,环回后被第二通道接收,则数据发送完成。

具体地,设置hdlc通道2(即第二通道)的si环回模式,siram[loop]等于1;设置hdlc通道2的bd参数,通道属性等,初始化hdlc通道1;将发送数据所在的物理地址挂载到hdlc通道2的当前发送bd上;设置当前发送bd为就绪状态;hdlc控制器将要发送的数据发送出去,环回后被通道2自己接收;发送完毕,从核发送数据给主核成功。

进一步地,如图7所示,图7为主核接收从核发来的串口数据的处理流程图,创建hdlc的第二通道的接收任务,轮询接收bd是否存在状态为满的bd;如果当前接收bd状态为满,则表示主核已接收到数据;将当前数据所在的内存地址传递给上层处理;申请空闲接收内存,并将内存物理地址挂载到当前bd;主核成功接收从核的数据并处理。

具体地,创建hdlc通道2(即第二通道)的接收任务hdlc_recvtask,不停的轮询接收bd是否有满的;如果当前接收bd状态为满,则表示收到了数据;将当前数据所在的内存地址传递给上层处理;申请空闲接收内存,并将内存物理地址挂载到当前bd;成功接收从核的数据并处理。

本发明预先将cpu中hdlc的第一通道和第二通道均设置为环回模式;所述第一通道由主核发送数据,从核从所述第一通道接收数据;所述第二通道由从核发送数据,主核从所述第二通道接收数据。

进一步地,如图8、9所示,将需要发送的数据存放在外部内存中,按通道存放;ucc将muram中保存的每个通道的发送缓存打包到发送fifo中,经过siram的路由指示,由tdm接口发送到线路e1线路上。tdm接口从e1线路上接收收到数据,根据siram中的路由配置决定e1每个时隙的选择通道接收(即siram中的路由配置决定了e1每个时隙的会由哪个通道接收);ucc的接收fifo将数据分发到具体时隙muram指向的外部内存中。siram的重要作用是每个通道的路由,同时支持通道环回功能。某通道如果在siram设置了环回,那么其发送的数据会被自己接收到。

进一步地,如图10所示,基于上述amp系统核间通讯方法,本发明还相应提供了一种系统,所述系统包括处理器10、存储器20及显示器30。图10仅示出了系统的部分组件,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。

所述存储器20在一些实施例中可以是所述系统的内部存储单元,例如系统的硬盘或内存。所述存储器20在另一些实施例中也可以是所述系统的外部存储设备,例如所述系统上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器20还可以既包括所述系统的内部存储单元也包括外部存储设备。所述存储器20用于存储安装于所述系统的应用软件及各类数据,例如所述安装系统的程序代码等。所述存储器20还可以用于暂时地存储已经输出或者将要输出的数据。在一实施例中,存储器20上存储有amp系统核间通讯程序40,该amp系统核间通讯程序40可被处理器10所执行,从而实现本申请中amp系统核间通讯方法。

所述处理器10在一些实施例中可以是一中央处理器(centralprocessingunit,cpu),微处理器或其他数据处理芯片,用于运行所述存储器20中存储的程序代码或处理数据,例如执行所述amp系统核间通讯方法等。

所述显示器30在一些实施例中可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organiclight-emittingdiode,有机发光二极管)触摸器等。所述显示器30用于显示在所述系统的信息以及用于显示可视化的用户界面。所述系统的部件10-30通过系统总线相互通信。

在一实施例中,当处理器10执行所述存储器20中amp系统核间通讯程序40时实现以下步骤:

主核发送数据给从核前,设置hdlc的第一通道的si为环回模式,并设置siram为预设值;

设置hdlc的第一通道的bd参数和道属性,初始化hdlc的第一通道;

将发送数据所在的物理地址挂载到hdlc的第一通道的当前发送bd上;

设置当前发送bd为就绪状态;

hdlc控制器将需要发送的数据发送出去,环回后被第一通道接收,则数据发送完成。

其中,所述hdlc控制器将需要发送的数据发送出去,环回后被第一通道接收,则数据发送完成,之后还包括:

创建hdlc的第一通道的接收任务,轮询接收bd是否存在状态为满的bd;

如果当前接收bd状态为满,则表示从核已接收到数据;

将当前数据所在的内存地址传递给上层处理;

申请空闲接收内存,并将内存物理地址挂载到当前bd;

从核成功接收主核的数据并处理。

其中,所述amp系统核间通讯方法还包括:

从核发送数据给主核前,设置hdlc的第二通道的si为环回模式,并设置siram为预设值;

设置hdlc的第二通道的bd参数和通道属性,初始化hdlc的第二通道;

将发送数据所在的物理地址挂载到hdlc的第二通道的当前发送bd上;

设置当前发送bd为就绪状态;

hdlc控制器将需要发送的数据发送出去,环回后被第二通道接收,则数据发送完成。

其中,所述hdlc控制器将需要发送的数据发送出去,环回后被第二通道接收,则数据发送完成,之后还包括:

创建hdlc的第二通道的接收任务,轮询接收bd是否存在状态为满的bd;

如果当前接收bd状态为满,则表示主核已接收到数据;

将当前数据所在的内存地址传递给上层处理;

申请空闲接收内存,并将内存物理地址挂载到当前bd;

主核成功接收从核的数据并处理。

其中,所述amp系统核间通讯方法还包括:

将cpu中hdlc的第一通道和第二通道均设置为环回模式;

所述第一通道由主核发送数据,从核从所述第一通道接收数据;

所述第二通道由从核发送数据,主核从所述第二通道接收数据。

其中,所述环回模式为串口发送数据被串口自身接收。

其中,所述amp系统核间通讯方法还包括:

将需要发送的数据存放在外部内存中,按通道存放;

ucc将muram中保存的每个通道的发送缓存打包到发送fifo中,经过siram的路由指示,由tdm接口发送到线路e1线路上。

其中,所述amp系统核间通讯方法还包括:

tdm接口从e1线路上接收收到数据,根据siram中的路由配置决定e1每个时隙的选择通道接收;ucc的接收fifo将数据分发到具体时隙muram指向的外部内存中。

本发明还提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储有amp系统核间通讯程序,所述amp系统核间通讯程序被处理器执行时实现如上所述的amp系统核间通讯方法的步骤。

综上所述,本发明提供一种amp系统核间通讯方法及系统,所述方法包括:主核发送数据给从核前,设置hdlc的第一通道的si为环回模式,并设置siram为预设值;设置hdlc的第一通道的bd参数和道属性,初始化hdlc的第一通道;将发送数据所在的物理地址挂载到hdlc的第一通道的当前发送bd上;设置当前发送bd为就绪状态;hdlc控制器将需要发送的数据发送出去,环回后被第一通道接收,则数据发送完成。本发明可以实现核间通讯,不需要内存拷贝,从而满足高性能系统的核间通讯的要求。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

当然,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关硬件(如处理器,控制器等)来完成,所述的程序可存储于一计算机可读取的计算机可读存储介质中,所述程序在执行时可包括如上述各方法实施例的流程。其中所述的计算机可读存储介质可为存储器、磁碟、光盘等。

应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1