CN111698175B - 一种用于网关的报文收发方法及系统 - Google Patents

一种用于网关的报文收发方法及系统 Download PDF

Info

Publication number
CN111698175B
CN111698175B CN202010589887.8A CN202010589887A CN111698175B CN 111698175 B CN111698175 B CN 111698175B CN 202010589887 A CN202010589887 A CN 202010589887A CN 111698175 B CN111698175 B CN 111698175B
Authority
CN
China
Prior art keywords
message
hardware
queue
gateway
idle state
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.)
Active
Application number
CN202010589887.8A
Other languages
English (en)
Other versions
CN111698175A (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.)
Beijing Jingwei Hirain Tech Co Ltd
Original Assignee
Beijing Jingwei Hirain Tech 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 Jingwei Hirain Tech Co Ltd filed Critical Beijing Jingwei Hirain Tech Co Ltd
Priority to CN202010589887.8A priority Critical patent/CN111698175B/zh
Publication of CN111698175A publication Critical patent/CN111698175A/zh
Application granted granted Critical
Publication of CN111698175B publication Critical patent/CN111698175B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/66Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling

Landscapes

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

Abstract

本发明公开了一种用于网关的报文收发方法及系统,方法包括:在网关的报文接收端设置由多个硬件邮箱构成的报文接收队列,在网关的报文发送端设置由多个硬件邮箱构成的报文发送队列,基于报文接收队列控制网关的报文接收端接收报文,基于报文发送队列控制网关的报文发送端发送报文。本发明通过在报文接收端设置由多个硬件邮箱构成的报文接收队列,在接收报文时能够有效降低接收报文的丢帧风险,并且,通过在网关的报文发送端设置由多个硬件邮箱构成的报文发送队列,在发送报文时能够有效降低发送报文的丢帧风险。

Description

