[go: up one dir, main page]

CN117692408A - Can帧发送方法、装置及系统、计算设备及存储介质 - Google Patents

Can帧发送方法、装置及系统、计算设备及存储介质 Download PDF

Info

Publication number
CN117692408A
CN117692408A CN202311786026.9A CN202311786026A CN117692408A CN 117692408 A CN117692408 A CN 117692408A CN 202311786026 A CN202311786026 A CN 202311786026A CN 117692408 A CN117692408 A CN 117692408A
Authority
CN
China
Prior art keywords
frame
port
destination
field
forwarding table
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
Application number
CN202311786026.9A
Other languages
English (en)
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.)
Beijing Armyfly Technology Co Ltd
Original Assignee
Beijing Armyfly Technology 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 Beijing Armyfly Technology Co Ltd filed Critical Beijing Armyfly Technology Co Ltd
Priority to CN202311786026.9A priority Critical patent/CN117692408A/zh
Publication of CN117692408A publication Critical patent/CN117692408A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/252Store and forward routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/111Switch interfaces, e.g. port details
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请涉及一种CAN帧发送方法、装置及系统、计算设备及存储介质,该方法包括:主控处理器将待发送的第一CAN帧封装为ETH报文,通过交换模块将ETH报文传输至网络处理器;ETH报文包括第一CAN帧的第一CAN ID;网络处理器解析ETH报文获取第一CAN帧和第一CAN ID;网络处理器根据硬件转发表项记录的各CAN帧的ID对应的各目的CAN端口,确定出第一CAN ID的目的CAN端口包括第一CAN端口;网络处理器将第一CAN帧传输至配置有第一CAN端口的第一CAN控制器的PTB;第一CAN控制器通过第一CAN端口发送第一CAN帧。本申请CAN帧的发送不需要CPU参与,完全由硬件完成,可提高CAN帧的发送效率。

Description

