首页 / 一种基于芯片的以太网环网冗余配置电路及环网冗余方法

一种基于芯片的以太网环网冗余配置电路及环网冗余方法实质审查 发明

技术领域

[0001] 本发明涉及通信技术领域,尤其涉及一种基于芯片的以太网环网冗余配置电路及环网冗余方法。

相关背景技术

[0002] 随着汽车行业的快速发展和智能化趋势的推演,汽车通信技术需要越来越高。时间敏感型网络(Time‑Sensitive Networking,TSN)在通信技术中具有卓越的实时性和可靠性,成为了汽车行业通信的重要技术。
[0003] IEEE 802.1CB需求规范的应用对于TSN技术的发展起到了关键作用。该规范强调了通信冗余的重要性,通过冗余路径的建立提高通信的可靠性。在汽车领域,通信冗余对于实现高可靠性和容错性至关重要。该规范主要描述了帧复制和帧消除。
[0004] 然而,现有技术中只有部分Switch芯片支持IEEE 802.1CB功能,如NXP的SJA1110,MARVELL的88Q5152等。对于MCU芯片目前无法支持IEEE 802.1CB功能。因此,亟待提供一种基于MCU芯片的以太网环网冗余配置电路,以及对应的方法,实现MCU芯片对IEEE 802.1CB功能的支持。

具体实施方式