一种用于网关的报文收发方法及系统
技术领域
本发明涉及网关技术领域,尤其涉及一种用于网关的报文收发方法及系统。
背景技术
在当今汽车领域中,随着汽车功能的多样化,汽车CAN总线上的节点数量和节点收发的报文数量也越来越多,作为汽车网络的中枢控制器,网关需要在一个网段接收报文(下文称该网段为网关报文接收端),同时把该报文转发到另一个网段(下文称该网段为网关报文发送端)。节点和报文数量的增多也对网关的转发能力要求越来越高(如下的接收端和发送端都是将网关作为主体,即网关的报文接收端和网关的报文发送端)。
在现有的方案中,网关的报文接收端,通常通过设置一个硬件邮箱(mailbox,下简称MB)的掩码(设置对应的寄存器),使之能接收一个报文或者几个ID相近的报文。其中,硬件邮箱可以理解成一个存储器,可以缓存数据,通过操作相应的寄存器进行设置。当网关收到报文A时,将其报文内容接收到MB0(0号接收MB)中,此时总线上再次出现另一条报文B,也需要放入MB0中,如果此时网关未来得及将MB0中的报文A取出,会导致报文B无法接收,存在接收端丢帧的风险(MB的存储容量有限,只能存一个报文,报文取出后会发到总线上去,发送出去后才可以接收下一个报文)。
在现有的方案中,网关的报文发送端,通常把一个报文指定到一个固定的MB中。当网关发送报文A时,将其报文内容存放到MB0(0号发送MB)中,如果此时总线繁忙,导致MB0中的报文未来得及发送到总线上时,网关需要再次发送同样的报文A,会导致第二次发送的报文A发送失败(因为第一条占用的发送MB,第二条发送报文无法存入发送MB,会被丢弃),存在发送端丢帧的风险。
因此,在网关收发报文的过程中,如何有效的降低丢帧风险,是一项亟待解决的问题。
发明内容
有鉴于此,本发明提供了一种用于网关的报文收发方法,能够有效降低网关在报文收发过程中的丢帧风险。
本发明提供了一种用于网关的报文收发方法,包括:
在网关的报文接收端设置由多个硬件邮箱构成的报文接收队列;
在网关的报文发送端设置由多个硬件邮箱构成的报文发送队列;
基于所述报文接收队列控制所述网关的报文接收端接收报文;
基于所述报文发送队列控制所述网关的报文发送端发送报文。
优选地,所述基于所述报文接收队列控制所述网关的报文接收端接收报文,包括:
在需要接收报文时,基于所述报文接收队列中硬件邮箱的顺序,从所述报文接收队列中的第一个硬件邮箱开始,依次判断是否有处于空闲状态的硬件邮箱;
在判断过程中,有处于空闲状态的硬件邮箱时,将报文接收进该处于空闲状态的硬件邮箱;
在判断过程中,所述报文接收队列中的所有硬件邮箱中未有处于空闲状态的硬件邮箱时,将报文丢弃。
优选地,所述基于所述报文发送队列控制所述网关的报文发送端发送报文,包括:
在需要发送报文时,基于所述报文发送队列中硬件邮箱的顺序,从所述报文发送队列中的第一个硬件邮箱开始,依次判断是否有处于空闲状态的硬件邮箱;
在判断过程中,有处于空闲状态的硬件邮箱时,将报文放入该处于空闲状态的硬件邮箱开始发送;
在判断过程中,所述报文发送队列中的所有硬件邮箱中未有处于空闲状态的硬件邮箱时,将报文丢弃。
优选地,所述方法还包括:
分配报文的软件缓存;
相应的,所述在网关的报文发送端设置由多个硬件邮箱构成的报文发送队列,包括:
在网关的报文发送端设置由多个硬件邮箱和报文的软件缓存构成的报文发送队列。
优选地,所述基于所述报文发送队列控制所述网关的报文发送端发送报文,包括:
在需要发送报文时,基于所述报文发送队列中硬件邮箱的顺序,从所述报文发送队列中的第一个硬件邮箱开始,依次判断是否有处于空闲状态的硬件邮箱;
在判断过程中,有处于空闲状态的硬件邮箱时,将报文放入该处于空闲状态的硬件邮箱开始发送;
在判断过程中,所述报文发送队列中的所有硬件邮箱中未有处于空闲状态的硬件邮箱时,基于所述报文发送队列中报文的软件缓存的深度,从报文的第一个软件缓存开始,依次判断是否有为空的软件缓存;
在判断过程中,有为空的软件缓存时,将报文暂存入该为空的软件缓存中,并将该软件缓存的置位标志添加到标志列表中;
在判断过程中,所述报文发送队列中的所有的报文的软件缓存中未有为空的软件缓存时,将报文丢弃;
在接收到报文发送确认通知时,判断标志列表中是否有置位标志,若否,则结束发送确认流程,若是,则:
提取出所述置位标志对应的软件缓存中暂存的报文,重新执行上述报文发送过程,并将该置位标志从标志列表中删除,重复上述置位标志判断过程,直至标志列表中没有置位标志时,结束发送确认流程。
一种用于网关的报文收发系统,包括:
第一设置模块,用于在网关的报文接收端设置由多个硬件邮箱构成的报文接收队列;
第二设置模块,用于在网关的报文发送端设置由多个硬件邮箱构成的报文发送队列;
第一控制模块,用于基于所述报文接收队列控制所述网关的报文接收端接收报文;
第二控制模块,用于基于所述报文发送队列控制所述网关的报文发送端发送报文。
优选地,所述第一控制模块在执行基于所述报文接收队列控制所述网关的报文接收端接收报文时,具体用于:
在需要接收报文时,基于所述报文接收队列中硬件邮箱的顺序,从所述报文接收队列中的第一个硬件邮箱开始,依次判断是否有处于空闲状态的硬件邮箱;
在判断过程中,有处于空闲状态的硬件邮箱时,将报文接收进该处于空闲状态的硬件邮箱;
在判断过程中,所述报文接收队列中的所有硬件邮箱中未有处于空闲状态的硬件邮箱时,将报文丢弃。
优选地,所述第二控制模块在执行基于所述报文发送队列控制所述网关的报文发送端发送报文时,具体用于:
在需要发送报文时,基于所述报文发送队列中硬件邮箱的顺序,从所述报文发送队列中的第一个硬件邮箱开始,依次判断是否有处于空闲状态的硬件邮箱;
在判断过程中,有处于空闲状态的硬件邮箱时,将报文放入该处于空闲状态的硬件邮箱开始发送;
在判断过程中,所述报文发送队列中的所有硬件邮箱中未有处于空闲状态的硬件邮箱时,将报文丢弃。
优选地,所述系统还包括:
分配模块,用于分配报文的软件缓存;
相应的,所述第二设置模块在执行在网关的报文发送端设置由多个硬件邮箱构成的报文发送队列时,具体用于:
在网关的报文发送端设置由多个硬件邮箱和报文的软件缓存构成的报文发送队列。
优选地,所述第二控制模块在执行基于所述报文发送队列控制所述网关的报文发送端发送报文时,具体用于:
在需要发送报文时,基于所述报文发送队列中硬件邮箱的顺序,从所述报文发送队列中的第一个硬件邮箱开始,依次判断是否有处于空闲状态的硬件邮箱;
在判断过程中,有处于空闲状态的硬件邮箱时,将报文放入该处于空闲状态的硬件邮箱开始发送;
在判断过程中,所述报文发送队列中的所有硬件邮箱中未有处于空闲状态的硬件邮箱时,基于所述报文发送队列中报文的软件缓存的深度,从报文的第一个软件缓存开始,依次判断是否有为空的软件缓存;
在判断过程中,有为空的软件缓存时,将报文暂存入该为空的软件缓存中,并将该软件缓存的置位标志添加到标志列表中;
在判断过程中,所述报文发送队列中的所有的报文的软件缓存中未有为空的软件缓存时,将报文丢弃;
在接收到报文发送确认通知时,判断标志列表中是否有置位标志,若否,则结束发送确认流程,若是,则:
提取出所述置位标志对应的软件缓存中暂存的报文,重新执行上述报文发送过程,并将该置位标志从标志列表中删除,重复上述置位标志判断过程,直至标志列表中没有置位标志时,结束发送确认流程。
综上所述,本发明公开了一种用于网关的报文收发方法,当需要通过网关对报文进行收发时,在网关的报文接收端设置由多个硬件邮箱构成的报文接收队列,在网关的报文发送端设置由多个硬件邮箱构成的报文发送队列,基于报文接收队列控制网关的报文接收端接收报文,基于报文发送队列控制网关的报文发送端发送报文。本发明通过在报文接收端设置由多个硬件邮箱构成的报文接收队列,在接收报文时能够有效降低接收报文的丢帧风险,并且,通过在网关的报文发送端设置由多个硬件邮箱构成的报文发送队列,在发送报文时能够有效降低发送报文的丢帧风险。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明公开的一种用于网关的报文收发方法实施例1的方法流程图;
图2为本发明公开的一种用于网关的报文收发方法实施例2的方法流程图;
图3为本发明公开的一种用于网关的报文收发方法实施例3的方法流程图;
图4为本发明公开的一种用于网关的报文收发系统实施例1的结构示意图;
图5为本发明公开的一种用于网关的报文收发系统实施例2的结构示意图;
图6为本发明公开的一种用于网关的报文收发系统实施例3的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,为本发明公开的一种用于网关的报文收发方法实施例1的方法流程图,所述方法可以包括以下步骤:
S101、在网关的报文接收端设置由多个硬件邮箱构成的报文接收队列;
当需要通过网关对报文进行收发时,在网关的报文接收端设置多个硬件邮箱,将设置的多个硬件邮箱构成报文接收队列。例如,在网关的报文接收端设置硬件邮箱MB0、硬件邮箱MB1、硬件邮箱MBN,将设置的N+1个硬件邮箱构成报文接收队列(MB0、MB1、MBN)。需要说明的是,在设置硬件邮箱时,将硬件邮箱设置成Basic模式,掩码设置为0,有效保证了每一个硬件邮箱都能接收所有的报文。另外,需要说明的是,为进一步降低接收报文的丢帧风险,设置的报文接收队列中的硬件邮箱数量需要和总线负载情况相匹配。
S102、在网关的报文发送端设置由多个硬件邮箱构成的报文发送队列;
同时,在网关的报文发送端设置多个硬件邮箱,将设置的多个硬件邮箱构成报文发送队列。例如,在网关的报文发送端设置硬件邮箱MB0、硬件邮箱MB1、硬件邮箱MBN,将设置的N+1个硬件邮箱构成报文发送队列(MB0、MB1、MBN)。需要说明的是,为进一步降低发送报文的丢帧风险,设置的报文发送队列中的硬件邮箱数量需要和总线负载情况相匹配。
S103、基于报文接收队列控制网关的报文接收端接收报文;
在接收报文时,基于报文接收队列中的多个硬件邮箱,控制网关的报文接收端对报文进行接收处理。通过接收队列中的多个硬件邮箱对报文进行接收,提高了当中断响应慢时报文接收端丢帧的容错能力。
S104、基于报文发送队列控制网关的报文发送端发送报文。
在发送报文时,基于报文发送队列中的多个硬件邮箱,控制网关的报文发送端对报文进行发送处理。通过发送队列中的多个硬件邮箱对报文进行发送,提高了当总线繁忙时报文发送端丢帧的容错能力。
综上所述,在上述实施例中,当需要通过网关对报文进行收发时,在网关的报文接收端设置由多个硬件邮箱构成的报文接收队列,在网关的报文发送端设置由多个硬件邮箱构成的报文发送队列,基于报文接收队列控制网关的报文接收端接收报文,基于报文发送队列控制网关的报文发送端发送报文。通过在报文接收端设置由多个硬件邮箱构成的报文接收队列,在接收报文时能够有效降低接收报文的丢帧风险,并且,通过在网关的报文发送端设置由多个硬件邮箱构成的报文发送队列,在发送报文时能够有效降低发送报文的丢帧风险。
如图2所示,为本发明公开的一种用于网关的报文收发方法实施例2的方法流程图,所述方法可以包括以下步骤:
S201、在网关的报文接收端设置由多个硬件邮箱构成的报文接收队列;
当需要通过网关对报文进行收发时,在网关的报文接收端设置多个硬件邮箱,将设置的多个硬件邮箱构成报文接收队列。例如,在网关的报文接收端设置硬件邮箱MB0、硬件邮箱MB1、硬件邮箱MBN,将设置的N+1个硬件邮箱构成报文接收队列(MB0、MB1、MBN)。需要说明的是,在设置硬件邮箱时,将硬件邮箱设置成Basic模式,掩码设置为0,有效保证了每一个硬件邮箱都能接收所有的报文。另外,需要说明的是,为进一步降低接收报文的丢帧风险,设置的报文接收队列中的硬件邮箱数量需要和总线负载情况相匹配。
S202、在网关的报文发送端设置由多个硬件邮箱构成的报文发送队列;
同时,在网关的报文发送端设置多个硬件邮箱,将设置的多个硬件邮箱构成报文发送队列。例如,在网关的报文发送端设置硬件邮箱MB0、硬件邮箱MB1、硬件邮箱MBN,将设置的N+1个硬件邮箱构成报文发送队列(MB0、MB1、MBN)。需要说明的是,为进一步降低发送报文的丢帧风险,设置的报文发送队列中的硬件邮箱数量需要和总线负载情况相匹配。
S203、在需要接收报文时,基于报文接收队列中硬件邮箱的顺序,从报文接收队列中的第一个硬件邮箱开始,依次判断是否有处于空闲状态的硬件邮箱;
S204、在判断过程中,有处于空闲状态的硬件邮箱时,将报文接收进该处于空闲状态的硬件邮箱;
S205、在判断过程中,报文接收队列中的所有硬件邮箱中未有处于空闲状态的硬件邮箱时,将报文丢弃;
在需要接收报文时,如上述步骤S203~S205所述,根据报文接收队列中硬件邮箱的顺序,如,MB0、MB1、MBN,从报文接收队列中的第一个硬件邮箱开始,首先判断第一个硬件邮箱MB0是否处于空闲状态,当第一个硬件邮箱MB0处于空闲状态时,将报文接收进第一个硬件邮箱MB0中,并结束报文接收流程,当第一个硬件邮箱MB0处于非空闲状态时,根据报文接收队列中硬件邮箱的顺序,判断第二个硬件邮箱MB1是否处于空闲状态,当第二个硬件邮箱MB1处于空闲状态时,将报文接收进第二个硬件邮箱MB1中,并结束报文接收流程,当第二个硬件邮箱MB1处于非空闲状态时,重复上述判断方法,依次判断报文接收队列中是否有处于空闲状态的硬件邮箱;在判断过程中,若有处于空闲状态的硬件邮箱时,则将报文接收进该处于空闲状态的硬件邮箱,在判断过程中,当报文接收队列中的最后一个硬件邮箱MBN仍处于非空闲状态时,则丢弃该报文,并结束报文接收流程。由此可以看出,为进一步降低接收报文的丢帧风险,设置的报文接收队列中的硬件邮箱数量需要和总线负载情况相匹配。
S206、在需要发送报文时,基于报文发送队列中硬件邮箱的顺序,从报文发送队列中的第一个硬件邮箱开始,依次判断是否有处于空闲状态的硬件邮箱;
S207、在判断过程中,有处于空闲状态的硬件邮箱时,将报文放入该处于空闲状态的硬件邮箱开始发送;
S208、在判断过程中,报文发送队列中的所有硬件邮箱中未有处于空闲状态的硬件邮箱时,将报文丢弃。
在需要发送报文时,如上述步骤S206~S208所述,根据报文发送队列中硬件邮箱的顺序,如,MB0、MB1、MBN,从报文发送队列中的第一个硬件邮箱开始,首先判断第一个硬件邮箱MB0是否处于空闲状态,当第一个硬件邮箱MB0处于空闲状态时,将报文放入第一个硬件邮箱MB0开始发送,并结束报文发送流程,当第一个硬件邮箱MB0处于非空闲状态时,根据报文发送队列中硬件邮箱的顺序,判断第二个硬件邮箱MB1是否处于空闲状态,当第二个硬件邮箱MB1处于空闲状态时,将报文放入第二个硬件邮箱MB1开始发送,并结束报文发送流程,当第二个硬件邮箱MB1处于非空闲状态时,重复上述判断方法,依次判断报文发送队列中是否有处于空闲状态的硬件邮箱;在判断过程中,若有处于空闲状态的硬件邮箱时,则将报文放入该处于空闲状态的硬件邮箱开始发送,在判断过程中,当报文发送队列中的最后一个硬件邮箱MBN仍处于非空闲状态时,则丢弃该报文,并结束报文发送流程。由此可以看出,为进一步降低发送报文的丢帧风险,设置的报文发送队列中的硬件邮箱数量需要和总线负载情况相匹配。
综上所述,本实施例在基于报文接收队列控制网关的报文接收端接收报文时,能够基于报文接收队列中硬件邮箱的顺序,从报文接收队列中的第一个硬件邮箱开始,依次判断是否有处于空闲状态的硬件邮箱,在判断过程中,有处于空闲状态的硬件邮箱时,将报文接收进该处于空闲状态的硬件邮箱,在判断过程中,报文接收队列中的所有硬件邮箱中未有处于空闲状态的硬件邮箱时,将报文丢弃,有效提高了当中断响应慢时报文接收端丢帧的容错能力;在基于报文发送队列控制网关的报文发送端发送报文时,能够基于报文发送队列中硬件邮箱的顺序,从报文发送队列中的第一个硬件邮箱开始,依次判断是否有处于空闲状态的硬件邮箱,在判断过程中,有处于空闲状态的硬件邮箱时,将报文放入该处于空闲状态的硬件邮箱开始发送,在判断过程中,报文发送队列中的所有硬件邮箱中未有处于空闲状态的硬件邮箱时,将报文丢弃,有效提高了当总线繁忙时报文发送端丢帧的容错能力。
如图3所示,为本发明公开的一种用于网关的报文收发方法实施例3的方法流程图,所述方法可以包括以下步骤:
S301、在网关的报文接收端设置由多个硬件邮箱构成的报文接收队列;
当需要通过网关对报文进行收发时,在网关的报文接收端设置多个硬件邮箱,将设置的多个硬件邮箱构成报文接收队列。例如,在网关的报文接收端设置硬件邮箱MB0、硬件邮箱MB1、硬件邮箱MBN,将设置的N+1个硬件邮箱构成报文接收队列(MB0、MB1、MBN)。需要说明的是,在设置硬件邮箱时,将硬件邮箱设置成Basic模式,掩码设置为0,有效保证了每一个硬件邮箱都能接收所有的报文。另外,需要说明的是,为进一步降低接收报文的丢帧风险,设置的报文接收队列中的硬件邮箱数量需要和总线负载情况相匹配。
S302、分配报文的软件缓存;
同时,为每个报文分配相应的软件缓存,即,每个ID的报文分配有相应的软件缓存。需要说明的是,在为报文分配软件缓存时,可以为每个报文分配多个不同深度的软件缓存。
S303、在网关的报文发送端设置由多个硬件邮箱和报文的软件缓存构成的报文发送队列;
同时,在网关的报文发送端设置多个硬件邮箱,将设置的多个硬件邮箱和报文的软件缓存构成报文发送队列。例如,在网关的报文发送端设置有硬件邮箱MB0、硬件邮箱MB1、硬件邮箱MBN,为报文分配有两个具有不同深度的软件缓存buffer1和软件缓存buffer2(需要说明的是,每个报文可以分配多个不同深度的软件缓存,这里举例的为报文分配两个具有不同深度的软件缓存只是其中的一种分配方式),则将设置的N+1个硬件邮箱和报文两个软件缓存构成报文发送队列(MB0、MB1、MBN、buffer1、buffer2)。需要说明的是,为进一步降低发送报文的丢帧风险,设置的报文发送队列中的硬件邮箱数量以及报文的软件缓存的数量需要和总线负载情况相匹配。
S304、在需要接收报文时,基于报文接收队列中硬件邮箱的顺序,从报文接收队列中的第一个硬件邮箱开始,依次判断是否有处于空闲状态的硬件邮箱;
S305、在判断过程中,有处于空闲状态的硬件邮箱时,将报文接收进该处于空闲状态的硬件邮箱;
S306、在判断过程中,报文接收队列中的所有硬件邮箱中未有处于空闲状态的硬件邮箱时,将报文丢弃;
在需要接收报文时,如上述步骤S304~S306所述,根据报文接收队列中硬件邮箱的顺序,如,MB0、MB1、MBN,从报文接收队列中的第一个硬件邮箱开始,首先判断第一个硬件邮箱MB0是否处于空闲状态,当第一个硬件邮箱MB0处于空闲状态时,将报文接收进第一个硬件邮箱MB0中,并结束报文接收流程,当第一个硬件邮箱MB0处于非空闲状态时,根据报文接收队列中硬件邮箱的顺序,判断第二个硬件邮箱MB1是否处于空闲状态,当第二个硬件邮箱MB1处于空闲状态时,将报文接收进第二个硬件邮箱MB1中,并结束报文接收流程,当第二个硬件邮箱MB1处于非空闲状态时,重复上述判断方法,依次判断报文接收队列中是否有处于空闲状态的硬件邮箱;在判断过程中,若有处于空闲状态的硬件邮箱时,则将报文接收进该处于空闲状态的硬件邮箱,在判断过程中,当报文接收队列中的最后一个硬件邮箱MBN仍处于非空闲状态时,则丢弃该报文,并结束报文接收流程。由此可以看出,为进一步降低接收报文的丢帧风险,设置的报文接收队列中的硬件邮箱数量需要和总线负载情况相匹配。
S307、在需要发送报文时,基于报文发送队列中硬件邮箱的顺序,从报文发送队列中的第一个硬件邮箱开始,依次判断是否有处于空闲状态的硬件邮箱;
S308、在判断过程中,有处于空闲状态的硬件邮箱时,将报文放入该处于空闲状态的硬件邮箱开始发送;
S309、在判断过程中,报文发送队列中的所有硬件邮箱中未有处于空闲状态的硬件邮箱时,基于所述报文发送队列中报文的软件缓存的深度,从报文的第一个软件缓存开始,依次判断是否有为空的软件缓存;
S310、在判断过程中,有为空的软件缓存时,将报文暂存入该为空的软件缓存中,并将该软件缓存的置位标志添加到标志列表中;
S311、在判断过程中,报文发送队列中的所有的报文的软件缓存中未有为空的软件缓存时,将报文丢弃;
S312、在接收到报文发送确认通知时,判断标志列表中是否有置位标志,若否,则结束发送确认流程;
S313、标志列表中有置位标志时,提取出置位标志对应的软件缓存中暂存的报文,重新从上述步骤S307开始,再次执行上述报文发送过程,并将该置位标志从标志列表中删除,重复上述置位标志判断过程,直至标志列表中没有置位标志时,结束发送确认流程。
在需要发送报文时,如上述步骤S307~S313所述,根据报文发送队列中硬件邮箱和报文的软件缓存的顺序,如,MB0、MB1、MBN、buffer1、buffer2,从报文发送队列中的第一个硬件邮箱开始,首先判断第一个硬件邮箱MB0是否处于空闲状态,当第一个硬件邮箱MB0处于空闲状态时,将报文放入第一个硬件邮箱MB0开始发送,并结束报文发送流程,当第一个硬件邮箱MB0处于非空闲状态时,根据报文发送队列中硬件邮箱的顺序,判断第二个硬件邮箱MB1是否处于空闲状态,当第二个硬件邮箱MB1处于空闲状态时,将报文放入第二个硬件邮箱MB1开始发送,并结束报文发送流程,当第二个硬件邮箱MB1处于非空闲状态时,重复上述判断方法,依次判断报文发送队列中是否有处于空闲状态的硬件邮箱;在判断过程中,若有处于空闲状态的硬件邮箱时,则将报文放入该处于空闲状态的硬件邮箱开始发送,在判断过程中,当报文发送队列中的最后一个硬件邮箱MBN仍处于非空闲状态时,进一步判断报文的软件缓存中是否有为空的软件缓存。
具体的,根据报文发送队列中报文的软件缓存的顺序,首先判断报文的第一深度的软件缓存buffer1是否为空,当第一深度的软件缓存buffer1为空时,将需要发送的报文的ID以及数据场暂存入软件缓存buffer1,并将该软件缓存buffer1的置位标志添加到标志列表中,当第一深度的软件缓存buffer1为非空时,判断该需要发送的报文是否有下一深度的软件缓存,当该报文有下一深度的软件缓存buffer2时,判断报文的下一深度的软件缓存buffer2是否为空,当下一深度的软件缓存buffer2为空时,将需要发送的报文的ID以及数据场暂存入软件缓存buffer2,并将该软件缓存buffer2的置位标志添加到标志列表中,当下一深度的软件缓存buffer2为非空时,判断该需要发送的报文是否还有下一深度的软件缓存,重复上述判断方法,直到有报文的软件缓存为空或者所有的报文的软件缓存均为非空,如果所有的报文的软件缓存均为非空,则将该报文丢弃,如果在重复判断的过程中,有报文的软件缓存为空,则将需要发送的报文的ID以及数据场暂存入该为空的软件缓存,将该软件缓存的置位标志添加到标志列表中。
在网关将报文发送到总线后,会收到报文发送确认通知,为确保暂存到报文的软件缓存中的报文已全部发送完毕,在接收到报文发送确认通知时,进一步判断标志列表中是否有置位标志,若否,则结束发送确认流程,若是,则:提取出置位标志对应的软件缓存中暂存的报文的ID以及数据场,重新执行上述报文发送过程,将暂存在软件缓存中的报文发送出去,并将该置位标志从标志列表中删除,重复上述置位标志判断过程,直至标志列表中没有置位标志时,即,直至暂存在软件缓存中的报文均被发送时,结束发送确认流程。
综上所述,本实施例在上述实施例的基础上,能够进一步分配报文的软件缓存,在网关的报文发送端设置由多个硬件邮箱和报文的软件缓存构成的报文发送队列,在基于报文发送队列控制网关的报文发送端发送报文时,通过报文发送队列中的多个硬件邮箱和报文的软件缓存,进一步提高了当总线繁忙时报文发送端丢帧的容错能力。
如图4所示,为本发明公开的一种用于网关的报文收发系统实施例1的结构示意图,所述系统可以包括:
第一设置模块401,用于在网关的报文接收端设置由多个硬件邮箱构成的报文接收队列;
第二设置模块402,用于在网关的报文发送端设置由多个硬件邮箱构成的报文发送队列;
第一控制模块403,用于基于报文接收队列控制网关的报文接收端接收报文;
第二控制模块404,用于基于报文发送队列控制网关的报文发送端发送报文。
本实施公开的用于网关的报文收发系统的工作原理与用于网关的报文收发方法实施例1的工作原理相同,在此不再赘述。
如图5所示,为本发明公开的一种用于网关的报文收发系统实施例2的结构示意图,所述系统可以包括:
第一设置模块501,用于在网关的报文接收端设置由多个硬件邮箱构成的报文接收队列;
第二设置模块502,用于在网关的报文发送端设置由多个硬件邮箱构成的报文发送队列;
第一控制模块503,用于在需要接收报文时,基于报文接收队列中硬件邮箱的顺序,从报文接收队列中的第一个硬件邮箱开始,依次判断是否有处于空闲状态的硬件邮箱;在判断过程中,有处于空闲状态的硬件邮箱时,将报文接收进该处于空闲状态的硬件邮箱;在判断过程中,报文接收队列中的所有硬件邮箱中未有处于空闲状态的硬件邮箱时,将报文丢弃;
第二控制模块504,用于在需要发送报文时,基于报文发送队列中硬件邮箱的顺序,从报文发送队列中的第一个硬件邮箱开始,依次判断是否有处于空闲状态的硬件邮箱;在判断过程中,有处于空闲状态的硬件邮箱时,将报文放入该处于空闲状态的硬件邮箱开始发送;在判断过程中,报文发送队列中的所有硬件邮箱中未有处于空闲状态的硬件邮箱时,将报文丢弃。
本实施公开的用于网关的报文收发系统的工作原理与用于网关的报文收发方法实施例2的工作原理相同,在此不再赘述。
如图6所示,为本发明公开的一种用于网关的报文收发系统实施例3的结构示意图,所述系统可以包括:
第一设置模块601,用于在网关的报文接收端设置由多个硬件邮箱构成的报文接收队列;
分配模块602,用于分配报文的软件缓存;
第二设置模块603,用于在网关的报文发送端设置由多个硬件邮箱和报文的软件缓存构成的报文发送队列;
第一控制模块604,用于在需要接收报文时,基于报文接收队列中硬件邮箱的顺序,从报文接收队列中的第一个硬件邮箱开始,依次判断是否有处于空闲状态的硬件邮箱;在判断过程中,有处于空闲状态的硬件邮箱时,将报文接收进该处于空闲状态的硬件邮箱;在判断过程中,报文接收队列中的所有硬件邮箱中未有处于空闲状态的硬件邮箱时,将报文丢弃;
第二控制模块605,用于在需要发送报文时,基于报文发送队列中硬件邮箱的顺序,从报文发送队列中的第一个硬件邮箱开始,依次判断是否有处于空闲状态的硬件邮箱;在判断过程中,有处于空闲状态的硬件邮箱时,将报文放入该处于空闲状态的硬件邮箱开始发送;在判断过程中,报文发送队列中的所有硬件邮箱中未有处于空闲状态的硬件邮箱时,基于所述报文发送队列中报文的软件缓存的深度,从报文的第一个软件缓存开始,依次判断是否有为空的软件缓存;在判断过程中,有为空的软件缓存时,将报文暂存入该为空的软件缓存中,并将该软件缓存的置位标志添加到标志列表中;在判断过程中,报文发送队列中的所有的报文的软件缓存中未有为空的软件缓存时,将报文丢弃;在接收到报文发送确认通知时,判断标志列表中是否有置位标志,若否,则结束发送确认流程;若是,则提取出所述置位标志对应的软件缓存中暂存的报文,重新执行上述报文发送过程,并将该置位标志从标志列表中删除,重复上述置位标志判断过程,直至标志列表中没有置位标志时,结束发送确认流程。
本实施公开的用于网关的报文收发系统的工作原理与用于网关的报文收发方法实施例3的工作原理相同,在此不再赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (6)

