CN111400214A - 一种双核共用网口的实现方法、智能终端及存储介质 - Google Patents

一种双核共用网口的实现方法、智能终端及存储介质 Download PDF

Info

Publication number
CN111400214A
CN111400214A CN202010123054.2A CN202010123054A CN111400214A CN 111400214 A CN111400214 A CN 111400214A CN 202010123054 A CN202010123054 A CN 202010123054A CN 111400214 A CN111400214 A CN 111400214A
Authority
CN
China
Prior art keywords
core system
message
network port
slave
dual
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.)
Granted
Application number
CN202010123054.2A
Other languages
English (en)
Other versions
CN111400214B (zh
Inventor
李小军
吴闽华
孟庆晓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Genew Technologies Co Ltd
Original Assignee
Shenzhen Genew Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Genew Technologies Co Ltd filed Critical Shenzhen Genew Technologies Co Ltd
Priority to CN202010123054.2A priority Critical patent/CN111400214B/zh
Publication of CN111400214A publication Critical patent/CN111400214A/zh
Application granted granted Critical
Publication of CN111400214B publication Critical patent/CN111400214B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multi Processors (AREA)
  • Small-Scale Networks (AREA)

Abstract

本发明公开了一种双核共用网口的实现方法、智能终端及存储介质,所述方法包括:主核系统生成物理网口,从核系统创建一个物理网口;当所述从核系统需要接收报文时,所述主核系统通过第一DMA通道将报文传输到所述从核系统的BD环上;当所述从核系统需要发送报文时,所述从核系统将报文通过第二DMA通道传输到所述主核系统的物理网口发送BD环指向的内存。本发明通过主核系统控制物理网口,并生成网络接口,从核系统也创建一个网络接口,主核系统通过DMA通道将报文传输到从核系统的BD上,发送则是从核系统将报文通过DMA通道传输到主核系统的网口发送BD指向的内存,避免出现丢包现象。

Description

一种双核共用网口的实现方法、智能终端及存储介质
技术领域
本发明涉及嵌入式驱动技术领域,尤其涉及一种双核共用网口的实现方法、智能终端及存储介质。
背景技术
在嵌入式多核系统领域,存在两种技术,一是AMP(Asymmetric Multi-Processing,非对称多处理,在这种架构下,存在多个处理器;每个中央处理器在某个特定时间内,被指定一个特定的任务去执行),另外一种是SMP(Symmetric Multi Processing,对称多处理,指在一个计算机上汇集了多个CPU,各CPU之间共享内存子系统以及总线结构)。SMP系统上的每个CPU共享系统所有资源,包括串口在内,SMP系统只要一个控制台就够了,而AMP每个CPU有独立的运行代码,任务的调度也是独立的,对整个系统资源的访问也是互斥的,每个CPU上运行的操作系统(OS)甚至完全不一样。
一个物理CPU芯片一般都带有网口,但是网口硬件只能被一个CPU内核系统使用,如果另外一个CPU内核也要使用,只能通过间接的方法。
为了实现双核都能使用物理网口收发报文,通常用的做法是:物理内核被主核控制,同时主从核利用核间共享内存虚拟一个网口,从核要往物理网口发送的报文,先经过虚拟网口,然后经过主核转发到物理网口。如图1所示,物理网口eth0被主核系统控制,同时主从核各自虚拟了一个虚拟网口mnd0,如果从核系统要往外部网络发送报文,先通过从核的mnd0把报文发给主核的mnd0,主核mnd0收到报文后,再调用物理网口eth0发送函数,将报文发送到外部物理网络上去。
同时,从核要接收外部物理网络的报文过程是,主核系统eth0网口收包函数,接收到外部报文后判断是要发送给从核的报文后,通过主核的虚拟网口mnd0发送函数,发送给从核的mnd0网口,这样从核就收到了外部网络报文。
但是,上述方式在两个网口之间进行软件转发时,存在内存拷贝,在大流量的情况下,会出现丢包的情况。
因此,现有技术还有待于改进和发展。
发明内容
本发明的主要目的在于提供一种双核共用网口的实现方法、智能终端及存储介质,旨在解决现有技术中在两个网口之间进行软件转发时,存在内存拷贝,在大流量的情况下会出现丢包的问题。
为实现上述目的,本发明提供一种双核共用网口的实现方法,所述双核共用网口的实现方法包括如下步骤:
主核系统生成物理网口,从核系统创建一个物理网口;
当所述从核系统需要接收报文时,所述主核系统通过第一DMA通道将报文传输到所述从核系统的BD环上;
当所述从核系统需要发送报文时,所述从核系统将报文通过第二DMA通道传输到所述主核系统的物理网口发送BD环指向的内存。
优选地,所述的双核共用网口的实现方法,其中,所述当所述从核系统需要接收报文时,所述主核系统通过第一DMA通道将报文传输到所述从核系统的BD环上,具体包括:
预先将所述BD环设置在所述主核系统和所述从核系统的共享内存中,所述BD环所指向的收包地址为所述从核系统预选分配的内存;
所述主核系统的物理网口驱动接收到报文后,根据预设规则判断出给所述从核系统的报文,则设置所述第一DMA通道的参数,启动DMA传输;
所述第一DMA通道自动将所述主核系统接收到的报文传输给所述从核系统的收包空间。
优选地,所述的双核共用网口的实现方法,其中,所述当所述从核系统需要发送报文时,所述从核系统将报文通过第二DMA通道传输到所述主核系统的物理网口发送BD环指向的内存,具体包括:
所述主核系统预先分配固定地址的内存用于存储所述从核系统需要要发送的报文;
所述从核系统发送报文时,设置所述第二DMA通道的参数,启动DMA传输;
传输完成后,继续发送下一个报文给所述主核系统的下一个缓冲区;
所述主核系统检测到缓冲区中有数据后,将所述缓冲区挂载到物理网口发送BD环中,通过网口硬件负责发送;
发送完毕后,将所述缓冲区标记为空,继续存放所述从核系统发送报文。
优选地,所述的双核共用网口的实现方法,其中,所述主核系统控制所述第一DMA通道,所述从核系统控制所述第二DMA通道;
所述BD环由多个BD表组成,首尾相连形成一个环形的数据结构,每个BD表的信息包括存放报文的内存物理地址、报文长度和状态;
所述设置所述第一DMA通道的参数具体位置:源头当前报文的物理地址、目的为从核系统当前收包的物理地址、以及长度为当前报文的实际长度;
所述设置所述第二DMA通道的参数具体为:源头为发送报文的物理地址、目的为主核系统缓冲区物理地址、以及长度为报文地址。
优选地,所述的双核共用网口的实现方法,其中,所述双核共用网口的实现方法还包括:
所述主核系统网口驱动所述从核系统外部网络收包:
根据报文五元组判断报文是否为发给所述从核系统的报文,
如否,则将报文上交所述主核系统的网络协议栈;
如是,则从共享内存中获取从核系统网口接收BD的数据结构,当前接收BD为地址为:基地址+8*当前接收BD的索引;
获取当前BD在所述从核系统存放报文的物理地址和当前报文在所述主核系统中的物理地址为;
设置所述第一DMA通道的参数,将所述主核系统接收到的报文传输给所述从核系统;
启动DMA传输,设置当前BD状态为忙碌状态,表示当前BD所指向的缓冲区有报文数据;
返回DMA传输的结果。
优选地,所述的双核共用网口的实现方法,其中,所述双核共用网口的实现方法还包括:
获取所述从核系统收包第一个BD,存放在共享内存中;
判断当前BD状态是否为空闲,如果为空闲则表示没有报文,等待预设时间后重复判断当前BD状态是否为空闲;
获取当前BD在从核系统存放报文的物理地址;
将当前BD设置为空闲,表示报文已经处理完成;
将报文上交从核系统协议栈;
获取下一个接收报文BD。
优选地,所述的双核共用网口的实现方法,其中,所述双核共用网口的实现方法还包括:
获取所述从核系统发送的BD地址,所述BD地址在共享内存中;
获取所述从核系统网口当前发送BD的报文地址,所述报文地址为所述主核系统预先分配的内存;
设置所述第二DMA通道的参数;
设置当前BD状态为忙碌状态,表示当前BD所指向的缓冲区有报文数据,并将发包索引指向下一个BD。
优选地,所述的双核共用网口的实现方法,其中,所述双核共用网口的实现方法还包括:
从发送BD的第一项开始,检查当前BD是否为忙碌状态,如否则表示当前BD没有数据并继续监测;
如实则获取当前发送报文的地址,用网口驱动发送函数将报文发送到外部网络;
获取下一个发送BD。
此外,为实现上述目的,本发明还提供一种智能终端,其中,所述智能终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的双核共用网口的实现程序,所述双核共用网口的实现程序被所述处理器执行时实现如上所述的双核共用网口的实现方法的步骤。
此外,为实现上述目的,本发明还提供一种存储介质,其中,所述存储介质存储有双核共用网口的实现程序,所述双核共用网口的实现程序被处理器执行时实现如上所述的双核共用网口的实现方法的步骤。
本发明通过主核系统生成物理网口,从核系统创建一个物理网口;当所述从核系统需要接收报文时,所述主核系统通过第一DMA通道将报文传输到所述从核系统的BD环上;当所述从核系统需要发送报文时,所述从核系统将报文通过第二DMA通道传输到所述主核系统的物理网口发送BD环指向的内存。本发明通过主核系统控制物理网口,并生成网络接口,从核系统也创建一个网络接口,主核系统通过DMA通道将报文传输到从核系统的BD上,发送则是从核系统将报文通过DMA通道传输到主核系统的网口发送BD指向的内存,避免出现丢包现象。
附图说明
图1是现有技术中主核系统与从核系统实现双核都能使用物理网口收发报文的原理示意图;
图2是本发明双核共用网口的实现方法的较佳实施例流程示意图;
图3是本发明双核共用网口的实现方法的较佳实施例中从核系统接收报文的原理示意图;
图4是本发明双核共用网口的实现方法的较佳实施例中BD环的组成示意图;
图5是本发明双核共用网口的实现方法的较佳实施例中BD环中每个BD表的组成示意图;
图6是本发明双核共用网口的实现方法的较佳实施例中从核系统发送报文的原理示意图;
图7是本发明双核共用网口的实现方法的较佳实施例中主核系统网口驱动从核系统外部网络收包流程图;
图8是本发明双核共用网口的实现方法的较佳实施例中从核系统收包任务流程图;
图9是本发明双核共用网口的实现方法的较佳实施例中为从核系统网口发送报文流程图;
图10是本发明双核共用网口的实现方法的较佳实施例中为主核系统为从核系统发送报文创建的任务用于扫描发送BD是否有待发送的报文的流程图;
图11为本发明智能终端的较佳实施例的运行环境示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明较佳实施例所述的双核共用网口的实现方法,如图2所示,所述双核共用网口的实现方法包括以下步骤:
步骤S10、主核系统生成物理网口,从核系统创建一个物理网口;
步骤S20、当所述从核系统需要接收报文时,所述主核系统通过第一DMA通道将报文传输到所述从核系统的BD环上;
步骤S30、当所述从核系统需要发送报文时,所述从核系统将报文通过第二DMA通道传输到所述主核系统的物理网口发送BD环指向的内存。
具体地,主核系统内存地址范围为0~512M,从核系统地址为512~1020M,主从核系统共享内存地址为1020~1024M。如图3所示,主核系统控制物理网口,并生成物理网口eth0,从核系统也创建一个网络接口eth0,但是其驱动的接收功能依赖于主核系统通过第一DMA通道(DMA1)将报文传输到从核系统的BD(buffer description,缓存描述符)上,发送则是从核系统将报文通过第二DMA通道(DMA2)传输到主核系统的网口发送BD指向的内存。
本发明利用DMA通道来将主核系统收到的报文传递给从核系统,将从核系统要发送的报文传递给主核系统,其中主核系统控制第一DMA通道,从核系统控制第二DMA通道。
从核系统收包过程如图3所示:从核系统的收包BD环,放在主从核系统共享内存中,每个BD所指向的收包地址,是从核系统预选分配的内存,右侧箭头所指向的3个(实际可达几千甚至上万,根据实际流量决定)报文。
由于BD环在共享内存中,所以主核系统也能知道从核系统存放报文的物理地址,主核系统的物理网口eth0驱动收到报文后,根据预设规则判断是给从核系统网口的报文,则设置第一DMA通道参数(源头当前报文的物理地址,目的为从核系统当前收包的物理地址,长度为当前报文的实际长度),再启动DMA传输。这样,第一DMA通道自动将主核系统收到的报文传输给从核系统的收包空间。从核系统网口驱动轮询每个报文的状态是否有报文,如果有则将报文上交从核系统的网络协议栈。
如图4所示,BD环就是多个BD表组成的,首尾相连形成一个环形的数据结构,当第一个BD表接收满了后,网口硬件自动将报文收到下一个BD表所指向的物理地址。当到达最后一个BD表时,网口硬件自动将第一个BD表作为下一个收包BD,这样整个过程形成了一个环链。发送也是同样的过程,收发流程各自有一个BD环链。如图4所示,为一个BD环链。
如图5所示,每个BD表包括,数据指针(存放报文的内存物理地址),报文长度,状态。
从核系统发包过程如图6所示:主核系统预先分配固定地址的内存用于存储从核系统要发送的报文(图6主核系统用2个举例,实际根据从核系统发送流量分配,可达几百个),这些内存地址在程序编译的时候就固定了,所以从核系统是知道的。
设定主核系统为从核系统发送报文预留的缓冲区地址为510M开始,每个缓冲区大小为2KB,总计512个缓冲区。从核系统要发送报文时,通过第二DMA通道2,设置通道参数(源头为发送报文的物理地址,目的为主核系统缓冲区物理地址,长度为报文地址)后启动DMA传输。
传输完成后,接着发送下一个报文给主核系统的下一个缓冲区;主核系统检测到缓冲区中有数据后,将该缓冲区挂载到物理网口eth0发送BD中,由网口硬件负责发送。发送完毕后,将该缓冲区标记为空,可以继续存放从核系统发送报文。
其中,定义从核系统网口接收BD环的信息如下:
m_ethRxBdBase=1021M//从核系统网口接收BD的基地址;
m_ethRxBdCount=2048//从核系统网口接收BD个数;
m_ethRxBdIndex=0//从核系统网口当前正在处理的接收BD序号;
m_ethTxBdIndex=0//从核系统网口当前发包使用的BD序号;
m_ethTxBdBase=1021.5M//从核系统网口发送BD的基地址;
m_ethTxBdCount=512//从核系统网口发送BD个数;
以上变量都保存在双核共享内存位置1020M起始,主从双核均可以访问上述变量。
定义BD数据结构体
Typedef struct
{
Volatile ulong ulPackPtr;
Volatile ushort usLength;
Volatile ushort usStatus;
}ST_ETH_BD。
进一步地,如图7所示,图7为主核系统网口驱动从核系统外部网络收包流程图。
A、先判断是不是给从核系统的报文,判断依据一般是根据报文五元组(源MAC/目的MAC、源IP/目的IP,端口号)判断是不是从核系统网口要的报文,如果是则继续以下流程,否则将报文上交主核系统网络协议栈;
B、在主从核系统共享内存中,取从核系统网口接收BD的数据结构,当前接收BD为地址为基地址+8*当前接收BD的索引;pC1CurRxBd=m_ethRxBdBase+8*m_ethRxBdIndex,其中8为一个BD占了8个字节;
C、当前BD在从核系统存放报文的物理地址为pC1CurRxPackPtr=pC1CurRxBd->ulPackPtr;
D、当前报文在主核系统中的物理地址为pC0CurPackPtr;
E、设置第一DMA通道的参数,准备将主核系统收到报文传输给从核系统;其中源地址为pC0CurPackPtr,目的地址为pC1CurRxPackPtr,长度为报文实际长度ulLength;
F、启动DMA传输;
G、设置当前BD状态为BUSY(忙碌状态),pC1CurRxBd->usStatus=BUSY,表示该BD所指向的缓冲区有了报文数据;并将收包索引指向下一个BD,如果当前是最后一个BD,则下一个收包BD是BD环的第一个BD,m_ethRxBdIndex=(m_ethRxBdIndex+1)%m_ethRxBdCount;
H、返回DMA传输的结果;一个报文的处理流程完毕。
进一步地,如图8所示,为从核系统收包任务流程图。
A、取从核系统收包第一个BD,存放主从核系统共享内存中;
B、判断当前BD状态是否为空闲,如果为空闲表示没有报文,等待1毫秒后重复步骤B,否则进入下一步流程;
C、当前BD在从核系统存放报文的物理地址为pC1CurRxPackPtr=pC1CurRxBd->ulPackPtr;
D、将当前BD设置为空闲,表示报文已经处理完了;
E、将报文pC1CurRxPackPtr上交从核系统协议栈;
F、取下一个接收BD;如果当前已经是最后BD,则下一个为BD环链的第一个BD
G、延时1毫秒后,重复步骤B。
进一步地,如图9所示,为从核系统网口发送报文流程图。
A、取从核系统发送BD地址,该发送BD也在主从共享内存中,主从核系统均可以访问;pC1CurTxBd=m_ethTxBdBase+8*m_ethTxBdIndex,其中8为BD占8个字节;
B、取从核系统网口当前发送BD的报文地址pC1CurTxPackPtr=pC1CurTxBd->ulPackPtr,该地址为主核系统预先分配的内存;
C、设置第二DMA通道参数目的地址pC1CurTxPackPtr,源地址=pC0CurPackPtr,长度=ulLength;表示将当前从核系统的报文通过DMA传输给主核系统预设的缓冲区,启动第二DMA通道;
D、设置当前BD状态为BUSY,pC1CurTxBd->usStatus=BUSY,表示该BD所指向的缓冲区有了报文数据;并将发包索引指向下一个BD,如果当前是最后一个BD,则下一个发包BD是环链的第一个BD,m_ethTxBdIndex=(m_ethTxBdIndex+1)%m_ethTxBdCount。
进一步地,如图10所示,为主核系统为从核系统发送报文创建的任务,用于扫描发送BD是否有待发送的报文。
A、从发送BD的第一项开始,检查当前BD是否为BUSY状态,如果不是则表示当前BD没有数据,继续监测,否则进入下一流程;
B、取当前发送报文的地址,用网口驱动发送函数将该报文发送到外部网络;
C、取下一个发送BD;如果当前已经是最后BD,则下一个为BD环链的第一个BD;
D、延时1毫秒继续步骤A。
进一步地,如图11所示,基于上述双核共用网口的实现方法,本发明还相应提供了一种智能终端,所述智能终端包括处理器10、存储器20及显示器30。图11仅示出了智能终端的部分组件,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
所述存储器20在一些实施例中可以是所述智能终端的内部存储单元,例如智能终端的硬盘或内存。所述存储器20在另一些实施例中也可以是所述智能终端的外部存储设备,例如所述智能终端上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器20还可以既包括所述智能终端的内部存储单元也包括外部存储设备。所述存储器20用于存储安装于所述智能终端的应用软件及各类数据,例如所述安装智能终端的程序代码等。所述存储器20还可以用于暂时地存储已经输出或者将要输出的数据。在一实施例中,存储器20上存储有双核共用网口的实现程序40,该双核共用网口的实现程序40可被处理器10所执行,从而实现本申请中双核共用网口的实现方法。
所述处理器10在一些实施例中可以是一中央处理器(Central Processing Unit,CPU),微处理器或其他数据处理芯片,用于运行所述存储器20中存储的程序代码或处理数据,例如执行所述双核共用网口的实现方法等。
所述显示器30在一些实施例中可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。所述显示器30用于显示在所述智能终端的信息以及用于显示可视化的用户界面。所述智能终端的部件10-30通过系统总线相互通信。
在一实施例中,当处理器10执行所述存储器20中双核共用网口的实现程序40时实现以下步骤:
本发明还提供一种存储介质,其中,所述存储介质存储有双核共用网口的实现程序,所述双核共用网口的实现程序被处理器执行时实现如上所述的双核共用网口的实现方法的步骤。
综上所述,本发明提供一种双核共用网口的实现方法、智能终端及存储介质,所述方法包括:主核系统生成物理网口,从核系统创建一个物理网口;当所述从核系统需要接收报文时,所述主核系统通过第一DMA通道将报文传输到所述从核系统的BD环上;当所述从核系统需要发送报文时,所述从核系统将报文通过第二DMA通道传输到所述主核系统的物理网口发送BD环指向的内存。本发明通过主核系统控制物理网口,并生成网络接口,从核系统也创建一个网络接口,主核系统通过DMA通道将报文传输到从核系统的BD上,发送则是从核系统将报文通过DMA通道传输到主核系统的网口发送BD指向的内存,避免出现丢包现象。
当然,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关硬件(如处理器,控制器等)来完成,所述的程序可存储于一计算机可读取的存储介质中,所述程序在执行时可包括如上述各方法实施例的流程。其中所述的存储介质可为存储器、磁碟、光盘等。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

Claims (10)

1.一种双核共用网口的实现方法,其特征在于,所述双核共用网口的实现方法包括:
主核系统生成物理网口,从核系统创建一个物理网口;
当所述从核系统需要接收报文时,所述主核系统通过第一DMA通道将报文传输到所述从核系统的BD环上;
当所述从核系统需要发送报文时,所述从核系统将报文通过第二DMA通道传输到所述主核系统的物理网口发送BD环指向的内存。
2.根据权利要求1所述的双核共用网口的实现方法,其特征在于,所述当所述从核系统需要接收报文时,所述主核系统通过第一DMA通道将报文传输到所述从核系统的BD环上,具体包括:
预先将所述BD环设置在所述主核系统和所述从核系统的共享内存中,所述BD环所指向的收包地址为所述从核系统预选分配的内存;
所述主核系统的物理网口驱动接收到报文后,根据预设规则判断出给所述从核系统的报文,则设置所述第一DMA通道的参数,启动DMA传输;
所述第一DMA通道自动将所述主核系统接收到的报文传输给所述从核系统的收包空间。
3.根据权利要求2所述的双核共用网口的实现方法,其特征在于,所述当所述从核系统需要发送报文时,所述从核系统将报文通过第二DMA通道传输到所述主核系统的物理网口发送BD环指向的内存,具体包括:
所述主核系统预先分配固定地址的内存用于存储所述从核系统需要要发送的报文;
所述从核系统发送报文时,设置所述第二DMA通道的参数,启动DMA传输;
传输完成后,继续发送下一个报文给所述主核系统的下一个缓冲区;
所述主核系统检测到缓冲区中有数据后,将所述缓冲区挂载到物理网口发送BD环中,通过网口硬件负责发送;
发送完毕后,将所述缓冲区标记为空,继续存放所述从核系统发送报文。
4.根据权利要求3所述的双核共用网口的实现方法,其特征在于,所述主核系统控制所述第一DMA通道,所述从核系统控制所述第二DMA通道;
所述BD环由多个BD表组成,首尾相连形成一个环形的数据结构,每个BD表的信息包括存放报文的内存物理地址、报文长度和状态;
所述设置所述第一DMA通道的参数具体位置:源头当前报文的物理地址、目的为从核系统当前收包的物理地址、以及长度为当前报文的实际长度;
所述设置所述第二DMA通道的参数具体为:源头为发送报文的物理地址、目的为主核系统缓冲区物理地址、以及长度为报文地址。
5.根据权利要求1所述的双核共用网口的实现方法,其特征在于,所述双核共用网口的实现方法还包括:
所述主核系统网口驱动所述从核系统外部网络收包:
根据报文五元组判断报文是否为发给所述从核系统的报文,
如否,则将报文上交所述主核系统的网络协议栈;
如是,则从共享内存中获取从核系统网口接收BD的数据结构,当前接收BD为地址为:基地址+8*当前接收BD的索引;
获取当前BD在所述从核系统存放报文的物理地址和当前报文在所述主核系统中的物理地址为;
设置所述第一DMA通道的参数,将所述主核系统接收到的报文传输给所述从核系统;
启动DMA传输,设置当前BD状态为忙碌状态,表示当前BD所指向的缓冲区有报文数据;
返回DMA传输的结果。
6.根据权利要求1所述的双核共用网口的实现方法,其特征在于,所述双核共用网口的实现方法还包括:
获取所述从核系统收包第一个BD,存放在共享内存中;
判断当前BD状态是否为空闲,如果为空闲则表示没有报文,等待预设时间后重复判断当前BD状态是否为空闲;
获取当前BD在从核系统存放报文的物理地址;
将当前BD设置为空闲,表示报文已经处理完成;
将报文上交从核系统协议栈;
获取下一个接收报文BD。
7.根据权利要求1所述的双核共用网口的实现方法,其特征在于,所述双核共用网口的实现方法还包括:
获取所述从核系统发送的BD地址,所述BD地址在共享内存中;
获取所述从核系统网口当前发送BD的报文地址,所述报文地址为所述主核系统预先分配的内存;
设置所述第二DMA通道的参数;
设置当前BD状态为忙碌状态,表示当前BD所指向的缓冲区有报文数据,并将发包索引指向下一个BD。
8.根据权利要求1所述的双核共用网口的实现方法,其特征在于,所述双核共用网口的实现方法还包括:
从发送BD的第一项开始,检查当前BD是否为忙碌状态,如否则表示当前BD没有数据并继续监测;
如实则获取当前发送报文的地址,用网口驱动发送函数将报文发送到外部网络;
获取下一个发送BD。
9.一种智能终端,其特征在于,所述智能终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的双核共用网口的实现程序,所述双核共用网口的实现程序被所述处理器执行时实现如权利要求1-8任一项所述的双核共用网口的实现方法的步骤。
10.一种存储介质,其特征在于,所述存储介质存储有双核共用网口的实现程序,所述双核共用网口的实现程序被处理器执行时实现如权利要求1-8任一项所述的双核共用网口的实现方法的步骤。
CN202010123054.2A 2020-02-27 2020-02-27 一种双核共用网口的实现方法、智能终端及存储介质 Active CN111400214B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010123054.2A CN111400214B (zh) 2020-02-27 2020-02-27 一种双核共用网口的实现方法、智能终端及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010123054.2A CN111400214B (zh) 2020-02-27 2020-02-27 一种双核共用网口的实现方法、智能终端及存储介质

Publications (2)

Publication Number Publication Date
CN111400214A true CN111400214A (zh) 2020-07-10
CN111400214B CN111400214B (zh) 2021-06-18

Family

ID=71430408

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010123054.2A Active CN111400214B (zh) 2020-02-27 2020-02-27 一种双核共用网口的实现方法、智能终端及存储介质

Country Status (1)

Country Link
CN (1) CN111400214B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116166605A (zh) * 2023-04-26 2023-05-26 太初(无锡)电子科技有限公司 数据混合传输方法、装置、dma控制器、介质及系统
CN117478642A (zh) * 2023-12-27 2024-01-30 广州市瀚云信息技术有限公司 通信地址自动分配方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101146280A (zh) * 2007-11-27 2008-03-19 中兴通讯股份有限公司 分布式系统中实现多核处理器对外通信的方法
US20090125648A1 (en) * 2007-11-14 2009-05-14 Yin-Hsi Huang Direct memory access system and method
CN1552028B (zh) * 2001-09-07 2011-11-30 英特尔公司 片上系统和其分布式直接存储器访问的方法和控制系统
CN102439983A (zh) * 2011-10-27 2012-05-02 华为技术有限公司 一种数据快速分发方法和装置
CN103678203A (zh) * 2013-12-13 2014-03-26 国家计算机网络与信息安全管理中心 一种实现网卡零拷贝方法及装置
US20140164654A1 (en) * 2012-12-11 2014-06-12 Gemtek Technology Co., Ltd. Asymmetrical processing multi-core system and network device
CN105988953A (zh) * 2015-02-12 2016-10-05 深圳市中兴微电子技术有限公司 一种直接内存存取dma控制器及数据传输的方法
CN109005070A (zh) * 2018-08-31 2018-12-14 北京计算机技术及应用研究所 一种基于共享内存的双机冗余热备设备

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1552028B (zh) * 2001-09-07 2011-11-30 英特尔公司 片上系统和其分布式直接存储器访问的方法和控制系统
US20090125648A1 (en) * 2007-11-14 2009-05-14 Yin-Hsi Huang Direct memory access system and method
CN101146280A (zh) * 2007-11-27 2008-03-19 中兴通讯股份有限公司 分布式系统中实现多核处理器对外通信的方法
CN102439983A (zh) * 2011-10-27 2012-05-02 华为技术有限公司 一种数据快速分发方法和装置
US20140164654A1 (en) * 2012-12-11 2014-06-12 Gemtek Technology Co., Ltd. Asymmetrical processing multi-core system and network device
CN103678203A (zh) * 2013-12-13 2014-03-26 国家计算机网络与信息安全管理中心 一种实现网卡零拷贝方法及装置
CN105988953A (zh) * 2015-02-12 2016-10-05 深圳市中兴微电子技术有限公司 一种直接内存存取dma控制器及数据传输的方法
CN109005070A (zh) * 2018-08-31 2018-12-14 北京计算机技术及应用研究所 一种基于共享内存的双机冗余热备设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
老郭私房菜: ""网口基本知识"", 《HTTPS://BLOG.CSDN.NET/GUODEQIANGDE/ARTICLE/DETAILS/78604805》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116166605A (zh) * 2023-04-26 2023-05-26 太初(无锡)电子科技有限公司 数据混合传输方法、装置、dma控制器、介质及系统
CN117478642A (zh) * 2023-12-27 2024-01-30 广州市瀚云信息技术有限公司 通信地址自动分配方法

Also Published As

Publication number Publication date
CN111400214B (zh) 2021-06-18

Similar Documents

Publication Publication Date Title
KR100326864B1 (ko) 네트워크통신방법및네트워크시스템
CN106034084B (zh) 一种数据传输方法及装置
KR100509794B1 (ko) 데이터베이스 관리시스템을 이용하는 작업들의 실시간 처리를 위한 스케줄링 방법
JP3606541B2 (ja) 複数ノードの非同期データ通信システム内で早期到達メッセージを処理する方法
US7953915B2 (en) Interrupt dispatching method in multi-core environment and multi-core processor
CN108647104B (zh) 请求处理方法、服务器及计算机可读存储介质
EP3176980A1 (en) Unified server communication method, baseboard management controller and server
US20190327190A1 (en) Technologies for scalable packet reception and transmission
CN111400214B (zh) 一种双核共用网口的实现方法、智能终端及存储介质
US7640549B2 (en) System and method for efficiently exchanging data among processes
EP3644182A1 (en) Container isolation method and device for netlink resource
CN104408110B (zh) 数据请求的方法、装置及系统
CN109818977B (zh) 一种接入服务器通信优化方法、接入服务器以及通信系统
CN113535319A (zh) 一种实现多rdma网卡虚拟化的方法、设备及存储介质
CN113157465A (zh) 基于指针链表的消息发送方法及装置
JPH117434A (ja) 複数ノードの非同期データ通信システム内で早期到達メッセージを処理するシステム
KR101560879B1 (ko) 철강 공정 미들웨어의 태스크 관리 및 서비스 실행을 위한 시스템
CN108055186B (zh) 一种主从处理器通信方法及装置
CN116166421A (zh) 分布式训练任务的资源调度方法及其设备
CN113806035B (zh) 分布式调度方法及业务服务器
US9936003B1 (en) Method and system for transmitting information in a network
CN105022707B (zh) 接口单元装置
CN113032307A (zh) 一种集成器件访问请求处理方法及相关组件
CN113535370A (zh) 一种实现负载均衡的多rdma网卡虚拟化的方法、设备
CN115225592B (zh) 一种直接存储器访问数据传输方法及系统

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
GR01 Patent grant
GR01 Patent grant