[0047] 为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0048] 需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0049] 实施例一
[0050] 图1是根据本发明实施例一提供的一种基于芯片的以太网环网冗余配置电路的结构示意图,本实施例可适用于在MCU芯片中支持IEEE802.1CB规范的情况。具体的,MCU芯片可以是英飞凌(Infineon)Tricore 4(TC4)系列的芯片。通过配置电路,实现MCU芯片可IEEE 802.1CB需求规范。其中,在IEEE 802.1CB需求规范中,主要描述帧复制和帧消除功能。帧复制是指一个发送端(Talker/Relay)节点可以同时在不同路径上生成或转发出相同的流数据。帧消除是指一个接收端(Listener/Relay)节点可以在不同路径相同的流类别中选择其中一条而舍弃其它条。
[0051] 如图1所示,在TC4系列的MCU芯片中,包括:第一XGMAC(万兆以太网介质访问控制)模块(图1中表示为XGMAC0)以及第二XGMAC模块(图1中表示为XGMAC1)。第一XGMAC模块和第二XGMAC模块中均设置有输入缓存队列RQ、输出缓存队列TQ、输入通道RC、输出通道TC、输入直接内存访问(Direct Memory Access,DMA)通道Rx DMA以及输出DMA通道Tx DMA。
[0052] 具体的,两个XGMAC模块共享8个Tx DMA和Rx DMA通道,每个XGMAC模块分别有8个TQ队列和8个RQ队列,RQ到RC之间存在映射关系。RC到Rx DMA之间也存在映射关系。
[0053] 其中,RC到Rx DMA之间的映射关系可以通过寄存器配置,例如可以设置RC与Rx DMA一一映射。RQ到RC之间映射关系可以通过灵活的接收分析器(Flexible Receive Parser)制定特定规则的映射关系。RQ与RC之间根据接收报文类型确定映射关系。TC与Tx DMA一一映射、TQ与TC一一映射,均可以通过寄存器配置。
[0054] 在图1中,帧复制和帧消除数据流(CB流)如蓝色数据流所示。在TSN网络环境中,除了CB流也需要考虑其他的数据流,例如,进行时间感知整形器(Time Aware Shaper)控制的流(Qbv流)、尽力而为流或无需特殊控制流(Best Effort,BE流)、转发流(透传,即从第一XGMAC模块转发至第二XGMAC模块,或从第二XGMAC模块转发至第一XGMAC模块)。其中,Qbv流如红色数据流所示,BE流如黑色数据流所示,转发流如紫色数据流所示。图1中RX2和TX2被桥功能占用。
[0055] 在以太网环网冗余中,考虑到在TC4系列MCU芯片在满足IEEE802.1CB规范的基础上,可以进一步满足TSN协议簇的其它规范,例如IEEE802.1Qbv、IEEE802.1Qci、IEEE802.1AS等规范。因此,将CB流部署为必须同时使用两路XGMAC模块。同时,为了保证软件层易于对CB流处理,配置CB流独占4个DMA通道。具体的,可以配置CB流占用第一XGMAC模块的第一Rx DMA以及第一Tx DMA,第二XGMAC模块的第二Rx DMA以及第二Tx DMA。
[0056] 示例性的,如图1所示,第一XGMAC模块的第一Rx DMA可以是DMA中的RX0。第二XGMAC模块的第二Rx DMA可以是DMA中的RX1。第一XGMAC模块的第一Tx DMA可以是DMA中的TX4。第二XGMAC模块的第二Tx DMA可以是DMA中的TX5。
[0057] 图1中的网络拓扑可以理解为MCU芯片扮演了两个角色,即源发送端(Talker端)和源接收端(Listener端)。具体的,Talker端可以理解为当CB数据流是至上而下,即从图1的TSN Mcal Part到XGMAC进行数据发送时,TC4 MCU芯片扮演Talker角色,需要实现帧复制功能。即从两个XGMAC模块发出相同的数据流。Listener端可以理解为当CB数据流是至下而上,即从图1的XGMAC模块到TSN Mcal Part进行数据接收时,TC4MCU芯片扮演Listener角色,需要实现帧消除功能。即将从第一XGMAC模块和第二XGMAC模块两端接收到的相同数据流中消除掉其中一个,或者合并成一个数据流。
[0058] 在数据传输中,当配置电路作为源发送端(Talker端),接收到上层发送的CB流数据时,将CB流数据分别发送至第一XGMAC模块的第一Tx DMA,以及第二XGMAC模块的第二Tx DMA,用于发送至目的接收端。示例性的,当配置电路作为Talker端时,如果接收到上层发送的CB流数据时,将CB流数据分别发送至图1中DMA的TX4和TX5进行帧复制操作。
[0059] 当配置电路作为源接收端(Listener端)时,当接收到CB流数据时,将CB流数据传输至第一XGMAC模块的第一Rx DMA和第二XGMAC模块的第二Rx DMA。示例性的,当配置电路作为Listener端时,如果接收到CB流数据时,将CB流数据分别发送至图1中DMA的RX0和RX1,以进行帧消除操作。
[0060] 通过上述配置,可以实现在MCU芯片中实现对IEEE 802.1CB的支持,实现帧复制以及帧消除,完成帧复制和帧消除以提高可靠性(Frame Replication and Elimination for Reliability,FRER)。
[0061] 在TC4 MCU芯片中如果进一步满足IEEE802.1CB规范,可以设置环网网络,即TC4 MCU芯片在以太网环网冗余中可以扮演转发工作。在转发功能中,需要使能TC4系列的桥功能(Bridge)。Bridge的数据流是不经过DMA的,理论上只需要Bridge的接收通道(Receive Channel,RC)和传输通道(Transmit Channel,TC)。也即在以太网环网冗余中,使能芯片的桥功能;在桥功能中,第一XGMAC模块的第三RC与第二XGMAC模块的第三TC连接,第一XGMAC模块的第三TC与第二XGMAC模块的第三RC连接。
[0062] 示例性的,如图1所示,第一XGMAC模块的第三RC可以是Bridge中XGMAC0的RC2,第二XGMAC模块的第三TC可以是Bridge中XGMAC1的TC2;第一XGMAC模块的第三TC可以是Bridge中XGMAC0的TC2,第二XGMAC模块的第三RC可以是Bridge中XGMAC1的RC2。另外,根据硬件特性,RC2会默认消耗DMA中Rx2的资源,TC2会默认消耗DMA中Tx2的资源。
[0063] 在数据传输中,当配置电路中第一XGMAC模块接收到转发流数据时,通过第一XGMAC模块的第三RC将转发流数据传输至第二XGMAC模块的第三TC,通过第二XGMAC模块的第三TC将转发流数据发出。
[0064] 示例性的,如图1所示,XGMAC0的RC2收到的转发流数据可以转发至XGMAC1的TC2,进行转出。
[0065] 在数据传输中,当配置电路中第一XGMAC模块接收到转发流数据时,通过第一XGMAC模块的第三RC将转发流数据传输至第二XGMAC模块的第三TC,通过第二XGMAC模块的第三TC将转发流数据发出
[0066] 示例性的,如图1所示,XGMAC1的RC2收到的转发流数据可以转发至XGMAC0的TC2,进行转出。
[0067] 在TSN协议中存在时间感知整形器流(Time Aware Shaper,TAS),因此也需要对TAS流进行配置。为了使上层协议栈处理逻辑简单,减少运行时间资源消耗,可以设计单独DMA通道处理TAS流。
[0068] 具体的,配置电路中,还包括:在以太网环网冗余中,TAS流占用第一XGMAC模块的第四RC、第四Rx DMA和第四Tx DMA,以及第二XGMAC模块的第五RC、第五Rx DMA和第五Tx DMA。
[0069] 示例性的,如图1所示,第一XGMAC模块的第四RC、第四Rx DMA和第四Tx DMA可以分别是XGMAC0的RC6、RX6和TX6。第二XGMAC模块的第五RC、第五Rx DMA和第五Tx DMA可以分别是XGMAC1的RC7、RX7和TX7。也即XGMAC0接收TAS流使用RC6和RX6,发送使用TX6;XGMAC1接收TAS流使用RC7和RX7,发送使用TX7。
[0070] 可选的,配置电路,还包括:在以太网环网冗余中,非时间敏感流(Best effort,BE)占用第一XGMAC模块的第六RC、第六Rx DMA和第六Tx DMA,以及第二XGMAC模块的第七RC、第七Rx DMA和第七Tx DMA。
[0071] 在数据传输中,当配置电路作为源发送端,接收到上层发送的BE流数据时,将BE流数据发送至第一XGMAC模块的第六Tx DMA,以及第二XGMAC模块的第七Tx DMA,用于发送至目的接收端。
[0072] 当配置电路作为源接收端时,当接收到BE流数据时,将BE流数据传输至第一XGMAC模块的第六Rx DMA和第二XGMAC模块的第七Rx DMA。
[0073] 示例性的,如图1所示,第一XGMAC模块的第六RC、第六Rx DMA和第六Tx DMA可以分别是XGMAC0的RC4、RX4和TX0;第二XGMAC模块的第七RC、第七Rx DMA和第七Tx DMA可以分别是XGMAC1的RC5、RX5和TX1。也即,XGMAC0接收BE流使用RC4和RX4,发送使用TX0;XGMAC1接收BE流使用RC5和RX5,发送使用TX1。
[0074] 通过上述配置,TC系列MCU芯片中的DMA资源可以得到充分利用,实现硬件资源配置的最大化利用,优化整体协议栈性能。
[0075] 在接收组播或者广播报文时,需要使能MCU芯片的广播或多播数据包复制功能(Broadcast/Multicast Packet Duplication),该功能需要使用最高优先级的RQ。因此,第一XGMAC模块和第二XGMAC模块的RQ7需要被强制分配使用。
[0076] 在接收组播或者广播报文时,在本发明实施例的配置电路中,设计成既接收到当前路XGMAC模块的DMA通道以传输给应用层,又转发至另一路XGMAC模块以通过以太网传递给下一网络节点。
[0077] 因此可选的,配置电路,还包括:在数据传输中,当配置电路作为源接收端时,当接收到组播或者广播报文时,使能第一XGMAC模块和第二XGMAC模块的RQ7,并将组播或者广播报文传输至第一XGMAC模第三RC和第六RC,以及第二XGMAC模块的第三RC和第七RC。
[0078] 如图1所示,第一XGMAC模第三RC和第六RC可以分别是XGMAC0的RC2和RC4。第二XGMAC模块的第三RC和第七RC可以分别是XGMAC1的RC2和RC5。也即,在接收组播或广播报文时,强制使能XGMAC0和XGMAC1的RQ7。在XGMAC0上可以配成RQ的数据既到RC2又到RC4;在XGMAC1上可以配成RQ的数据既到RC2又到RC5。其中,RC2上的数据可以转发至下一网络节点,RC4和RC5上的数据可以通过对应的RX传输至应用层。
[0079] 本发明实施例中MCU芯片的接收情况可以总结如下:MCU芯片通过RQ接收数据,RQ与RC之间存在映射关系,RC与RX之间也存在映射关系;根据映射关系实现数据传输。其中,RC与RX之间可以通过寄存器配置成一一对应关系。RQ与RC之间的映射关系可以存在多种配置方式,例如,通过媒体访问控制地址(MAC Address)、虚拟局域网(VLAN)或者Flexible Receive Parser。其中,MAC Address是网络节点中的唯一标识。
[0080] 示例性的,通过Flexible Receive Parser设计的映射关系可以包括:如果MCU芯片接收的是组播或广播报文,可以配置成在XGMA0上RQ的数据既到RC2又到RC4;在XGMA1上RQ的数据既到RC2又到RC5,同时使能XGMA0和XGMA1的RxQ7。对于其他报文可以执行下述操作:如果是本节点的MAC Address,且确定为CB流数据,则XGAMC0上可以将RQ中数据映射到RC0,XGAMC1则将RQ中数据映射到RC1(对CB数据流的处理);如果是本节点的MAC Address,但不是CB流,则XGAMC0上将RQ中数据映射到RC4,XGAMC1上则将RQ中数据映射到RC5(对BE数据流的处理);如果不是本节点的MAC Address,则分别将RQ数据映射到XGAMC0和XGAMC1的RC2上,用于转发(桥功能)。
[0081] 需要说明的是,在本发明实施例中,如图1示例的具体配置方式中,各数据流所占用的通道可以调整。但是,在不同数据流中使用相同通道时,在调整中应保持采用相同通道。并且,对于组播或广播报文的处理,XGMAC0和XGMAC1的RQ7必须使能。本发明实施例的技术方案,通过上述配置可以使DMA的资源得到充分利用,使得硬件资源配置最大化利用,优化整体协议栈性能。
[0082] 本实施例的技术方案,通过在基于芯片的以太网环网冗余配置电路中,将RC与Rx DMA一一映射、TC与Tx DMA一一映射、TQ与TC一一映射,RQ与RC之间根据接收报文类型确定映射关系;在以太网环网冗余中,帧复制和帧消除数据流CB流占用第一XGMAC模块的第一Rx DMA以及第一Tx DMA,第二XGMAC模块的第二Rx DMA以及第二Tx DMA;在数据传输中,当配置电路作为源发送端,接收到上层发送的CB流数据时,将CB流数据分别发送至第一XGMAC模块的第一Tx DMA,以及第二XGMAC模块的第二Tx DMA,用于发送至目的接收端;当配置电路作为源接收端时,当接收到CB流数据时,将CB流数据传输至第一XGMAC模块的第一Rx DMA和第二XGMAC模块的第二Rx DMA,解决了MCU芯片无法支持IEEE802.1CB功能的问题,通过配置MCU芯片中的通道连接关系,使其能够适用于IEEE802.1CB规范中的帧复制和帧消除操作。
[0083] 实施例二
[0084] 图2是根据本发明实施例二提供的一种基于芯片的以太网环网冗余方法的流程图,本实施例中的技术方案可以与上述一个或者多个实施例中的各个可选方案结合。该方法可应用于上述实施例所提供的基于芯片的以太网环网冗余配置电路中。在本实施例中,主要介绍通过软件协议栈结合硬件配置实现自下而上或者自上而下传输的数据流识别以及FRER协议栈处理。
[0085] 如图2所示,该方法包括:
[0086] 步骤210、在数据传输中,当配置电路作为源发送端时,接收上层发送的待识别报文。
[0087] 在具体应用中,上层可以是标准汽车开放系统架构(AUTomotive Open System Architecture,Autosar)接口层。上层可以预先配置好数据流,设置特定的MAC地址和VLAN标识(ID)。
[0088] 步骤220、获取待识别报文中的MAC地址和VLAN标识,并根据MAC地址和VLAN标识,调用流识别函数确定流标识。
[0089] 具体的,驱动层FRER协议栈可以调用流识别函数(Stream Identification),根据MAC地址和VLAN ID识别判断待识别报文是否为CB流数据。
[0090] 其中,在IEEE802.1CB规范中指出,Stream Identification方法包含四种方式:Null Stream identification,Source MAC and VLAN Stream identification,Active Destination MAC and VLAN Stream identification,以及IP Stream identification。
[0091] 在本发明实施例中,以TC4系列为主MCU芯片的控制器作为Talker端时,可以使用Stream Identification的具体方式是Null Stream identification,即基于数据流的目标MAC address和VLAN ID组合区分不同的数据流。以TC4系列为主MCU的控制器作为Listener端时,可以使用的Stream Identification的具体方式是Source MAC and VLAN Stream identification,即基于数据流的源MAC address和VLAN ID组合区分不同的数据流。
[0092] 具体的,Talker端的Stream Identification函数可以表示为“uint8CB_TxStreamIdentification(uint8*DestMac,uint16 vlan_u16)。函数中,“uint8”表示无符号8位整数;“CB_TxStreamIdentification”为函数名;“DestMac”和“vlan_u16”为输入参数,分别表示数据流的源MAC address和VLAN ID。该函数可以为同步、不可重入性函数,返回值可以为“StreamId_u8”。“StreamId_u8”表示流标识。
[0093] 示例性的,可以预先跟不同节点之间传输的数据流设置对应的标识数据,形成表。在获取到带识别报文时,可以根据报文中的源MAC address和VLAN ID进行查表确定,得到流标识。
[0094] Listener端的Stream  Identification函数可以表示为“uint8CB_RxStreamIdentification(uint8*SrcMac,uint16  vlan_u16)”。函数中,“CB_RxStreamIdentification”为函数名;“SrcMac”和“vlan_u16”为输入参数,分别表示目的MAC地址和VLAN标识。该函数可以为同步、不可重入性函数,返回值可以为“StreamId_u8”。
“StreamId_u8”表示流标识。
[0095] 步骤230、当根据流标识确定待识别报文为CB流数据时,将CB流数据分别发送至第一XGMAC模块的第一Tx DMA,以及第二XGMAC模块的第二Tx DMA进行帧复制操作。
[0096] 其中,当待识别报文的流标识与CB流数据对应的预设流标识一致时,可以确定待识别报文为CB流数据。根据如图1所示的配置电路,可以将CB流数据分别发送至XGMAC0中DMA的TX4,以及XGMAC1中DMA的TX5进行帧复制操作。
[0097] 为了便于Listener端对接收到报文进行精准地CB流识别,在本发明实施例的一个可选实施方式中,在将CB流数据分别发送至第一XGMAC模块的第一Tx DMA,以及第二XGMAC模块的第二Tx DMA进行帧复制之前,还包括:当根据流标识确定待识别报文为CB流数据时,在待识别报文中插入CB流标识。
[0098] 具体的,可以在以太网(Ethernet)帧的VLAN数据段后插入CB流标识信息(R‑Tag),再同时分别发送到XGMA0和XGMAC1中特定的Tx DMA通道。其中,图3是根据本发明实施例二提供的一种R‑Tag格式示意图。图3中,EtherType为0xF1C1,序列号(Sequence Number)在每一次CB流的发送进行累加。Reserved为预留位。
[0099] 对于Talker端接收到的非CB流可以直接发送至BE流对应的Tx DMA通道,例如如图1所示的XGMAC0中DMA的TX0和XGMAC1中DMA的TX1。
[0100] 在上述实施方式的基础上,可选的,在数据传输中,当配置电路作为源接收端时,获取待接收报文;并在待接收报文中识别到存在CB流标识时,确定接收到CB流数据;将CB流数据传输至第一XGMAC模块的第一Rx DMA和第二XGMAC模块的第二Rx DMA,进行帧消除操作。
[0101] 其中,底层硬件在不同的XGMAC上收到以太网数据后,可以先将数据存在Rx Queue中,再根据TC4系列的Flexible Receive Parser功能配置,将数据流传送到对应的Rx DMA通道。
[0102] 具体的,Listener端可以先在RQ接收待接收报文,并提取待接收报文,确定待接收报文是否为CB流数据。例如,可以通过在待接收报文中识别是否存在如图3所示的R‑Tag标识。如果存在R‑Tag标识可以确定报文为CB流,此时将CB流传输至对应的Rx DMA通道。例如,将CB流数据传输至如图1所示的XGMAC0中DMA的RX0和XGMMAC1中DMA的RX1。从而,根据XGMAC0中DMA的RX0和XGMMAC1中DMA的RX1中的数据流进行帧消除操作。
[0103] 在本发明实施例的一个可选实施方式中,将CB流数据传输至第一XGMAC模块的第一Rx DMA和第二XGMAC模块的第二Rx DMA,进行帧消除操作,包括:获取待接收报文中的MAC地址和VLAN标识,并根据MAC地址和VLAN标识,调用流识别函数确定流标识;根据流标识调用接收函数,将不同通道上相同的流标识进行个人恢复和序列恢复,进行帧消除操作。
[0104] 在本发明实施例中,不同Rx DMA通道触发相同的中断函数,并调用相同的FRER协议栈接收函数。在中断函数和FRER协议栈接收函数中,Rx DMA不同时,可以具有不同的形参值。比如,RX  DMA中断函数为void  Eth_17_Geth_RxDmaIrqHdlr(const uint8 DmaChnlIdx)。所有的Rx DMA中断都会触发该中断函数。至于是哪个DMA通道触发的可以通过输入形参DmaChnlIdx确认。也就是说,当两个XGMAC同时收到相同的CB流时,该函数会被连续触发两次,其中形参DmaChnlIdx的值不同。比如当前XGMAC0上收到CB流传输到RX0,则DmaChnlIdx为0;XGMAC1上收到CB,传输到RX1,则DmaChnlIdx为1。
[0105] 在中断函数中可以调用FRER协议栈接收函数。FRER协议栈接收函数为“void Geth_receiveFrame_FRER(const uint8 DmaChnlIdx,uint8CtrlIdx,Eth_FrameType FrameType,boolean IsBroadcast,const uint8*PhysAddrPtr,const Eth_DataType*DataPtr,uint16 LenByte)”。其中,“Geth_receiveFrame_FRER”为函数名;该函数为同步、不可重入性函数。“DmaChnlIdx”、“CtrlIdx”、““FrameType”、“IsBroadcast”、“PhysAddrPtr”、“DataPtr”和“LenByte”为输入参数,分别表示:RX索引、XGMAC索引、以太网类型、广播地址、源MAC地址、取数据地址、以及数据长度。
[0106] 具体的,接收函数首先可以根据不同的形参值(如DmaChnlIdx的形参值),调用Listener端的流识别函数,根据MAC地址和VLAN标识确定流标识。通过接收函数可以对不同通道上相同的流标识进行个人恢复(Individual Recovery)和序列恢复(Sequence Recovery),进行帧消除操作。
[0107] 其中,Individual Recovery和Sequence Recovery可根据需求配置选择匹配恢复算法(Match Recovery Algorithm)或者矢量恢复算法(Vector Recovery Algorithm)。图4是根据本发明实施例二提供的一种Vector Recovery Algorithm进行数据处理的示意图。图5是根据本发明实施例二提供的一种Match Recovery Algorithm进行数据处理的示意图。如图4所示,在Vector Recovery Algorithm中,复制帧如果在一个可配的历史窗口(History Window)范围内,复制帧的数据会被消除,否则复制帧被保留。如图4所示,红色的复制帧1与蓝色的帧2间隔在History Window范围内,因此红色的复制帧1被消除。同理,红色的复制帧2和3也在可配的History Window范围内,均被消除。因此,根据恢复算法输出蓝色的帧1、2和3。
[0108] 如图5所示,在Match Recovery Algorithm中,如果有一条路径的延迟超过一个帧,那么该帧将被接受。因此,根据恢复算法,图5中红色的帧均被接受。也即图5中的输出可以依次为蓝色帧1、蓝色帧2、红色帧1、蓝色帧3、红色帧2、红色帧3(图5中未完全示出该输出结果)。
[0109] 在FRER协议栈接收函数中根据不同通道上的相同stream id先进行Individual Recovery处理,后再进行Sequence Recovery(恢复算法同Individual Recovery),最终合成一个数据流。其中,Individual Recovery是指单条链路上进行恢复,即单独对XGMAC0上的数据流进行恢复,或者单独对XGMAC1上的数据流就行恢复。例如,图4或图5中Relay节点左侧的蓝色数据流或者红色数据流上的恢复行为。Sequence Recovery是指两条链路上的数据流恢复。即XGMAC0和XGMAC1上的数据流进行恢复。例如,将图4或者图5中Relay节点左侧的蓝色数据流和红色数据流进行对比恢复,并输出到Relay节点右侧的唯一数据流。当前设计作为端节点,则该唯一数据流会传递到协议栈上层。Sequence Recovery的软件处理就是将两路XGMAC上相同stream id的数据进作为算法输入进行帧消除操作。
[0110] 为了具体限定恢复方式,可选的,个人恢复和序列恢复中的输入参数包括:Rx DMA索引信息、流标识、当前序列号、上一次恢复序列号,输出参数包括:当前恢复序列号;个人恢复和序列恢复采用的算法为矢量恢复算法或者匹配恢复算法;其中,个人恢复中输入参数与输出参数使用在不同的XGMAC模块中定义不同的全局变量;序列恢复中输入参数使用在不同的XGMAC模块中定义不同的全局变量,输出参数在不同的XGMAC模块中共用相同的全局变量。
[0111] 下述内容以vector recovery algorithm举例进行说明,Match Recovery Algorithm是相似的,不再赘述。Individual Recovery的具体函数可以设置为“uint16 IndividualRec_VectorAlgo(const uint8dmaChannel_u8,const uint8 StreamId_u8,uint16*sequence_number,uint16*RecovSeqNum)”。其中,“IndividualRec_VectorAlgo”为函数名;该函数为同步、不可重入性函数;“dmaChannel_u8”、“StreamId_u8”、“sequence_number”、以及“RecovSeqNum”为输入参数,分别代表Rx DMA索引信息、流标识、当前序列号即当前链路上收到的CB流的序列号(R‑Tag)、上一次恢复序列号即上一次Individual Recovery后CB流的序列号;输出参数为“RecovSeqNum”,表示当前恢复序列号即当前经过Individual Recovery算法得到的CB流的序列号。
[0112] Sequence Recovery的具体函数可以设置为“uint16SequenceRec_VectorAlgo(const uint8 dmaChannel_u8,const uint8StreamId_u8,uint16*sequence_number,uint16*RecovSeqNum)”。其中,“SequenceRec_VectorAlgo”为函数名;该函数为同步、不可重入性函数;“dmaChannel_u8”、“StreamId_u8”、“sequence_number”、以及“RecovSeqNum”为输入参数,分别代表Rx DMA索引信息、流标识、当前序列号即当前链路上经过Individual Recovery的CB流的序列号、上一次恢复序列号即上一次Sequence Recovery后CB流的序列号;输出参数为“RecovSeqNum”,表示当前恢复序列号即当前经过Sequence Recovery算法得到的CB流的序列号。
[0113] 对于Individual Recovery,输入参数sequence_number和输入输出参数RecovSeqNum需要使用的是全局变量,且针对不同的XGMAC定义了不同的全局变量。而Sequence Recovery中,输入参数sequence_number也是针对不同的XGMAC定义不同的全局变量,但是输入输出参数RecovSeqNum是在不同的XGMAC上共用相同的全局变量,从而达到最终Sequence Number由两条链路合成一条链路数据(如图4或者图5中的右侧数据)。Sequence Recovery后的数据流可以进行序列号删除操作(Sequence Decode Function),即删除R‑Tag数据,再向上传递给上层接口,如标准Autosar接口EthIf_RxIndication。
[0114] 通过上述的软件栈设计可以实现基于TC4系列MCU芯片的帧复制和帧消除操作;也可以实现端节点之间的特定报文转发;同时可以既实现MatchRecoveryAlgorithm,也可以实现VectorRecoveryAlgorithm。
[0115] 本发明实施例中的技术方案,通过在基于芯片的以太网环网冗余配置电路中,执行下述步骤:在数据传输中,当配置电路作为源发送端时,接收上层发送的待识别报文;获取待识别报文中的MAC地址和VLAN标识,并根据MAC地址和VLAN标识,调用流识别函数确定流标识;当根据流标识确定待识别报文为CB流数据时,将CB流数据分别发送至第一XGMAC模块的第一Tx DMA,以及第二XGMAC模块的第二Tx DMA进行帧复制操作,解决了TC4系列MCU无法支持IEEE802.1CB规范的问题,可以实现IEEE802.1CB规范中的帧复制和帧消除操作;也可以实现端节点之间的特定报文转发;同时可以既实现MatchRecoveryAlgorithm,也可以实现VectorRecoveryAlgorithm。
[0116] 应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
[0117] 上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

当前第1页 第1页 第2页 第3页