1.一种用于网关的报文收发方法,其特征在于,所述网关为汽车网关,包括:
在网关的报文接收端设置由多个硬件邮箱构成的报文接收队列;
在网关的报文发送端设置由多个硬件邮箱构成的报文发送队列;
基于所述报文接收队列控制所述网关的报文接收端接收报文,包括:在需要接收报文时,基于所述报文接收队列中硬件邮箱的顺序,从所述报文接收队列中的第一个硬件邮箱开始,依次判断是否有处于空闲状态的硬件邮箱;在判断过程中,有处于空闲状态的硬件邮箱时,将报文接收进该处于空闲状态的硬件邮箱;在判断过程中,所述报文接收队列中的所有硬件邮箱中未有处于空闲状态的硬件邮箱时,将报文丢弃;
基于所述报文发送队列控制所述网关的报文发送端发送报文,包括:在需要发送报文时,基于所述报文发送队列中硬件邮箱的顺序,从所述报文发送队列中的第一个硬件邮箱开始,依次判断是否有处于空闲状态的硬件邮箱;在判断过程中,有处于空闲状态的硬件邮箱时,将报文放入该处于空闲状态的硬件邮箱开始发送;在判断过程中,所述报文发送队列中的所有硬件邮箱中未有处于空闲状态的硬件邮箱时,将报文丢弃;所述报文接收队列和所述报文发送队列中的硬件邮箱数量与总线负载情况相匹配。
2.根据权利要求1所述的方法,其特征在于,还包括:
分配报文的软件缓存;
相应的,所述在网关的报文发送端设置由多个硬件邮箱构成的报文发送队列,包括:
在网关的报文发送端设置由多个硬件邮箱和报文的软件缓存构成的报文发送队列。
3.根据权利要求2所述的方法,其特征在于,所述基于所述报文发送队列控制所述网关的报文发送端发送报文,包括:
在需要发送报文时,基于所述报文发送队列中硬件邮箱的顺序,从所述报文发送队列中的第一个硬件邮箱开始,依次判断是否有处于空闲状态的硬件邮箱;
在判断过程中,有处于空闲状态的硬件邮箱时,将报文放入该处于空闲状态的硬件邮箱开始发送;
在判断过程中,所述报文发送队列中的所有硬件邮箱中未有处于空闲状态的硬件邮箱时,基于所述报文发送队列中报文的软件缓存的深度,从报文的第一个软件缓存开始,依次判断是否有为空的软件缓存;
在判断过程中,有为空的软件缓存时,将报文暂存入该为空的软件缓存中,并将该软件缓存的置位标志添加到标志列表中;
在判断过程中,所述报文发送队列中的所有的报文的软件缓存中未有为空的软件缓存时,将报文丢弃;
在接收到报文发送确认通知时,判断标志列表中是否有置位标志,若否,则结束发送确认流程,若是,则:
提取出所述置位标志对应的软件缓存中暂存的报文,重新执行上述报文发送过程,并将该置位标志从标志列表中删除,重复上述置位标志判断过程,直至标志列表中没有置位标志时,结束发送确认流程。
4.一种用于网关的报文收发系统,其特征在于,所述网关为汽车网关,包括:
第一设置模块,用于在网关的报文接收端设置由多个硬件邮箱构成的报文接收队列;
第二设置模块,用于在网关的报文发送端设置由多个硬件邮箱构成的报文发送队列;
第一控制模块,用于基于所述报文接收队列控制所述网关的报文接收端接收报文;
所述第一控制模块在执行基于所述报文接收队列控制所述网关的报文接收端接收报文时,具体用于:在需要接收报文时,基于所述报文接收队列中硬件邮箱的顺序,从所述报文接收队列中的第一个硬件邮箱开始,依次判断是否有处于空闲状态的硬件邮箱;在判断过程中,有处于空闲状态的硬件邮箱时,将报文接收进该处于空闲状态的硬件邮箱;在判断过程中,所述报文接收队列中的所有硬件邮箱中未有处于空闲状态的硬件邮箱时,将报文丢弃;
第二控制模块,用于基于所述报文发送队列控制所述网关的报文发送端发送报文;
所述第二控制模块在执行基于所述报文发送队列控制所述网关的报文发送端发送报文时,具体用于:在需要发送报文时,基于所述报文发送队列中硬件邮箱的顺序,从所述报文发送队列中的第一个硬件邮箱开始,依次判断是否有处于空闲状态的硬件邮箱;在判断过程中,有处于空闲状态的硬件邮箱时,将报文放入该处于空闲状态的硬件邮箱开始发送;在判断过程中,所述报文发送队列中的所有硬件邮箱中未有处于空闲状态的硬件邮箱时,将报文丢弃;
所述报文接收队列和所述报文发送队列中的硬件邮箱数量与总线负载情况相匹配。
5.根据权利要求4所述的系统,其特征在于,还包括:
分配模块,用于分配报文的软件缓存;
相应的,所述第二设置模块在执行在网关的报文发送端设置由多个硬件邮箱构成的报文发送队列时,具体用于:
在网关的报文发送端设置由多个硬件邮箱和报文的软件缓存构成的报文发送队列。
6.根据权利要求5所述的系统,其特征在于,所述第二控制模块在执行基于所述报文发送队列控制所述网关的报文发送端发送报文时,具体用于:
在需要发送报文时,基于所述报文发送队列中硬件邮箱的顺序,从所述报文发送队列中的第一个硬件邮箱开始,依次判断是否有处于空闲状态的硬件邮箱;
在判断过程中,有处于空闲状态的硬件邮箱时,将报文放入该处于空闲状态的硬件邮箱开始发送;
在判断过程中,所述报文发送队列中的所有硬件邮箱中未有处于空闲状态的硬件邮箱时,基于所述报文发送队列中报文的软件缓存的深度,从报文的第一个软件缓存开始,依次判断是否有为空的软件缓存;
在判断过程中,有为空的软件缓存时,将报文暂存入该为空的软件缓存中,并将该软件缓存的置位标志添加到标志列表中;
在判断过程中,所述报文发送队列中的所有的报文的软件缓存中未有为空的软件缓存时,将报文丢弃;
在接收到报文发送确认通知时,判断标志列表中是否有置位标志,若否,则结束发送确认流程,若是,则:
提取出所述置位标志对应的软件缓存中暂存的报文,重新执行上述报文发送过程,并将该置位标志从标志列表中删除,重复上述置位标志判断过程,直至标志列表中没有置位标志时,结束发送确认流程。
CN202010589887.8A 2020-06-24 2020-06-24 一种用于网关的报文收发方法及系统 Active CN111698175B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010589887.8A CN111698175B (zh) 2020-06-24 2020-06-24 一种用于网关的报文收发方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010589887.8A CN111698175B (zh) 2020-06-24 2020-06-24 一种用于网关的报文收发方法及系统

