CN113709047A - 一种汽车域控制器数据转发系统及方法 - Google Patents
一种汽车域控制器数据转发系统及方法 Download PDFInfo
- Publication number
- CN113709047A CN113709047A CN202111249595.0A CN202111249595A CN113709047A CN 113709047 A CN113709047 A CN 113709047A CN 202111249595 A CN202111249595 A CN 202111249595A CN 113709047 A CN113709047 A CN 113709047A
- Authority
- CN
- China
- Prior art keywords
- data
- ipc
- layer
- ethernet
- tcp
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9057—Arrangements for supporting packet reassembly or resequencing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/165—Combined use of TCP and UDP protocols; selection criteria therefor
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
本发明公开了一种汽车域控制器数据转发系统及方法,Apps应用层数据经TCP/IP协议栈层转发,以以太网数据进入数据转发层转化为IPC数据,经IPC驱动层共享到主服务器;Remote server服务层将IPC数据重组成以太网数据传递给以太网驱动层;Remote server服务层接收到以太网数据转化为IPC数据,结合路由表通过IPC驱动层转发给目标远程客户端;远程客户端将IPC数据经数据转发层转化为以太网数据,通过TCP/IP协议栈层转发,被Apps应用层程序接收。本发明解决了新一代汽车处理器多核异构内部IPC通讯与常规Eth、CAN、LIN等汽车开放系统应用程序软件系统兼容问题。
Description
技术领域
本发明属于汽车电子软件领域,尤其涉及一种汽车域控制器数据转发系统及方法。
背景技术
在过去的十多年里,汽车的EE架构发生了很大的变化,致力于满足消费者的要求,提供了更多娱乐、连接和功能安全特性。近几年随着汽车向智能化和网联化发展,汽车系统越来越复杂成为不争的事实,汽车中配备的电子单元数量大增,终端用户对汽车的安全性更加关注,制造商则对成本更加敏感,这使得汽车成为了一个创新中心并处于技术进步的前沿。为了解决复杂的系统设计、生产成本以及实现更高的安全等级,芯片厂商推出高性能的片上系统(SoC)汽车处理器(Automotive Processors)。
汽车处理器(Automotive Processors)为多核异构SoC,其包括:Security MCU(信息保密MCU)、MPU xn(数据处理MPU)、safety MCU(安全防护MCU)、domain MCU(控制及数据采集MCU)以及多种类多通道的通讯接口及丰富的外设资源。为了解决SoC内部各MCU及MPU之间高效快速的数据交互,SoC内部则引入了全新的IPC通讯技术,即通过硬件通信(mailbox)、共享内存(Share memory)及仲裁电路来实现各异构核之间数据快速交换及存取。
但常规的汽车EE架构系统过于复杂且成本居高不下,典型的汽车都拥有数百个电子控制单元 (ECU),可管理各种功能(如信息保密、数据处理、安全防护、控制及数据采集等),这些 ECU 大多采用简单的微控制器 (MCU)来作为主处理器,他们之间通过常规的CAN、LIN及以太网等通讯手段交换数据。常规的汽车EE架构系统唯一的优点就是有成熟的汽车开放系统架构(AUTOSAR)堆栈和应用程序等软件生态系统。
而新一代的汽车处理器(Automotive Processors)解决了汽车EE架构的复杂度和成本问题,但引入全新的IPC(Inter Processor Communication)通讯技术,却使得采用CAN、LIN 等常规通信技术的汽车开放系统架构(AUTOSAR)堆栈和应用程序等软件生态系统不兼容。于是,解决软件通讯兼容问题则是新一代汽车处理器绕不开的技术痛点。
发明内容
为解决现有技术中存在的不足,本发明的目的在于,提供一种汽车域控制器数据转发系统及方法。
为实现本发明的目的,本发明所采用的技术方案是:
一种汽车域控制器数据转发系统,包括主服务器和若干远程客户端,主服务器包括IPC驱动层、Remote server服务层、以太网驱动层、参数配置表、路由表,以及物理以太网接口;远程客户端包括IPC驱动层、数据转发层、TCP/IP协议栈层、Apps 应用层、参数配置表、路由表;
Apps 应用层的用户数据,经TCP/IP协议栈层转发,以以太网数据格式进入数据转发层,转化为IPC数据,经IPC驱动层共享到主服务器的IPC驱动层;
Remote server服务层接收IPC数据并解析出特征参数IP地址和对应的UDP端口号,结合路由表判断本包数据要转发给内部的远程客户端还是外部的以太网设备;
当要转发给内部的远程客户端时,则结合路由表把特征参数转换成目的远程客户端的核ID 和对应的端点号EP,然后把IPC数据传到IPC驱动层发送出去;
当要转发给外部的以太网设备时,将IPC数据重组成标准的以太网数据传递给以太网驱动层,以太网驱动层通过物理以太网接口把数据发送出去;当从物理以太网接口接收到以太网数据后,传给 Remote server服务层,转化为IPC数据,结合路由表把IPC数据通过IPC驱动层转发给目标远程客户端;
远程客户端的IPC驱动层接收到IPC数据,经数据转发层转化为以太网数据,通过TCP/IP协议栈层转发,被Apps 应用层程序接收并处理。
进一步地,Apps应用层在用户程序中创建网络发送或接收线程,在线程中创建TCP/IP Socket,发送线程通过TCP/IP Socket把需要发送的用户数据填充到发送缓冲区中,并发送数据;用户数据通过TCP/IP协议栈层的转发,以以太网数据的格式进入到数据转发层的本地输入输出消息队列Local out Q中;
同时接收线程不断的侦听设定的UDP端口号上是否有数据进来,本地输入输出消息队列Local out Q中的数据通过TCP/IP协议栈层的转发,触发UDP端口号上的接收线程的TCP/IP Socket,数据被Apps 应用层接收并处理。
进一步地,参数配置表对共享内存地址空间进行统一定义及划分、对外设及硬件资源进行分配,同时对软件模块中的参数进行缺省定义。
进一步地,路由表对所有核进行逻辑编号,得到不同的核ID,每个核ID都分配一个缺省的IP地址和MAC地址;同时每个核ID都分配一个或者多个对应的端点号EP及所属的硬件队列,对每个的端点号EP都分配有硬件通信通道Mailbox。
进一步地,IPC驱动层包括Mailbox driver、Vring、RPMSG 和 RPMSG char;
Mailbox driver用于两个核之间的中断通知的硬件机制;Vring用于基于共享内存的软件队列在两个核之间交换消息时暂时保存消息;RPMSG是基于端点号EP的软件协议和接口,用于在目标核上端点之间交换消息;RPMSG char在linux系统中用于应用程序发送/接收IPC数据的用户空间API。
进一步地,IPC驱动层发送IPC数据,将IPC数据拷贝到两个核之间的共享软件队列Vring中,之后,IPC驱动层在硬件通信通道Mailbox中发布Vring ID,并触发目标核的硬件中断;
目标核在中断服务程序中提取Vring ID,基于Vring ID从共享软件队列Vring中拷贝数据到对应的RPMSG端点EP队列中,并通知数据转发层的报文解析模块有新数据需要处理。
进一步地,数据转发层包括报文解析模块、Eth帧组包/拆包模块、本地输入输出消息队列Local Q;
Eth帧拆包模块从本地输入输出消息队列Local out Q中读取以太网数据包,并对数据包进行拆解,从而得到以太网数据包中的以太网数据和特征参数IP地址和对应的UDP端口号,然后把特征参数传递给报文解析模块;报文解析模块把传入的特征参数通过查路由表的方式转换成IPC通讯需要的核ID和对应的端点号EP,并按IPC报文格式把从以太网数据重新封装成一个或多个IPC数据包;
报文解析模块从RPMSG端点EP队列读取IPC数据并解析出核ID和对应的端点号EP以及有效的IPC数据,然后传递给同层的Eth帧组包模块;Eth 帧组包模块把传入的参数通过查路由表的方式转换成TCP/IP通讯需要的IP地址和对应的UDP端口号,并按照以太网报文格式把IPC数据重新封装成一个以太网数据包,把以太网数据包写入到 本地输入输出消息队列Local Q 中。
一种汽车域控制器数据转发方法,包括步骤:
S1,Apps 应用层的用户数据,经TCP/IP协议栈层转发,以以太网数据格式进入数据转发层,转化为IPC数据,经IPC驱动层共享到主服务器的IPC驱动层;
S2,Remote server服务层接收IPC数据并解析出特征参数IP地址和对应的UDP端口号,结合路由表判断本包数据要转发给内部的远程客户端还是外部的以太网设备;
S3,当要转发给内部的远程客户端时,则结合路由表把特征参数转换成目的远程客户端的核ID 和对应的端点号EP,然后把IPC数据传到IPC驱动层发送出去;
S4,当要转发给外部的以太网设备时,将IPC数据重组成标准的以太网数据传递给以太网驱动层,以太网驱动层通过物理以太网接口把数据发送出去;
S5,当从物理以太网接口接收到以太网数据后,传给 Remote server服务层,转化为IPC数据,结合路由表把IPC数据通过IPC驱动层转发给目标远程客户端;
S6,远程客户端的IPC驱动层接收到IPC数据,经数据转发层转化为以太网数据,通过TCP/IP协议栈层转发,被Apps 应用层程序接收并处理。
进一步地,S1的具体实现步骤如下:
S11,Apps应用层用户程序创建发送线程,在发送线程中创建TCP/IP Socket,通过TCP/IP Socket把需要发送的用户数据填充到发送缓冲区中,并启动发送程序发送数据;
S12,用户数据通过TCP/IP协议栈层的转发,以以太网数据的格式进入到数据转发层的本地输入输出消息队列Local Q中;
S13,数据转发层中Eth帧拆包模块从Local Q队列读取数据并进行拆解,从而得到特征参数IP地址和对应的UDP端口号,并把这些参数传递给同层的报文解析模块;
S14,报文解析模块把传入的参数通过查路由表的方式转换成IPC通讯需要的核ID和对应的端点号EP,并按IPC报文格式把以太网数据重新封装成一个或多个IPC数据包;
S15,IPC驱动层发送IPC数据,将IPC数据拷贝到两个核之间的共享软件队列Vring中,之后,IPC驱动层在硬件通信通道Mailbox中发布Vring ID,并触发目标核的硬件中断。
进一步地,S6的具体实现步骤如下:
S61,目标核在中断服务程序中提取Vring ID,基于Vring ID从共享软件队列Vring中拷贝数据到对应的RPMSG端点EP队列中,并通知数据转发层的报文解析模块有新数据需要处理;
S62,报文解析模块从RPMSG端点EP队列读取IPC数据并解析出核ID和对应的端点号EP以及有效的IPC数据,然后传递给同层的Eth帧组包模块;
S63,Eth 帧组包模块把传入的参数通过查路由表的方式转换成TCP/IP通讯需要的IP地址和对应的UDP端口号,并按照以太网报文格式把IPC数据重新封装成一个以太网数据包,把以太网数据包写入到本地输入输出消息队列Local Q 中;
S64,本地输入输出消息队列Local Q中的数据通过TCP/IP协议栈层的转发,触发UDP端口号上的接收线程的TCP/IP Socket,数据被Apps 应用层接收并处理。
本发明的有益效果在于,与现有技术相比,本发明可根据产品需求和使用场景,可通过软件配置参数和路由表的方式部署不同的数据转发规则,同时解决新一代汽车处理器(Automotive Processors)多核异构SoC内部IPC通讯与常规Eth、CAN、LIN等的汽车开放系统架构(AUTOSAR)堆栈和应用程序等软件生态系统兼容问题。本发明既解决了新技术新设备与已有成熟软件生态系统不兼容的技术痛点,又在生产实践中提高了工作效率。
附图说明
图1是域控制器异构多核SoC数据转发逻辑框图;
图2是域控制器异构多核SoC数据转发原理图;
图3是报文格式示意图。
具体实施方式
下面结合附图和实施例对本发明的技术方案作进一步的说明。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本申请的保护范围。
本发明所述的汽车域控制器数据转发系统及方法,解决多核异构SoC内部IPC通讯与常规Eth、CAN、LIN等的汽车开放系统架构 (AUTOSAR)堆栈和应用程序等软件生态系统兼容问题,包括两种数据转发方式:以太网转IPC和IPC转以太网。
为了描述方便,本发明以以太网代替常规通讯中以太网、CAN和LIN等,但这不代表本发明数据转发方法只适用于以太网。
本发明所述的数据转发方法在多核异构SoC中选择其中一个核(Core)作为IPC通讯的主服务器(Master Core),其它的核(Core)则作为远程客户端(Remote Core)。为了减少代码逻辑复杂度和可移植性,本发明的数据转发方法规定数据先发给Master Core,然后由Master Core进行转发。
新一代多核异构SoC汽车处理器(Automotive Processors)大多由两种以上架构的多个核(Core)构成。如图1所示,本发明所述的汽车域控制器数据转发方法,在 SoC 中选择其中一个Core作为IPC通讯的主服务器(Master Core),其它的Core则作为远程客户端(Remote Core)。
SoC中的多种处理器通过“参数配置表”和“路由表”紧密的联系在一起,当SoC启动时,SoC中的多个处理器会读取“参数配置表”及“路由表”中的数据,然后根据这些数据配置和初始化所使用的硬件资源,如各自的共享内存起始地址和长度,各个Core所独立占有的硬件通信(mailbox)数量及通道,及各自的IP地址、MAC地址、端口号等。为了减少代码逻辑复杂度和可移植性,本发明的数据转发方法规定数据先发给 Master Core,然后由MasterCore进行转发。
如图1所示,主服务器(Master Core)以太网和IPC数据互转软件包括:IPC驱动层(IPC Driver)、Remote server服务层、以太网驱动层、参数配置表、路由表及物理以太网接口(Eth PHY)。
Remote server服务层主要功能是:当主服务器(Master Core)接收到IPC数据包并解析出目的IP地址、UDP端口号等特征数据,然后结合“路由表”判断本包数据要转发给SoC内部的远程客户端(Remote Core)还是外部的以太网设备。
当要转发给SoC内部的远程客户端(Remote Core)时,则需要结合“路由表”把目的IP地址和UDP端口号等特征数据转换成目的CoreID 以及对应的端点号EP,然后把数据传到IPC驱动层发送出去。
当要转发给外部的以太网设备时,数据只需要简单的重组成标准的以太网数据包就可以传递给以太网驱动层,以太网驱动成通过EMAC TX 把数据发送出去。同理,当以太网数据从EMAC RX接收到数据后,提取出以太网包中有效数据传给 Remote server服务层,Remote server服务层解析数据后结合“路由表”把数据通过IPC驱动层转发给目标远程客户端(Remote Core)。
如图1所示,远程客户端(Remote Core)以太网和IPC数据互转软件包括:IPC驱动层、数据转发层、TCP/IP协议栈层、Apps 应用层、操作系统、参数配置表和路由表。
操作系统分为大型操作系统Linux/QNX和微型嵌入式实时RTOS,一般在Cortex-A72 架构的Core上运行Linux/QNX,在Cortex-R5/M4 架构的Core上运行嵌入式实时RTOS/AUTOSAR,在C66X架构的Core上运行嵌入式实时RTOS。
IPC驱动层包括:Mailbox driver、Vring、RPMSG 和 RPMSG char。Mailbox driver用于两个Core之间的中断通知的硬件机制;Vring是基于共享内存的软件队列,在两个Core之间交换消息时暂时保存消息;RPMSG是一个基于端点(EndPoint即EP)的软件协议和接口,用于在目标Core上端点之间交换消息;RPMSG char在linux系统中用于应用程序发送/接收IPC消息的用户空间API。
参数配置表对共享内存SHM地址空间进行统一定义及划分、对外设及硬件资源进行分配,同时对软件模块中的参数进行了缺省定义,比如队列大小及长度、任务优先级、堆栈大小等。
路由表则是对SoC中的所有Core进行逻辑编号(即CoreID,不同的Core其CoreID不同),每个CoreID都分配一个缺省的IP地址和MAC地址;同时每个CoreID都分配一个或者多个RPMSG端点号(EP)及所属的硬件队列;对每个EP端点号都分配有Mailbox通道等。本发明可根据产品需求和使用场景,可通过软件配置参数和路由表的方式部署不同的数据转发规则。
Apps应用层针对不同的操作系统,在用户程序中创建网络发送或接收线程(或任务),在线程中创建TCP/IP Socket,发送线程通过Socket编程框把需要发送的数据填充到发送缓冲区中,并启动发送程序发送数据;同时接收线程不断的侦听设定的端口号上是否有数据进来。
Apps应用层用户数据通过TCP/IP协议栈的层层转发,最终会以以太网数据包的格式进入到数据转发层的以太网包转发输出队列Local out Q中。
如图2所示,数据转发层包括:报文解析模块、Eth帧组包/拆包模块、本地输入输出消息队列(Local Q)。
数据转发层中的“Eth帧拆包”模块不断的查询Local out Q队列是否为空,如果不为空则从队列 Local out Q中读取以太网数据包,并对数据包进行拆解,从而得到以太网数据包中的目的MAC地址、源MAC地址、VLAN头部信息、以太网协议类型(Ehertype)以及以太网数据(Eth payload)及长度(len),更进一步的从以太网数据(Eth payload)中解析出目的IP地址、源IP地址以及目的端口号(port)等参数,然后把这些参数传递给数据转发层的报文解析模块。随后“Eth帧拆包”模块又回头查询Local out Q,继续读取数据然后对数据进行拆解,周而复始循环。
报文解析模块把传入的参数通过查表(路由表)的方式转换成IPC通讯需要的Core逻辑编号(CoreId)、RPMSG通道端点号(EP)等,并按图3所示的IPC报文格式把从以太网数据(Eth payload)数据重新封装成一个或多个IPC数据包Msg。
如图3所示,IPC报文格式主要由三大部分组成:Header(报头)、payload(数据区)和Crc32(校验区),而IPC缓冲区buf的大小size可以设置,如128 byte、256 byte 和512byte,本发明中在参数配置表中设置的缺省值是 256。
报头(Header)由五部分组成:opcode(4 byte)、packsum(1 byte)、seqNo.(1byte)、len(2 byte)和index(2 byte)。具体的,opcode表示操作码,如0x5953580e表示以太网数据包,本发明以以太网为例进行说明,但这不仅仅限定于以太网,也可以是LIN、CAN、UART或者其它低速的通讯数据。packsum为IPC Msg的总包数,一个以太网包可能需要拆分成多个IPC Msg。seqNo.为报文的序列号,从0开始标记,这个字段的作用:一是为了区分相邻几个报文的顺序,尤其是报文内容有严格的顺序要求时避免数据错位或者漏掉报文;二是配合packsum对以太网包进行拆包和组包的算法需要;Len为本包数据长度,即Payload有效长度。index 表示包索引号,从0计数,溢出后从0开始。
Payload(数据区),用户数据填充区,其最大长度为size-14。此区域又由 Src MAC(6 byte)、Dst MAC(6 byte)、VLAN(4 byte)、EtherType(2 byte)和Eth payload(size-32)组成,其中,VLAN用来表示是否支持IEEE 802.1 TSN网络协议,VLAN高16位值为 0x8100时表示是TSN网络协议包,否则则表示是普通的网络包,在数据填充时需要去除该字段。
Crc32(校验区),对 Header 和 Payload做Crc32 校验,计算结果填充到该区域。
如图2所示,在IPC发送前,IPC Msg首先被拷贝到两个Core之间使用的软件共享队列Vring中,在此之后,IPC驱动层程序在硬件Mailbox中发布Vring ID。
更进一步的Vring共享软件队列大小和长度可设置,而且必须成对定义,即定义了Vring TX,就必须定义 Vring RX。本发明中,在参数配置表中设置的Vring缺省值为队列大小等于256,队列长度等于8。
当硬件Mailbox中发布Vring ID后将触发目标Core上的硬件中断。目标Core在中断服务程序ISR中提取Vring ID,然后基于Vring ID,检查该Vring中是否有新数据Msg。如果有新的IPC数据则从Vring队列拷贝数据到对应的RPMSG端点EP队列中,并通知数据转发层的报文解析模块有新数据需要处理。
更进一步的,RPMSG端点EP队列大小和长度可设置,同时EP端点的个数也可以设置,根据外扩存储器的大小而定,本发明中EP端点个数不能超过64,即编号从EP0..EP63,也就是每个Core 可以最大分配64个 EP 队列。
报文解析模块不断的查询RPMSG端点EP队列是否为空,如果不为空则从RPMSG端点EP队列读取数据并解析出Core逻辑编号(CoreId)、RPMSG端点号(EP)以及有效的Msg数据,直到同一批数据(一帧或多帧IPC数据)读取并解析完成,然后把这些参数传递给同层的Eth帧组包模块。回头继续查询RPMSG端点EP队列是否为空,继续读取数据并解析,如此,周而复始不断循环。
Eth 帧组包模块把传入的参数通过查表(路由表)的方式转换成TCP/IP通讯需要的MAC地址、IP地址以及端口号等,并按照以太网报文格式把有效的IPC Msg 数据重新封装成一个以太网数据包,把这个数据包写入到 Local in Q 队列中。
Local in Q 队列中的数据通过TCP/IP协议栈层层转发,最终会触发UDP目标端口上被阻的塞线程或任务中的Socket接收程序。然后,数据被Apps 应用层程序所接收并处理。至此则完成IPC转以太网。
综上,以太网转IPC包括:IPC驱动层、数据转发层、TCP/IP协议栈层、Apps 应用层及操作系统。数据转发层由报文解析模块、Eth 帧组包/拆包模块及输入输出Local Q队列组成。
以太网转IPC的核心算法及步骤如下:
(1)针对不同的操作系统,Apps应用层用户程序创建线程或者任务,在线程或任务中创建TCP/IP Socket,通过Socket编程框架把需要发送的数据填充到发送缓冲区中,并启动发送程序发送数据;
(2)数据通过TCP/IP协议栈的层层转发,最终会以以太网数据包的格式进入到数据转发层的以太网包转发输出队列Local out Q中;
(3)数据转发层中的“Eth帧拆包”模块从Local out Q队列读取数据并进行拆解,从而得到MAC地址、IP地址、端口号及数据长度等参数,并把这些参数传递给同层的报文解析模块;
(4)报文解析模块把传入的参数通过查表(路由表)的方式转换成IPC通讯需要的Core逻辑编号(CoreId)、RPMSG通道端点号(EP)等,并按照 IPC MsgBuf报文格式把Ethpayload 数据重新封装成一个或多个IPC数据包Msg;
(5)在IPC发送前,数据Msg首先被拷贝到两个Core之间使用的软件共享队列Vring中,在此之后,IPC驱动程序在硬件Mailbox中发布Vring ID;
(6)当硬件Mailbox中发布Vring ID后将触发目标Core上的硬件中断,目标Core在中断服务程序ISR中提取Vring ID,然后基于Vring ID,检查该Vring中是否有新IPC数据包Msg,至此则完成以太网转IPC。
IPC转以太网的核心算法及步骤如下:
(1)当有新的Vring ID 到达时,会触发本Core的硬件中断,在中断服务程序中提Vring ID,然后基于Vring ID,检查该Vring中是否有新数据包Msg,如果有新的IPC数据则从Vring队列拷贝数据到对应的RPMSG端点EP队列中,并通知数据转发层的报文解析模块有新数据需要处理;
(2)报文解析模块从RPMSG端点EP队列读取数据并解析出Core逻辑编号(CoreId)、RPMSG通道端点号(EP)以及有效的Msg数据,直到同一批数据(一帧或多帧IPC数据)读取并解析完成,然后把这些参数传递给同层的Eth帧组包模块;
(3)Eth 帧组包模块把传入的参数通过查表(路由表)的方式转换成TCP/IP通讯需要的MAC地址、IP地址以及端口号等,并按照以太网报文格式把有效的IPC Msg 数据重新封装成一个以太网数据并写入到以太网包转发输入队列Local in Q 中;
(4)Local in Q 队列中的数据通过TCP/IP协议栈层层转发,最终会触发UDP目标端口上被阻的塞线程或任务中的Socket接收程序;
(5)然后,数据被Apps 应用层程序所接收并处理,至此则完成IPC转以太网。
本发明可根据产品需求和使用场景,可通过软件配置参数和路由表的方式部署不同的数据转发规则,同时解决新一代汽车处理器(Automotive Processors)多核异构SoC内部IPC通讯与常规Eth、CAN、LIN等的汽车开放系统架构(AUTOSAR)堆栈和应用程序等软件生态系统兼容问题。本发明既解决了新技术新设备与已有成熟软件生态系统不兼容的技术痛点,又在生产实践中提高了工作效率。
本发明申请人结合说明书附图对本发明的实施示例做了详细的说明与描述,但是本领域技术人员应该理解,以上实施示例仅为本发明的优选实施方案,详尽的说明只是为了帮助读者更好地理解本发明精神,而并非对本发明保护范围的限制,相反,任何基于本发明的发明精神所作的任何改进或修饰都应当落在本发明的保护范围之内。
Claims (10)
1.一种汽车域控制器数据转发系统,其特征在于,包括主服务器和若干远程客户端,主服务器包括IPC驱动层、Remote server服务层、以太网驱动层、参数配置表、路由表,以及物理以太网接口;远程客户端包括IPC驱动层、数据转发层、TCP/IP协议栈层、Apps 应用层、参数配置表、路由表;
Apps 应用层的用户数据,经TCP/IP协议栈层转发,以以太网数据格式进入数据转发层,转化为IPC数据,经IPC驱动层共享到主服务器的IPC驱动层;
Remote server服务层接收IPC数据并解析出特征参数IP地址和对应的UDP端口号,结合路由表判断本包数据要转发给内部的远程客户端还是外部的以太网设备;
当要转发给内部的远程客户端时,则结合路由表把特征参数转换成目的远程客户端的核ID 和对应的端点号EP,然后把IPC数据传到IPC驱动层发送出去;
当要转发给外部的以太网设备时,将IPC数据重组成标准的以太网数据传递给以太网驱动层,以太网驱动层通过物理以太网接口把数据发送出去;当从物理以太网接口接收到以太网数据后,传给 Remote server服务层,转化为IPC数据,结合路由表把IPC数据通过IPC驱动层转发给目标远程客户端;
远程客户端的IPC驱动层接收到IPC数据,经数据转发层转化为以太网数据,通过TCP/IP协议栈层转发,被Apps 应用层程序接收并处理。
2.根据权利要求1所述的汽车域控制器数据转发系统,其特征在于,Apps应用层在用户程序中创建网络发送或接收线程,在线程中创建TCP/IP Socket,发送线程通过TCP/IPSocket把需要发送的用户数据填充到发送缓冲区中,并发送数据;用户数据通过TCP/IP协议栈层的转发,以以太网数据的格式进入到数据转发层的本地输入输出消息队列Localout Q中;
同时接收线程不断的侦听设定的UDP端口号上是否有数据进来,本地输入输出消息队列Local out Q中的数据通过TCP/IP协议栈层的转发,触发UDP端口号上的接收线程的TCP/IP Socket,数据被Apps 应用层接收并处理。
3.根据权利要求1所述的汽车域控制器数据转发系统,其特征在于,参数配置表对共享内存地址空间进行统一定义及划分、对外设及硬件资源进行分配,同时对软件模块中的参数进行缺省定义。
4.根据权利要求1所述的汽车域控制器数据转发系统,其特征在于,路由表对所有核进行逻辑编号,得到不同的核ID,每个核ID都分配一个缺省的IP地址和MAC地址;同时每个核ID都分配一个或者多个对应的端点号EP及所属的硬件队列,对每个的端点号EP都分配有硬件通信通道Mailbox。
5.根据权利要求1所述的汽车域控制器数据转发系统,其特征在于,IPC驱动层包括Mailbox driver、Vring、RPMSG 和 RPMSG char;
Mailbox driver用于两个核之间的中断通知的硬件机制;Vring用于基于共享内存的软件队列在两个核之间交换消息时暂时保存消息;RPMSG是基于端点号EP的软件协议和接口,用于在目标核上端点之间交换消息;RPMSG char在linux系统中用于应用程序发送/接收IPC数据的用户空间API。
6.根据权利要求1所述的汽车域控制器数据转发系统,其特征在于,IPC驱动层发送IPC数据,将IPC数据拷贝到两个核之间的共享软件队列Vring中,之后,IPC驱动层在硬件通信通道Mailbox中发布Vring ID,并触发目标核的硬件中断;
目标核在中断服务程序中提取Vring ID,基于Vring ID从共享软件队列Vring中拷贝数据到对应的RPMSG端点EP队列中,并通知数据转发层的报文解析模块有新数据需要处理。
7.根据权利要求1所述的汽车域控制器数据转发系统,其特征在于,数据转发层包括报文解析模块、Eth帧组包/拆包模块、本地输入输出消息队列Local Q;
Eth帧拆包模块从本地输入输出消息队列Local out Q中读取以太网数据包,并对数据包进行拆解,从而得到以太网数据包中的以太网数据和特征参数IP地址和对应的UDP端口号,然后把特征参数传递给报文解析模块;报文解析模块把传入的特征参数通过查路由表的方式转换成IPC通讯需要的核ID和对应的端点号EP,并按IPC报文格式把从以太网数据重新封装成一个或多个IPC数据包;
报文解析模块从RPMSG端点EP队列读取IPC数据并解析出核ID和对应的端点号EP以及有效的IPC数据,然后传递给同层的Eth帧组包模块;Eth 帧组包模块把传入的参数通过查路由表的方式转换成TCP/IP通讯需要的IP地址和对应的UDP端口号,并按照以太网报文格式把IPC数据重新封装成一个以太网数据包,把以太网数据包写入到 本地输入输出消息队列Local Q 中。
8.一种汽车域控制器数据转发方法,其特征在于,包括步骤:
S1,Apps 应用层的用户数据,经TCP/IP协议栈层转发,以以太网数据格式进入数据转发层,转化为IPC数据,经IPC驱动层共享到主服务器的IPC驱动层;
S2,Remote server服务层接收IPC数据并解析出特征参数IP地址和对应的UDP端口号,结合路由表判断本包数据要转发给内部的远程客户端还是外部的以太网设备;
S3,当要转发给内部的远程客户端时,则结合路由表把特征参数转换成目的远程客户端的核ID 和对应的端点号EP,然后把IPC数据传到IPC驱动层发送出去;
S4,当要转发给外部的以太网设备时,将IPC数据重组成标准的以太网数据传递给以太网驱动层,以太网驱动层通过物理以太网接口把数据发送出去;
S5,当从物理以太网接口接收到以太网数据后,传给 Remote server服务层,转化为IPC数据,结合路由表把IPC数据通过IPC驱动层转发给目标远程客户端;
S6,远程客户端的IPC驱动层接收到IPC数据,经数据转发层转化为以太网数据,通过TCP/IP协议栈层转发,被Apps 应用层程序接收并处理。
9.根据权利要求8所述的汽车域控制器数据转发方法,其特征在于,S1的具体实现步骤如下:
S11,Apps应用层用户程序创建发送线程,在发送线程中创建TCP/IP Socket,通过TCP/IP Socket把需要发送的用户数据填充到发送缓冲区中,并启动发送程序发送数据;
S12,用户数据通过TCP/IP协议栈层的转发,以以太网数据的格式进入到数据转发层的本地输入输出消息队列Local Q中;
S13,数据转发层中Eth帧拆包模块从Local Q队列读取数据并进行拆解,从而得到特征参数IP地址和对应的UDP端口号,并把这些参数传递给同层的报文解析模块;
S14,报文解析模块把传入的参数通过查路由表的方式转换成IPC通讯需要的核ID和对应的端点号EP,并按IPC报文格式把以太网数据重新封装成一个或多个IPC数据包;
S15,IPC驱动层发送IPC数据,将IPC数据拷贝到两个核之间的共享软件队列Vring中,之后,IPC驱动层在硬件通信通道Mailbox中发布Vring ID,并触发目标核的硬件中断。
10.根据权利要求8所述的汽车域控制器数据转发方法,其特征在于,S6的具体实现步骤如下:
S61,目标核在中断服务程序中提取Vring ID,基于Vring ID从共享软件队列Vring中拷贝数据到对应的RPMSG端点EP队列中,并通知数据转发层的报文解析模块有新数据需要处理;
S62,报文解析模块从RPMSG端点EP队列读取IPC数据并解析出核ID和对应的端点号EP以及有效的IPC数据,然后传递给同层的Eth帧组包模块;
S63,Eth 帧组包模块把传入的参数通过查路由表的方式转换成TCP/IP通讯需要的IP地址和对应的UDP端口号,并按照以太网报文格式把IPC数据重新封装成一个以太网数据包,把以太网数据包写入到本地输入输出消息队列Local Q 中;
S64,本地输入输出消息队列Local Q中的数据通过TCP/IP协议栈层的转发,触发UDP端口号上的接收线程的TCP/IP Socket,数据被Apps 应用层接收并处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111249595.0A CN113709047B (zh) | 2021-10-26 | 2021-10-26 | 一种汽车域控制器数据转发系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111249595.0A CN113709047B (zh) | 2021-10-26 | 2021-10-26 | 一种汽车域控制器数据转发系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113709047A true CN113709047A (zh) | 2021-11-26 |
CN113709047B CN113709047B (zh) | 2022-02-08 |
Family
ID=78647034
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111249595.0A Active CN113709047B (zh) | 2021-10-26 | 2021-10-26 | 一种汽车域控制器数据转发系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113709047B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114363425A (zh) * | 2021-11-30 | 2022-04-15 | 岚图汽车科技有限公司 | 一种some/ip服务管理方法及相关设备 |
CN114374583A (zh) * | 2022-01-17 | 2022-04-19 | 南京芯驰半导体科技有限公司 | 一种汽车网关控制器及其控制方法 |
CN114553854A (zh) * | 2022-02-11 | 2022-05-27 | 亿咖通(湖北)技术有限公司 | 基于Mailbox的Linux通信方法、第一处理器及系统 |
CN114710529A (zh) * | 2022-03-25 | 2022-07-05 | 广州小鹏汽车科技有限公司 | 数据传输方法、装置、系统、车辆及存储介质 |
CN115412394A (zh) * | 2022-08-22 | 2022-11-29 | 奥特酷智能科技(南京)有限公司 | 基于AutoSar的异构域控制器核间通信方法 |
CN115412478A (zh) * | 2022-08-30 | 2022-11-29 | 奥特酷智能科技(南京)有限公司 | 一种面向服务的汽车域控制器数据转发系统及方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1489358A (zh) * | 2002-09-11 | 2004-04-14 | ���ǵ�����ʽ���� | 使用传输控制协议/互联网协议提供处理器间通信的装置 |
US20080120426A1 (en) * | 2006-11-17 | 2008-05-22 | International Business Machines Corporation | Selective acceleration of transport control protocol (tcp) connections |
CN101262501A (zh) * | 2008-04-23 | 2008-09-10 | 杭州华三通信技术有限公司 | 一种多核系统中的核间通信方法和一种多核系统 |
CN104519554A (zh) * | 2014-12-12 | 2015-04-15 | 重庆邮电大学 | 一种支持多频段6LoWSN并行接入Internet的方法 |
CN104518998A (zh) * | 2014-12-12 | 2015-04-15 | 北京海尔集成电路设计有限公司 | 一种两个芯片之间进行数据交换的方法 |
CN109976925A (zh) * | 2019-03-27 | 2019-07-05 | 北京翼辉信息技术有限公司 | 一种基于混合多系统核间实时通信的方法和系统 |
CN113114708A (zh) * | 2021-06-16 | 2021-07-13 | 奥特酷智能科技(南京)有限公司 | 一种Zonal控制器数据转发方法及系统 |
CN113542503A (zh) * | 2020-03-31 | 2021-10-22 | 华为技术有限公司 | 一种创建应用快捷方式的方法、电子设备及系统 |
-
2021
- 2021-10-26 CN CN202111249595.0A patent/CN113709047B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1489358A (zh) * | 2002-09-11 | 2004-04-14 | ���ǵ�����ʽ���� | 使用传输控制协议/互联网协议提供处理器间通信的装置 |
US20080120426A1 (en) * | 2006-11-17 | 2008-05-22 | International Business Machines Corporation | Selective acceleration of transport control protocol (tcp) connections |
CN101262501A (zh) * | 2008-04-23 | 2008-09-10 | 杭州华三通信技术有限公司 | 一种多核系统中的核间通信方法和一种多核系统 |
CN104519554A (zh) * | 2014-12-12 | 2015-04-15 | 重庆邮电大学 | 一种支持多频段6LoWSN并行接入Internet的方法 |
CN104518998A (zh) * | 2014-12-12 | 2015-04-15 | 北京海尔集成电路设计有限公司 | 一种两个芯片之间进行数据交换的方法 |
CN109976925A (zh) * | 2019-03-27 | 2019-07-05 | 北京翼辉信息技术有限公司 | 一种基于混合多系统核间实时通信的方法和系统 |
CN113542503A (zh) * | 2020-03-31 | 2021-10-22 | 华为技术有限公司 | 一种创建应用快捷方式的方法、电子设备及系统 |
CN113114708A (zh) * | 2021-06-16 | 2021-07-13 | 奥特酷智能科技(南京)有限公司 | 一种Zonal控制器数据转发方法及系统 |
Non-Patent Citations (1)
Title |
---|
野火: "8. 多核异构核间通信–ipcc", 《[野火]嵌入式LINUX驱动开发实战指南——基于STM32MP1系列 文档 HTTPS://DOC.EMBEDFIRE.COM/LINUX/STM32MP1/DRIVER/ZH/LATEST/LINUX_DRIVER/FRAMEWORK_IPCC.HTML》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114363425A (zh) * | 2021-11-30 | 2022-04-15 | 岚图汽车科技有限公司 | 一种some/ip服务管理方法及相关设备 |
CN114363425B (zh) * | 2021-11-30 | 2023-06-13 | 岚图汽车科技有限公司 | 一种some/ip服务管理方法及相关设备 |
CN114374583A (zh) * | 2022-01-17 | 2022-04-19 | 南京芯驰半导体科技有限公司 | 一种汽车网关控制器及其控制方法 |
CN114553854A (zh) * | 2022-02-11 | 2022-05-27 | 亿咖通(湖北)技术有限公司 | 基于Mailbox的Linux通信方法、第一处理器及系统 |
CN114710529A (zh) * | 2022-03-25 | 2022-07-05 | 广州小鹏汽车科技有限公司 | 数据传输方法、装置、系统、车辆及存储介质 |
CN114710529B (zh) * | 2022-03-25 | 2024-03-12 | 广州小鹏汽车科技有限公司 | 数据传输方法、装置、系统、车辆及存储介质 |
CN115412394A (zh) * | 2022-08-22 | 2022-11-29 | 奥特酷智能科技(南京)有限公司 | 基于AutoSar的异构域控制器核间通信方法 |
CN115412394B (zh) * | 2022-08-22 | 2023-08-18 | 奥特酷智能科技(南京)有限公司 | 基于AutoSar的异构域控制器核间通信方法 |
CN115412478A (zh) * | 2022-08-30 | 2022-11-29 | 奥特酷智能科技(南京)有限公司 | 一种面向服务的汽车域控制器数据转发系统及方法 |
CN115412478B (zh) * | 2022-08-30 | 2023-06-02 | 奥特酷智能科技(南京)有限公司 | 一种面向服务的汽车域控制器数据转发系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113709047B (zh) | 2022-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113709047B (zh) | 一种汽车域控制器数据转发系统及方法 | |
JP6188093B2 (ja) | 通信トラフィック処理アーキテクチャおよび方法 | |
US10057387B2 (en) | Communication traffic processing architectures and methods | |
US9100349B2 (en) | User selectable multiple protocol network interface device | |
US11704154B2 (en) | High-speed broadside communications and control system | |
EP1133129A2 (en) | A programmable multi-standard mac architecture | |
KR101401874B1 (ko) | 통신제어 시스템, 스위칭 노드, 통신제어 방법, 및 통신제어용 프로그램 | |
US10353836B2 (en) | Network controller—sideband interface port controller | |
US9772968B2 (en) | Network interface sharing | |
KR100425062B1 (ko) | 데이터 교환 장치용 내부 통신 프로토콜 | |
CN113302885A (zh) | 车载网络的以太网和控制器区域网络协议转换 | |
KR20140048815A (ko) | Tcp 가속화를 포함하는 내장형 자동차용 획득 장치를 위한 분산형 측정 배열 | |
CN112702313B (zh) | 高速udp数据发送系统及方法 | |
CN113938443A (zh) | 一种无线物联网协议交换机架构、实现方法 | |
WO2021055205A1 (en) | Intelligent controller and sensor network bus, system and method including generic encapsulation mode | |
US8898716B2 (en) | Method and apparatus for designing a communication mechanism between embedded cable modem and embedded set-top box | |
JP7488599B2 (ja) | 効率的に伝送するイーサネット装置 | |
US20230179545A1 (en) | Packet forwarding apparatus with buffer recycling and associated packet forwarding method | |
KR20040075597A (ko) | 네트워크 라인 인터페이스 시스템의 정보 저장 방법 및 그장치 | |
CN112988633A (zh) | 一种电子设备及数据传输方法 | |
CN113923077A (zh) | Modbus-tsn网关芯片 | |
CN114513381A (zh) | 基于af_xdp的实时以太网现场总线数据包处理方法 | |
CN115378594A (zh) | 一种usb小包数据密码通信方法及系统 | |
JP2002281039A (ja) | パケット送受信装置 |
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 | ||
CP02 | Change in the address of a patent holder |
Address after: 210012 room 401-404, building 5, chuqiaocheng, No. 57, Andemen street, Yuhuatai District, Nanjing, Jiangsu Province Patentee after: AUTOCORE INTELLIGENT TECHNOLOGY (NANJING) Co.,Ltd. Address before: 211800 building 12-289, 29 buyue Road, Qiaolin street, Pukou District, Nanjing City, Jiangsu Province Patentee before: AUTOCORE INTELLIGENT TECHNOLOGY (NANJING) Co.,Ltd. |
|
CP02 | Change in the address of a patent holder |