CAN帧发送方法、装置及系统、计算设备及存储介质
技术领域
本申请涉及CAN帧发送技术领域,特别是指质一种CAN帧发送方法、装置及系统、计算设备及存储介质。
背景技术
传统的通过软件发送CAN帧的方法,在发送CAN帧时,需要主控处理器的主控制器(即CPU)把要发送的CAN帧(包括CAN ID、数据以及数据长度)写到对应的CAN控制器空闲的发送缓存器(即Secondary Transmit Buffer,STB,辅发送缓冲器)中,CAN控制器启动CAN帧发送,从一个CAN端口发送至对应的CAN终端中。在该CAN控制器把CAN帧发送完毕后,会通过中断方式通知CPU进行STB发送缓存器的回收,并根据中断状态设置该发送缓存器为空闲状态,以进行下一CAN帧的发送,如图1所示。
上述现有方法存在的技术问题是:由于STB发送缓存器有限,因此当CAN帧发送吞吐量较大时,会频繁的产生中断给CPU,以进行发送缓存器的回收,这不仅会耗费大量的CPU资源,也会降低CAN帧的发送效率。
发明内容
鉴于现有技术的以上问题,本申请提供一种CAN帧发送方法、装置及系统、计算设备及存储介质,以降低对CPU资源的耗费,以相应的提高CAN帧的发送效率。
为达到上述目的,本申请第一方面提供了一种CAN帧发送方法,包括:
主控处理器将待发送的第一CAN帧封装为ETH报文,并通过交换模块将所述ETH报文传输至网络处理器;所述ETH报文中还包括所述第一CAN帧的第一CAN ID;
所述网络处理器解析所述ETH报文获取所述第一CAN帧和所述第一CAN ID;
所述网络处理器根据硬件转发表项中记录的各CAN帧的ID对应的各目的CAN端口,确定出所述第一CAN ID对应的目的CAN端口,其中,所确定出的目的CAN端口包括第一CAN端口;
所述网络处理器将所述第一CAN帧传输至配置有所述第一CAN端口的第一CAN控制器的PTB发送缓存器;
所述第一CAN控制器将所述PTB发送缓存器内的所述第一CAN帧通过所述第一CAN端口发送出去。
由上,本申请是把CAN帧封装成ETH报文后通过交换模块发送至网络处理器,由网络处理器根据硬件转发表项确定要发送该CAN帧的目的CAN端口,然后网络处理器将该CAN帧发送到配置有该目的CAN端口的CAN控制器的PTB发送缓存器,然后由CAN控制器把PTB发送缓存器内要发送的CAN帧从相应的CAN口发送出去,由于该CAN帧被存储到PTB发送缓存器,而PTB发送缓存器容量大,所以其可以减少主控处理器的CPU中断,再者采用硬件转发表项进行CAN帧转发,也可以减少主控处理器的CPU中断,因此降低了CPU的参与度,降低对CPU资源的耗费,显著提高了CAN帧的发送效率。
作为第一方面的一种可能的实现方式,所述ETH报文包括源MAC地址字段、目的MAC地址字段、以太网类型字段和ETH数据字段;所述ETH数据字段包括标志位字段、CAN ID字段、数据长度字段、CAN帧扩展帧标志字段、CAN数据字段、校验和字段、PAD字段;
所述主控处理器将所述待发送的第一CAN帧封装为ETH报文,包括:
所述源MAC地址字段、目的MAC地址字段、以太网类型字段、标志位字段、PAD字段根据自定义填写;
将所述待发送的第一CAN帧填入所述CAN数据字段;
从所述待发送的第一CAN帧中获取第一CAN ID、第一CAN帧的长度,将所述第一CANID、第一CAN帧的长度填入所述CAN ID字段和数据长度字段;
根据所述第一CAN ID所占比特位确定是否是CAN扩展帧,并相应填写CAN帧扩展帧标志字段;
基于所述ETH数据字段计算校验和的值填入校验和字段。
由上,本申请按照如上形式将CAN帧封装成ETH报文后通过交换模块发送至网络处理器,由网络处理器根据硬件转发表项确定要发送该CAN帧的目的CAN端口,然后网络处理器将该CAN帧发送到配置有该目的CAN端口的CAN控制器的PTB发送缓存器,然后由CAN控制器把PTB发送缓存器内要发送的CAN帧从相应的CAN口发送出去,由于该CAN帧被存储到PTB发送缓存器且PTB发送缓存器容量大,所以其可以减少主控处理器的CPU中断,再者采用硬件转发表项进行CAN帧转发,也可以减少主控处理器的CPU中断,因此降低了CPU的参与度,降低对CPU资源的耗费,并且由于不会频繁产生中断,也显著提高了CAN帧的发送效率。
作为第一方面的一种可能的实现方式,所述硬件转发表项具体包括hash索引值项和对应的hash表项:所述hash索引值项中包括根据各CAN帧的CAN ID和CAN帧扩展帧标志计算出的各hash索引值,每个所述hash索引值对应的hash表项中包括与相应CAN帧的目的CAN端口对应的bitmap值;
所述网络处理器根据硬件转发表项中记录的各CAN帧的ID对应的各目的CAN端口的信息,确定出所述第一CAN ID对应的目的CAN端口,包括:
所述网络处理器根据第一CAN ID和CAN帧扩展帧标志计算出第一CAN帧的hash索引值,在硬件转发表项中查询命中所述第一CAN帧的hash索引值时,获得对应的bitmap值;
基于bitmap值获得对应的目的CAN端口,作为所述第一CAN ID的对应的目的CAN端口。
由上,本申请通过CAN帧的CAN ID和CAN帧扩展帧标志计算hash值,根据该hash值可以使该CAN帧快速地匹配到对应硬件转发表项,从对应的硬件转发表项中获取发送目的端口,然后由CAN控制器从对应的CAN端口转发CAN帧,该CAN帧的发送不需要CPU参与,完全由硬件完成,能够显著提高CAN帧的发送效率。
作为第一方面的一种可能的实现方式,还包括:
在硬件转发表项中查询未命中所述第一CAN帧的hash索引值时,所述主控处理器在所述硬件转发表项中增加相应的转发项。
作为第一方面的一种可能的实现方式,在硬件转发表项中查询未命中所述第一CAN帧的hash索引值时,所述主控处理器在所述硬件转发表项中增加相应的转发项,包括:
所述主控处理器根据第一CAN ID和CAN帧扩展帧标志计算出第一CAN帧hash索引值,该hash索引值对应的hash表项中填入第一CAN帧中的目的CAN端口对应的bitmap值。
由上,本申请在根据hash值匹配不到硬件转发表项时,可以重新硬件转发表项中的配置相应的转发项,这样使得要发送的CAN帧都能匹配到对应硬件转发表项。
作为第一方面的一种可能的实现方式,还包括:
所述主控处理器初始化第一CAN控制器为硬件发送模式;
所述主控处理器将所述硬件转发表项预配置到所述网络处理器中。
由上,本申请预先初始化CAN控制器为硬件发送模式,并预配置硬件转发表项,以使得CAN控制器可以根据硬件转发表项把要发送的CAN帧从相应的CAN口发送出去,该CAN帧的发送不需要CPU参与,完全由硬件完成,能够显著提高CAN帧的发送效率。
为达到上述目的,本申请第二方面提供了一种CAN帧发送装置,包括:
主控处理器,用于将待发送的第一CAN帧封装为ETH报文,将所述ETH报文发送至交换模块;
交换模块,用于将所述ETH报文发送至网络处理器;
网络处理器,用于解析所述ETH报文获取所述第一CAN帧和所述第一CAN ID,根据硬件转发表项中记录的各CAN帧的ID对应的各目的CAN端口,确定出所述第一CAN ID对应的目的CAN端口,其中,所确定出的目的CAN端口包括第一CAN端口,将所述第一CAN帧传输至配置有所述第一CAN端口的第一CAN控制器的PTB发送缓存器;
第一CAN控制器,用于将所述PTB发送缓存器内的所述第一CAN帧通过所述第一CAN端口发送出去。
为达到上述目的,本申请第三方面提供了一种CAN帧发送系统,包括:上述第二方面的CAN帧发送装置和CAN终端;
所述CAN帧发送装置和CAN终端用于:实现上述第一方面的任一项所述的方法。
本申请第四方面提供了一种计算设备,包括:
处理器,以及
存储器,其上存储有程序指令,所述程序指令当被所述处理器执行时使得所述处理器执行上述第一方面任一所述的方法。
本申请第五方面提供了一种计算机可读存储介质,其上存储有程序指令,所述程序指令当被计算机执行时使得所述计算机实现上述第一方面的任一所述的方法。
附图说明
图1为现有CAN帧发送系统的结构示意图;
图2为本申请实施例提供的一种CAN帧发送装置的一结构性示意性图;
图3是本申请实施例提供的一种CAN帧发送方法的一实施例的流程图;
图4是本申请实施例提供的一种主控处理器初始化流程图;
图5是本申请实施例提供的一种硬件转发表项配置处理流程图;
图6为本申请实施例提供的一种CAN帧发送方法的一具体实施方式的流程图;
图7是本申请实施例提供的一种计算设备的结构性示意性图。
应理解,上述结构示意图中,各框图的尺寸和形态仅供参考,不应构成对本发明实施例的排他性的解读。结构示意图所呈现的各框图间的相对位置和包含关系,仅为示意性地表示各框图间的结构关联,而非限制本发明实施例的物理连接方式。
具体实施方式
下面结合附图并举实施例,对本申请提供的技术方案作进一步说明。应理解,本申请实施例中提供的系统结构和业务场景主要是为了说明本申请的技术方案的可能的实施方式,不应被解读为对本申请的技术方案的唯一限定。本领域普通技术人员可知,随着系统结构的演进和新业务场景的出现,本申请提供的技术方案对类似技术问题同样适用。
应理解,本申请实施例提供的CAN帧发送方案,包括CAN帧发送方法、装置及系统。由于这些技术方案解决问题的原理相同或相似,在如下具体实施例的介绍中,某些重复之处可能不再赘述,但应视为这些具体实施例之间已有相互引用,可以相互结合。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。如有不一致,以本说明书中所说明的含义或者根据本说明书中记载的内容得出的含义为准。另外,本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。为了准确地对本申请中的技术内容进行叙述,以及为了准确地理解本发明,在对具体实施方式进行说明之前先对本说明书中所使用的术语给出如下的解释说明或定义。
本申请针对传统的通过软件发送CAN帧的方法,当CAN帧发送吞吐量较大时,会频繁的产生中断给CPU,这不仅会耗费大量的CPU资源,也会降低CAN帧的发送效率的问题,提出一种CAN帧发送方法,该方法把CAN帧封装成ETH报文后通过交换模块发送至网络处理器,由网络处理器根据硬件转发表项确定要发送该CAN帧的目的CAN端口,然后网络处理器将该CAN帧发送到配置有该目的CAN端口的CAN控制器的PTB发送缓存器,然后由CAN控制器把PTB发送缓存器内要发送的CAN帧从相应的CAN口发送出去,由于该CAN帧被存储到PTB发送缓存器且PTB发送缓存器容量大,所以其可以减少主控处理器的CPU中断,再者采用硬件转发表项进行CAN帧转发,也可以减少主控处理器的CPU中断,因此降低了CPU的参与度,降低对CPU资源的耗费,并且由于不会频繁产生中断,也显著提高了CAN帧的发送效率。
【CAN帧发送系统的实施例】
本申请实施例提供了一种CAN帧发送系统,包括:CAN帧发送装置(如图2所示)和多个CAN终端;
所述CAN帧发送装置和多个CAN终端用于:实现CAN帧发送方法。
如图2所示,本申请实施例提供的CAN帧发送装置包括:主控处理器、交换模块、网络处理器和第一CAN控制器。
主控处理器,用于将待发送的第一CAN帧封装为ETH报文,将所述ETH报文发送至交换模块;
交换模块,用于将所述ETH报文发送至网络处理器;
网络处理器,用于解析所述ETH报文获取所述第一CAN帧和所述第一CAN ID,根据硬件转发表项中记录的各CAN帧的ID对应的各目的CAN端口,确定出所述第一CAN ID的对应的目的CAN端口,其中,所确定出的目的CAN端口包括第一CAN端口,将所述第一CAN帧传输至配置有所述第一CAN端口的第一CAN控制器的PTB发送缓存器;
第一CAN控制器,用于将所述PTB发送缓存器内的所述第一CAN帧通过所述第一CAN端口发送出去。
具体的,如图2所示,CAN帧发送装置中可以包括有多个第一CAN控制器,第一CAN控制器可以是CAN控制器1、CAN控制器2、……、CAN控制器n,CAN帧发送系统包括的多个CAN终端可以为CAN终端1、CAN终端2、……、CAN终端n。
多个第一CAN控制器与多个CAN终端一一连接。
每个第一CAN控制器包括PTB发送缓存器(CAN控制器带有的一种类型的发送缓存,即高优先级的主发送缓冲器,Primary Transmit Buffer),该PTB发送缓存器用于存储网络处理器发送来的第一CAN帧,该PTB发送缓存器的容量为大容量。
本申请可以分别实现各CAN控制器的CAN帧的发送。
其中,主控处理器通过pcie口与交换模块连接,交换模块通过eth15口与网络处理器连接。
对于具体的CAN帧发送方法,下面将以其中的一CAN控制器(如下称为第一CAN控制器)和所连接的CAN终端(如下称为第一CAN终端)为例,详细描述。
【CAN帧发送方法的一实施例】
本申请提出一种CAN帧发送方法,如图3所示,该方法的具体步骤如下:
S110:主控处理器将待发送的第一CAN帧封装为ETH报文,并通过交换模块将所述ETH报文传输至网络处理器;所述ETH报文中还包括所述第一CAN帧的第一CAN ID;
S120:所述网络处理器解析所述ETH报文获取所述第一CAN帧和所述第一CAN ID;
S130:所述网络处理器根据硬件转发表项中记录的各CAN帧的ID对应的各目的CAN端口,确定出所述第一CAN ID对应的目的CAN端口,其中,所确定出的目的CAN端口包括第一CAN端口;
S140:所述网络处理器将所述第一CAN帧传输至配置有所述第一CAN端口的第一CAN控制器的PTB发送缓存器;
S150:所述第一CAN控制器将所述PTB发送缓存器内的所述第一CAN帧通过所述第一CAN端口发送出去。
在该实施例中,主控处理器将CAN帧封装成ETH报文,可以通过调用ETH发送函数,把封装好的ETH报文从交换模块,然后由交换模块通过eth15口发送给网络处理器,如图2所示。
其中,因为第一CAN控制器的PTB发送缓存器与主控处理器没有连接端口,所以通过网络处理器、交换模块和主控处理器连接。因为CAN帧要经过主控处理器、交换模块、网络处理器、再到第一CAN控制器的PTB发送缓存器,所以需要将CAN帧进行ETH封装。第一CAN控制器发送的是CAN帧,所以网络处理器要将ETH报文解析获得第一CAN帧才发送给第一CAN控制器进行发送。
其中,相比现有当CAN帧发送吞吐量较大时,使用容量较小的STB发送缓存器会导致频繁的产生中断给CPU进行发送缓存器的回收,耗费大量的CPU资源,本申请使用的PTB发送缓存器容量大,这样可以减少中断给到CPU,减少CPU资源的耗费。
由上,本申请是把CAN帧封装成ETH报文后通过交换模块发送至网络处理器,由网络处理器根据硬件转发表项确定要发送该CAN帧的目的CAN端口,然后网络处理器将该CAN帧发送到配置有该目的CAN端口的CAN控制器的PTB发送缓存器,然后由CAN控制器把PTB发送缓存器内要发送的CAN帧从相应的CAN口发送出去,由于该CAN帧被存储到PTB发送缓存器且PTB发送缓存器容量大,所以其可以减少主控处理器的CPU中断,再者采用硬件转发表项进行CAN帧转发,也可以减少主控处理器的CPU中断,因此降低了CPU的参与度,降低对CPU资源的耗费,并且由于不会频繁产生中断,也显著提高了CAN帧的发送效率。
在一些实施例中,本申请所述网络处理器可以将第一CAN帧发送至第一CAN控制器的
在一些实施例中,所述ETH报文包括源MAC地址字段、目的MAC地址字段、以太网类型字段和ETH数据字段;所述ETH数据字段包括标志位字段、CAN ID字段、数据长度字段、CAN帧扩展帧标志字段、CANETH数据字段、校验和字段、PAD字段;
所述主控处理器将所述待发送的第一CAN帧封装为ETH报文,包括:
所述源MAC地址字段、目的MAC地址字段、以太网类型字段、标志位字段、PAD字段根据自定义填写;
将所述待发送的第一CAN帧填入所述CAN数据字段;
从所述待发送的第一CAN帧中获取第一CAN ID、第一CAN帧的长度,将所述第一CANID、第一CAN帧的长度填入所述CAN ID字段和数据长度字段;
根据所述CAN ID所占比特位确定是否是CAN扩展帧,并相应填写CAN帧扩展帧标志字段;
基于所述ETH数据字段计算校验和的值填入校验和字段。
在上述实施例中,第一CAN帧被封装到表1所述的ETH报文的数据段中,其中由于主控处理器将ETH报文发送至网络处理器,属于在设备内部发送ETH报文,故用于ETH报文传输的源MAC地址、目的MAC地址和以太网类型用户可以自己定义,其中以太网类型可以为0x8811。
表1
源MAC地址 目的MAC地址 以太网类型 数据段
6字节 6字节 2字节 82字节
具体的数据段(即ETH数据字段)内容如表2所示。
表2
CAN帧作为数据段透传,所以将其完整的放于ETH数据字段中的CAN数据1和CAN数据2中。CAN数据1和CAN数据2即将CAN帧的数据拆分成两段存放,也可以不拆分放于一个CAN数据内。
通过CAN ID的有效长度(即CAN ID所占比特位)可以把CAN帧分为标准帧和扩展帧,标准帧的CAN ID为11bit、扩展帧的CAN ID为29bit,所以根据CAN ID的有效长度可以确定是否是CAN扩展帧,当据CAN ID的有效长度确定为标准帧的CAN ID时,扩展帧标志置0,当据CAN ID的有效长度确定为扩展帧的CAN ID时,扩展帧标志置1。
校验和为ETH数据字段的校验和,基于ETH数据字计算得到。
PAD字段是为了保证以太网帧的最小长度,以太网帧的最小长度是64字节,如果数据部分不足64字节,则需要添加PAD字段来填充,PAD字段默认填0。
数据长度和扩展帧标志也可以放于两个字段中,根据实际需要确定。
表2中的标志位可以设置为0x12345678。
由上,本申请按照如上形式将CAN帧封装成ETH报文后通过交换模块发送至网络处理器,由网络处理器根据硬件转发表项确定要发送该CAN帧的目的CAN端口,然后网络处理器将该CAN帧发送到配置有该目的CAN端口的CAN控制器的PTB发送缓存器,然后由CAN控制器把PTB发送缓存器内要发送的CAN帧从相应的CAN口发送出去,由于该CAN帧被存储到PTB发送缓存器且PTB发送缓存器容量大,所以其可以减少主控处理器的CPU中断,再者采用硬件转发表项进行CAN帧转发,也可以减少主控处理器的CPU中断,因此降低了CPU的参与度,降低对CPU资源的耗费,并且由于不会频繁产生中断,也显著提高了CAN帧的发送效率。
在一些实施例中,所述硬件转发表项具体包括hash索引值项和对应的hash表项:所述hash索引值项中包括根据各CAN帧的CAN ID和CAN帧扩展帧标志计算出的各hash索引值,每个所述hash索引值对应的hash表项中包括与相应CAN帧的目的CAN端口对应的bitmap值;
所述网络处理器根据硬件转发表项中记录的各CAN帧的ID对应的各目的CAN端口的信息,确定出所述第一CAN ID对应的目的CAN端口,包括:
所述网络处理器根据第一CAN ID和CAN帧扩展帧标志计算出第一CAN帧的hash索引值,在硬件转发表项中查询命中所述第一CAN帧的hash索引值时,获得对应的bitmap值;
基于bitmap值获得对应的目的CAN端口,作为所述第一CAN ID的对应的目的CAN端口。
由上,本申请通过CAN帧的CAN ID和CAN帧扩展帧标志计算hash值,将其作为硬件转发表项的索引值,根据hash值可以使后续快速地匹配硬件转发表项。硬件转发表项中包括目的CAN端口的bitmap值,可以使得网络处理器根据该目的CAN端口的bitmap值确定CAN帧所要发送的端口,然后由CAN控制器从对应的CAN端口转发CAN帧,该CAN帧的发送不需要CPU参与,完全由硬件完成,能够显著提高CAN帧的发送效率。
在上述实施例中,本申请硬件转发表项(硬件使用的路由表)是由主控处理器(CPU)配置和维护,然后直接配置到网络处理器中。为了提高管理CPU配置和维护效率,本申请采用hash表存储硬件转发表项。hash表中的hash值通过CAN ID和CAN帧扩展帧标志计算,具体的hash值计算方法为现有方法,对此不做详细描述。每一条hash表中存放目的CAN端口号的bitmap,最多存放2048条hash表项,CAN端口和端口bitmap的对应关系如表3所示。
表3
其中,使用表3中的哪些CAN端口是由用户确定的,然后根据CAN端口号确定端口bitmap。
其中,本申请的CAN端口包括多个,可以将一个CAN帧通过多个CAN端口发送出去,此时可以在硬件转发表项对应的表3中填入多个CAN端口的bitmap值,然后该CAN帧可以通过多个CAN控制器对应的端口发送出去,这种设置一个帧通过多个端口发送的方式为组播方式,所以本申请可以实现CAN报文的组播发送。
在一些实施例中,还包括:
在硬件转发表项中查询未命中所述第一CAN帧的hash索引值时,所述主控处理器在所述硬件转发表项中增加相应的转发项。
在一些实施例中,在硬件转发表项中查询未命中所述第一CAN帧的hash索引值时,所述主控处理器在所述硬件转发表项中增加相应的转发项,包括:
所述主控处理器根据第一CAN ID和CAN帧扩展帧标志计算出第一CAN帧hash索引值,该hash索引值对应的hash表项中填入第一CAN帧中的目的CAN端口对应的bitmap值。
在上述实施例中,若在硬件转发表项中查询未命中待发送的CAN帧对应的hash索引值时,说明硬件转发表项中未配置该CAN帧的转发项,此时可以由网络处理器返给主控处理器一个信息,告知主控处理器未命中,由主控处理器重新给该CAN帧配置对应的转发项,将配置好的转发项增加到硬件转发表项中,此时再有网络处理器在硬件转发表项中查询是否命中。
在一些实施例中,还包括:
所述主控处理器初始化第一CAN控制器为硬件发送模式;
所述主控处理器将所述硬件转发表项预配置到所述网络处理器中。
在上述一些实施例中,在执行上述方法步骤S110至S150之前,首先需要进行初始化,如图4所示,初始化化过程如下:
1、初始化CAN控制器为硬件发送模式;即CAN控制器可以使用硬件转发表项发送CAN帧;
2、配置CAN帧的硬件转发表项。
硬件转发表项的处理流程如图5所示,包括:
1、从CLI配置命令获取CAN ID和CAN帧扩展帧标志,以及要发送的CAN端口的bitmap;
2、依据CAN ID和CAN帧扩展帧标志计算出硬件转发表项的hash值;
3、把CAN端口的bitmap写入hash值为索引的硬件转发表项中。
由上,本申请预先初始化CAN控制器为硬件发送模式,并预配置硬件转发表项,以使得CAN控制器可以根据硬件转发表项把要发送的CAN帧从相应的CAN口发送出去,该CAN帧的发送不需要CPU参与,完全由硬件完成,能够显著提高CAN帧的发送效率。
【CAN帧发送方法的一具体实施方式】
如图6为本申请实施例提供的一种CAN帧发送方法的全部流程图,以第一CAN帧经过CAN控制器1和CAN控制器2发送到CAN终端1和CAN终端2为例,如图6所示,该方法流程包括:
0、主控处理器初始化CAN控制器1和CAN控制器2为硬件发送模式,配置CAN帧的硬件转发表项至网络处理器,配置流程如图5所示;
其中,硬件转发表项中的目的端口为CAN控制器1与CAN终端1的端口1、CAN控制器2与CAN终端2的端口2(端口号未在图2中给出),即填写表3中的位1和位2所示的bitmap;
1、主控处理器接收第一CAN帧,将第一CAN帧封装为ETH报文,将ETH报文通过交换模块发送网络处理器;
其中,根据第一CAN帧得到按照表1和表2中的CAN ID、数据长度、CAN数据1、CAN数据2;根据第一CAN帧的CAN ID得到扩展帧标志,计算校验和字段,然后预置源MAC地址、目的MAC地址、以太网类型字段、标志位字段、PAD字段,得到封装得到ETH报文。
2、网络处理器解析ETH报文获取第一CAN帧、第一CAN ID和第一CAN帧扩展帧标志;
3、网络处理器根据第一CAN ID和第一CAN帧扩展帧标志计算第一hash值,在硬件转发表项中查询命中第一CAN帧的hash索引值时,获得对应的bitmap值,基于bitmap值获得对应的目的CAN端口:端口1和端口2;
4、网络处理器将第一CAN帧传输至端口1对应的CAN控制器1的PTB发送缓存器、端口2对应的CAN控制器2的PTB发送缓存器;
5、CAN控制器1和CAN控制器2将PTB内的该第一CAN帧通过端口1、端口2分别发送至CAN终端1和CAN终端2;
6、若网络处理器在硬件转发表项中查询未命中第一CAN帧的hash索引值时,通知主控处理器在硬件转发表项中增加相应的转发项。
【本申请计算设备的实施例】
图7是本申请实施例提供的一种计算设备900的结构性示意性图。该计算设备可以作为CAN帧发送装置,执行上述CAN帧发送方法中的各可选实施例,该计算设备可以是终端,也可以是终端内部的芯片或芯片系统。如图7所示,该计算设备900包括:处理器910、存储器920、通信接口930。
应理解,图7所示的计算设备900中的通信接口930可以用于与其他设备之间进行通信,具体可以包括一个或多个收发电路或接口电路。
其中,该处理器910可以与存储器920连接。该存储器920可以用于存储该程序代码和数据。因此,该存储器920可以是处理器910内部的存储单元,也可以是与处理器910独立的外部存储单元,还可以是包括处理器910内部的存储单元和与处理器910独立的外部存储单元的部件。
可选的,计算设备900还可以包括总线。其中,存储器920、通信接口930可以通过总线与处理器910连接。总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中采用了一条无箭头的线表示,但并不表示仅有一根总线或一种类型的总线。
应理解,在本申请实施例中,该处理器910可以采用中央处理单元(centralprocessing unit,CPU)。该处理器还可以是其它通用处理器、数字信号处理器(digitalsignal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate Array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。或者该处理器910采用一个或多个集成电路,用于执行相关程序,以实现本申请实施例所提供的技术方案。
该存储器920可以包括只读存储器和随机存取存储器,并向处理器910提供指令和数据。处理器910的一部分还可以包括非易失性随机存取存储器。例如,处理器910还可以存储设备类型的信息。
在计算设备900运行时,所述处理器910执行所述存储器920中的计算机执行指令执行上述方法的任一操作步骤以及其中任一可选的实施例。
应理解,根据本申请实施例的计算设备900可以对应于执行根据本申请各实施例的方法中的相应主体,并且计算设备900中的各个模块的上述和其它操作和/或功能分别为了实现本实施例各方法的相应流程,为了简洁,在此不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时用于执行上述方法,该方法包括上述各个实施例所描述的方案中的至少之一。
本申请实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括、但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
另外,说明书和权利要求书中的词语“第一、第二、第三等”或模块A、模块B、模块C等类似用语,仅用于区别类似的对象,不代表针对对象的特定排序,可以理解地,在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
在上述的描述中,所涉及的表示步骤的标号,如S110、S120……等,并不表示一定会按此步骤执行,在允许的情况下可以互换前后步骤的顺序,或同时执行。
说明书和权利要求书中使用的术语“包括”不应解释为限制于其后列出的内容;它不排除其它的元件或步骤。因此,其应当诠释为指定所提到的所述特征、整体、步骤或部件的存在,但并不排除存在或添加一个或更多其它特征、整体、步骤或部件及其组群。因此,表述“包括装置A和B的设备”不应局限为仅由部件A和B组成的设备。
本说明书中提到的“一个实施例”或“实施例”意味着与该实施例结合描述的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在本说明书各处出现的用语“在一个实施例中”或“在实施例中”并不一定都指同一实施例,但可以指同一实施例。此外,在一个或多个实施例中,能够以任何适当的方式组合各特定特征、结构或特性,如从本公开对本领域的普通技术人员显而易见的那样。
注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,均属于本申请保护范畴。

Claims (10)

1.一种CAN帧发送方法,其特征在于,包括:
主控处理器将待发送的第一CAN帧封装为ETH报文,并通过交换模块将所述ETH报文传输至网络处理器;所述ETH报文中还包括所述第一CAN帧的第一CAN ID;
所述网络处理器解析所述ETH报文获取所述第一CAN帧和所述第一CAN ID;
所述网络处理器根据硬件转发表项中记录的各CAN帧的ID对应的各目的CAN端口,确定出所述第一CAN ID对应的目的CAN端口,其中,所确定出的目的CAN端口包括第一CAN端口;
所述网络处理器将所述第一CAN帧传输至配置有所述第一CAN端口的第一CAN控制器的PTB发送缓存器;
所述第一CAN控制器将所述PTB发送缓存器内的所述第一CAN帧通过所述第一CAN端口发送出去。
2.如权利要求1所述的方法,其特征在于,所述ETH报文包括源MAC地址字段、目的MAC地址字段、以太网类型字段和ETH数据字段;所述ETH数据字段包括标志位字段、CAN ID字段、数据长度字段、CAN帧扩展帧标志字段、CAN数据字段、校验和字段、PAD字段;
所述主控处理器将所述待发送的第一CAN帧封装为ETH报文,包括:
所述源MAC地址字段、目的MAC地址字段、以太网类型字段、标志位字段、PAD字段根据自定义填写;
将所述待发送的第一CAN帧填入所述CAN数据字段;
从所述待发送的第一CAN帧中获取第一CAN ID、第一CAN帧的长度,将所述第一CAN ID、第一CAN帧的长度填入所述CAN ID字段和数据长度字段;
根据所述第一CAN ID所占比特位确定是否是CAN扩展帧,并相应填写CAN帧扩展帧标志字段;
基于所述ETH数据字段计算校验和的值填入校验和字段。
3.如权利要求2所述的方法,其特征在于,所述硬件转发表项具体包括hash索引值项和对应的hash表项:所述hash索引值项中包括根据各CAN帧的CAN ID和CAN帧扩展帧标志计算出的各hash索引值,每个所述hash索引值对应的hash表项中包括与相应CAN帧的目的CAN端口对应的bitmap值;
所述网络处理器根据硬件转发表项中记录的各CAN帧的ID对应的各目的CAN端口,确定出所述第一CAN ID对应的目的CAN端口,包括:
所述网络处理器根据第一CAN ID和CAN帧扩展帧标志计算出第一CAN帧的hash索引值,在硬件转发表项中查询命中所述第一CAN帧的hash索引值时,获得对应的bitmap值;
基于bitmap值获得对应的目的CAN端口,作为所述第一CAN ID的对应的目的CAN端口。
4.如权利要求3所述的方法,其特征在于,还包括:
在硬件转发表项中查询未命中所述第一CAN帧的hash索引值时,所述主控处理器在所述硬件转发表项中增加相应的转发项。
5.如权利要求4所述的方法,其特征在于,在硬件转发表项中查询未命中所述第一CAN帧的hash索引值时,所述主控处理器在所述硬件转发表项中增加相应的转发项,包括:
所述主控处理器根据第一CAN ID和CAN帧扩展帧标志计算出第一CAN帧hash索引值,该hash索引值对应的hash表项中填入第一CAN帧中的目的CAN端口对应的bitmap值。
6.如权利要求1所述的方法,其特征在于,还包括:
所述主控处理器初始化第一CAN控制器为硬件发送模式;
所述主控处理器将所述硬件转发表项预配置到所述网络处理器中。
7.一种CAN帧发送装置,其特征在于,包括:
主控处理器,用于将待发送的第一CAN帧封装为ETH报文,将所述ETH报文发送至交换模块;
交换模块,用于将所述ETH报文发送至网络处理器;
网络处理器,用于解析所述ETH报文获取所述第一CAN帧和所述第一CAN ID,根据硬件转发表项中记录的各CAN帧的ID对应的各目的CAN端口,确定出所述第一CAN ID的对应的目的CAN端口,其中,所确定出的目的CAN端口包括第一CAN端口,将所述第一CAN帧传输至配置有所述第一CAN端口的第一CAN控制器的PTB发送缓存器;
第一CAN控制器,用于将所述PTB发送缓存器内的所述第一CAN帧通过所述第一CAN端口发送出去。
8.如权利要求7所述的装置,其特征在于,所述硬件转发表项具体包括hash索引值项和对应的hash表项:所述hash索引值项中包括根据各CAN帧的CAN ID和CAN帧扩展帧标志计算出的各hash索引值,每个所述hash索引值对应的hash表项中包括与相应CAN帧的目的CAN端口对应的bitmap值;
所述网络处理器具体:
根据第一CANID和CAN帧扩展帧标志计算出第一CAN帧的hash索引值,在硬件转发表项中查询命中所述第一CAN帧的hash索引值时,获得对应的bitmap值;
基于bitmap值获得对应的目的CAN端口,作为所述第一CAN ID的对应的目的CAN端口。
9.一种CAN帧发送系统,其特征在于,包括:权利要求7至8任一项所述的CAN帧发送装置和多个CAN终端;
所述CAN帧发送装置和多个CAN终端用于:实现权利要求1至6任一项所述的方法。
10.一种计算设备,其特征在于,包括:
处理器,以及
存储器,其上存储有程序指令,所述程序指令当被所述处理器执行时使得所述处理器执行权利要求1至6任意一项所述的方法。
CN202311786026.9A 2023-12-22 2023-12-22 Can帧发送方法、装置及系统、计算设备及存储介质 Pending CN117692408A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311786026.9A CN117692408A (zh) 2023-12-22 2023-12-22 Can帧发送方法、装置及系统、计算设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311786026.9A CN117692408A (zh) 2023-12-22 2023-12-22 Can帧发送方法、装置及系统、计算设备及存储介质

Publications (1)

Publication Number Publication Date
CN117692408A true CN117692408A (zh) 2024-03-12

Family

ID=90136949

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311786026.9A Pending CN117692408A (zh) 2023-12-22 2023-12-22 Can帧发送方法、装置及系统、计算设备及存储介质

Country Status (1)

Country Link
CN (1) CN117692408A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN120128559A (zh) * 2025-05-14 2025-06-10 安徽中科中涣智能装备股份有限公司 一种基于can网络组播技术的交换机和交换方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN120128559A (zh) * 2025-05-14 2025-06-10 安徽中科中涣智能装备股份有限公司 一种基于can网络组播技术的交换机和交换方法
CN120128559B (zh) * 2025-05-14 2025-08-12 安徽中科中涣智能装备股份有限公司 一种基于can网络组播技术的交换机和交换方法

Similar Documents

Publication Publication Date Title
CN113934660B (zh) 加速网络分组处理
EP3828709B1 (en) Communication method and network card
CN104580011B (zh) 一种数据转发装置和方法
US9774532B2 (en) Information processing system, information processing apparatus and control method of information processing system
US8194561B2 (en) Packet relay device and method for transferring packet therein
CN104579695A (zh) 一种数据转发装置和方法
CN104424105A (zh) 一种内存数据的读写处理方法和装置
CN114363256B (zh) 基于网卡的报文解析方法以及相关装置
CN114885045B (zh) 一种在高速智能网卡/dpu内节约dma通道资源方法和装置
CN110851371A (zh) 报文处理方法及相关设备
CN106603409A (zh) 一种数据处理系统、方法及设备
US12278884B2 (en) Apparatus and method for descriptor handling in software and hardware interworking systems and computer-readable medium
CN111026324B (zh) 转发表项的更新方法及装置
US20250175441A1 (en) Packet forwarding apparatus and method, communication chip, and network device
US10305772B2 (en) Using a single work item to send multiple messages
CN113179216A (zh) 一种寄存器的远程配置方法、计算机设备及存储介质
US9288163B2 (en) Low-latency packet receive method for networking devices
CN111290979A (zh) 数据传输方法、装置及系统
CN117692408A (zh) Can帧发送方法、装置及系统、计算设备及存储介质
CN116032837B (zh) 一种流表卸载方法及装置
CN106992918B (zh) 报文转发方法和装置
CN114327262B (zh) 一种用于智能网卡的维护端口映射的方法和装置
CN110765044B (zh) 数据包传输装置及系统
CN115996203A (zh) 网络流量分域方法、装置、设备和存储介质
US9258273B2 (en) Duplicating packets efficiently within a network security appliance

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