Publications (2)

Publication Number Publication Date
CN111698175A CN111698175A (zh) 2020-09-22
CN111698175B true CN111698175B (zh) 2023-09-19

Family

ID=72483833

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010589887.8A Active CN111698175B (zh) 2020-06-24 2020-06-24 一种用于网关的报文收发方法及系统

Country Status (1)

Country Link
CN (1) CN111698175B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112543129B (zh) * 2020-11-27 2022-06-21 北京经纬恒润科技股份有限公司 队列深度的确认方法、系统及报文模拟器
CN113282040B (zh) * 2021-05-26 2022-08-05 苏州智加科技有限公司 减少整车网关转发丢帧的方法及装置
CN114979058B (zh) * 2022-06-30 2023-10-03 东风电驱动系统有限公司 一种can多邮箱复用处理方法及系统
CN115460035B (zh) * 2022-08-08 2024-01-09 武汉海微科技有限公司 基于can控制器的文件收发方法、系统、介质及设备
CN115190063B (zh) * 2022-09-13 2022-11-29 南京芯驰半导体科技有限公司 一种基于路由表的can报文发送方法及系统

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101800658A (zh) * 2008-12-30 2010-08-11 英特尔公司 用于管理网络接口组件的预订请求的装置和方法
CN102752084A (zh) * 2012-07-27 2012-10-24 湖南先步信息股份有限公司 一种多设备can通讯智能重发方法
CN102790719A (zh) * 2012-07-31 2012-11-21 福建星网锐捷网络有限公司 提高数据传输质量的报文发送方法、装置和无线接入点
CN103780508A (zh) * 2014-02-20 2014-05-07 北京经纬恒润科技有限公司 Can总线报文的软件滤波方法、系统及电子控制单元
CN104158764A (zh) * 2014-08-12 2014-11-19 杭州华三通信技术有限公司 报文处理方法及装置
CN104468401A (zh) * 2014-11-20 2015-03-25 华为技术有限公司 一种报文处理方法和装置
CN105245471A (zh) * 2015-09-25 2016-01-13 京信通信技术(广州)有限公司 报文发送方法及报文发送装置
CN107222427A (zh) * 2016-03-22 2017-09-29 华为技术有限公司 一种报文处理的方法及相关设备
CN108023829A (zh) * 2017-11-14 2018-05-11 东软集团股份有限公司 报文处理方法及装置、存储介质、电子设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050223064A1 (en) * 2004-04-01 2005-10-06 Robert Salerno Method and system for electronic message retraction

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101800658A (zh) * 2008-12-30 2010-08-11 英特尔公司 用于管理网络接口组件的预订请求的装置和方法
CN102752084A (zh) * 2012-07-27 2012-10-24 湖南先步信息股份有限公司 一种多设备can通讯智能重发方法
CN102790719A (zh) * 2012-07-31 2012-11-21 福建星网锐捷网络有限公司 提高数据传输质量的报文发送方法、装置和无线接入点
CN103780508A (zh) * 2014-02-20 2014-05-07 北京经纬恒润科技有限公司 Can总线报文的软件滤波方法、系统及电子控制单元
CN104158764A (zh) * 2014-08-12 2014-11-19 杭州华三通信技术有限公司 报文处理方法及装置
CN104468401A (zh) * 2014-11-20 2015-03-25 华为技术有限公司 一种报文处理方法和装置
CN105245471A (zh) * 2015-09-25 2016-01-13 京信通信技术(广州)有限公司 报文发送方法及报文发送装置
CN107222427A (zh) * 2016-03-22 2017-09-29 华为技术有限公司 一种报文处理的方法及相关设备
CN108023829A (zh) * 2017-11-14 2018-05-11 东软集团股份有限公司 报文处理方法及装置、存储介质、电子设备

Also Published As

Publication number Publication date
CN111698175A (zh) 2020-09-22

Similar Documents

Publication Publication Date Title
CN111698175B (zh) 一种用于网关的报文收发方法及系统
CN108599904B (zh) 一种数据传输方法及装置
JP5222002B2 (ja) 車載用の中継接続ユニット
CN101782891B (zh) 一种分布式系统通信的方法及系统
CN106953797B (zh) 一种基于动态连接的rdma数据传输的方法与装置
TWI698103B (zh) 在網狀網路中之訊息快取管理
US10536321B2 (en) Message attack defense method and apparatus
CN110086566B (zh) 一种车载数据的传输方法及车载设备
CN110312283B (zh) 一种信息处理方法及装置
CN110719231B (zh) 一种数据处理方法、装置、设备及可读存储介质
CN101977358A (zh) 一种数据短信的传输方法、装置及设备
EP2336897B1 (en) Data processing apparatus, data processing method, and computer-readable storage medium
US20110167188A1 (en) Subscriber node of a communication system having a functionally separate transmission event memory
CN107592361B (zh) 一种基于双ib网络的数据传输方法、装置、设备
CN114830699A (zh) 建立iso链路的方法和ble设备
CN108028785B (zh) 缓冲器控制装置、通信节点以及中继装置
CN114640385B (zh) 一种基于北斗通信系统的数据传输方法及电子设备
JP2019213043A (ja) 車載用ゲートウェイ装置、方法及びプログラム
JP2008131481A (ja) データ中継装置
CN109327402B (zh) 拥塞管理方法及装置
TW201433127A (zh) 一種時隙狀態的發送以及確定的方法、裝置
CN103685018B (zh) 消息处理方法和装置及通信系统
JP2018157415A (ja) 無線通信システム、無線通信端末及び無線通信方法
CN114189819A (zh) 信息处理方法、装置、系统及存储介质
CN117014506A (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 4 / F, building 1, No.14 Jiuxianqiao Road, Chaoyang District, Beijing 100020

Applicant after: Beijing Jingwei Hengrun Technology Co.,Ltd.

Address before: 8 / F, block B, No. 11, Anxiang Beili, Chaoyang District, Beijing 100101

Applicant before: Beijing Jingwei HiRain Technologies Co.,Ltd.

GR01 Patent grant
GR01 Patent grant