欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 一种适用于异构多核芯片的CAN协议栈系统及配置方法独创技术14521字

一种适用于异构多核芯片的CAN协议栈系统及配置方法

2021-02-19 06:06:32

一种适用于异构多核芯片的CAN协议栈系统及配置方法

  技术领域

  本发明涉及一种适用于异构多核芯片的CAN协议栈系统及配置方法。

  背景技术

  控制器局域网(CAN)通讯在车辆控制的应用非常普遍。在车辆控制系统中,各个ECU通过CAN总线通信来交换数据进而实现对车辆的控制。因此,这要求每个ECU具有从CAN总线上获取数据并发送数据的能力。ECU中的软件通常具有高模块化、高层次化、高解耦化的特点,这就要求ECU软件具有符合OSI通信模型的CAN协议栈。

  随着智能辅助驾驶的发展,车辆更加智能化和网联化,具有更多传统汽车不具备的功能,这对ECU提出了更高的要求。随着智能辅助驾驶等级不断提高,智能化控制与多种类多通道传感器数据处理,ECU所承担的任务也愈发复杂,对资源协同性要求更高。因此,原有分散的ECU与传感器信号集中到一块控制板上,实现信息的互联互通,即域控制器(DCU)。

  目前,DCU功能的由片上系统(SoC)实现。SoC是异构多核处理器,现有技术方案是将CAN协议栈部署在某个核上,或者部署在具有同一个OS的同构多核上。

  CAN数据接收发送与处理应用,即CAN协议栈必须部署在同一核或者同构多核的OS中。所部署的核所运行的软件必须具有较高的实时性来完成CAN数据的定时发送与定时接收。当部署在同一核中时,CAN数据接收与发送会占用CAN数据应用的核负载。而对于异构SoC,CAN协议栈也无法部署在不同类型的核中。

  发明内容

  本发明的第一个目的是针对当前CAN协议栈无法部署在异构多核芯片的两个核中的问题,提供一种适用于异构多核芯片的CAN协议栈系统。

  实现本发明第一个目的的技术方案是:一种适用于异构多核芯片的CAN协议栈系统,包括数据收发核、数据应用核和共享内存;所述数据收发核由顶层至底层依次包括应用层、数据收发核运行时环境和系统基础;所述数据应用核由顶层至底层依次包括数据应用核运行时环境、服务层和控制器抽象层;所述数据收发核运行时环境与数据应用核运行时环境之间通过共享内存实现数据的共享与交换。

  进一步地,所述数据收发核的系统基础包括:

  COM模块,用于处理信号的接收和发送功能,并为数据收发核运行时环境提供信号接收和发送的接口函数;

  DCM模块,负责诊断通信管理;

  PDU路由器,用于提供其上、下层模块之间的通信功能;

  CAN Tp模块,负责CAN报文的组包和拆包;

  CAN interface模块,作为CAN Tp模块与CAN驱动之间的接口层;

  CAN驱动,用于硬件驱动。

  进一步地,所述共享内存的数据结构包括通信数据区、标定数据区和诊断数据区。

  进一步地,所述通信数据区由多个周期数据块构成,每个周期数据块均包括发送数据块和接收数据块,每个发送数据块和接收数据块内均设有一个数据锁。

  进一步地,所述诊断数据区包括诊断请求数据块和诊断响应数据块;所述诊断请求数据块包括诊断请求数据锁、诊断服务号和诊断请求数据;所述诊断响应数据块包括诊断响应数据锁、诊断响应号和诊断响应数据。

  本发明的第二个目的是提供一种适用于异构多核芯片的CAN协议栈的配置方法,使CAN协议栈能够部署在异构多核芯片的两个核中。

  实现本发明第二个目的的技术方案是:一种适用于异构多核芯片的CAN协议栈的配置方法,包括以下步骤:

  S1,将CAN数据的发送与接收部署在实时性较高的核中,记为数据收发核;

  S2,将CAN数据的应用部署在实时性不高的核中,记为数据应用核;

  S3,配置一个共享内存;

  S4,配置数据收发核和数据应用核的运行时环境通过共享内存实现数据的共享与交换。

  进一步地,所述数据收发核由顶层至底层依次包括应用层、数据收发核运行时环境和系统基础。

  进一步地,所述数据应用核由顶层至底层依次包括数据应用核运行时环境、服务层和控制器抽象层。

  进一步地,所述共享内存的数据结构被配置为包括通信数据区、标定数据区和诊断数据区三个部分,其中通信数据区根据数据的发送或者接收周期划分为多个周期数据块构成,每个周期数据块均由发送数据块和接收数据块构成,每个发送数据块和接收数据块内均设有一个数据锁;诊断数据区包括诊断请求数据块和诊断响应数据块;所述诊断请求数据块包括诊断请求数据锁、诊断服务号和诊断请求数据;所述诊断响应数据块包括诊断响应数据锁、诊断响应号和诊断响应数据。

  进一步地,上述一种适用于异构多核芯片的CAN协议栈的配置方法,还包括以下步骤:

  上述适用于异构多核芯片的CAN协议栈的配置方法,还包括以下步骤:S5,生成并更新不同的CAN数据库下的数据应用核的数据应用核运行时环境和服务层的代码,从而适配不同的CAN数据库。

  所述步骤S5具体包括:

  S5.1,当收到DBC文件(Database Can的缩写,即CAN的数据库文件)后,对DBC文件进行解析,

  S5.2,将解析得到的报文和信号信息写入表格中;

  S5.3,将报文按照节点信息分类,建立对报文和信号的索引;

  S5.4,读入模板文件;

  S5.5,读取代码生成用的中间文件列表,建立输出文件的索引,删除中间文件中的多余文件;

  S5.3,根据输出文件的索引和对报文和信号的索引,按照模板文件等生成新的数据应用核的数据应用核运行时环境和服务层的代码。

  采用了上述技术方案,本发明具有以下的有益效果:(1)本发明中的数据收发核运行时环境与数据应用核运行时环境之间通过共享内存实现数据的共享与交换,使得数据收发核和数据应用核能够部署在异构多核芯片的两个核中,解决了当前CAN协议栈无法部署在异构多核芯片的两个核中的问题。

  (2)通过本发明的配置方法配置的CAN协议栈,可以发挥不同核运行的操作系统的高实时性与高便利性的特点,既能够保证CAN总线数据在芯片内的处理的速度,也实现了数据操作的便利性。

  (3)本发明的共享内存的每个发送数据块和接收数据块内均设有一个数据锁,能够保证发送数据块和接收数据块仅被一个核使用。

  (4)本发明通过生成并更新不同的CAN数据库下的数据应用核的数据应用核运行时环境和服务层的代码,不但能便于适配不同的CAN数据库,而且提高了代码开发的效率。

  附图说明

  为了使本发明的内容更容易被清楚地理解,下面根据具体实施例并结合附图,对本发明作进一步详细的说明,其中

  图1为本发明的异构多核芯片的CAN协议栈系统的结构框图。

  图2为本发明的共享内存的数据结构示意图。

  图3为本发明的共享内存的诊断数据区结构示意图。

  附图中的标号为:

  数据收发核1、应用层11、数据收发核运行时环境12、系统基础13、COM模块131、DCM模块132、PDU路由器133、CAN Tp模块134、CAN interface模块135、CAN驱动136;

  数据应用核2、数据应用核运行时环境21、服务层22、控制器抽象层23;

  共享内存3、通信数据区31、周期数据块311、发送数据块312、接收数据块313和数据锁314、标定数据区32、诊断数据区33、诊断请求数据锁331、诊断服务号332、诊断请求数据333、诊断响应数据锁334、诊断响应号335、诊断响应数据336。

  具体实施方式

  (实施例1)

  本实施例的一种适用于异构多核芯片的CAN协议栈系统,包括数据收发核1、数据应用核2和共享内存3。

  见图1,数据收发核1由顶层至底层依次包括应用层11、数据收发核运行时环境12和系统基础13。在本实施例中,系统基础13为符合AUTOSAR规范的CAN协议栈,其包括COM模块131、DCM模块132、PDU路由器133、CAN Tp模块134、CAN interface模块135和CAN驱动136。COM模块131用于处理信号的接收和发送功能,并为数据收发核运行时环境12提供信号接收和发送的接口函数。DCM模块132负责诊断报文通信。PDU路由器133用于提供网关功能。CANTp模块134负责CAN报文的组包和拆包。CAN interface模块135作为CAN Tp模块134与CAN驱动136之间的接口层。CAN驱动136用于硬件驱动。

  数据应用核2由顶层至底层依次包括数据应用核运行时环境21、服务层22和控制器抽象层23。数据收发核运行时环境12与数据应用核运行时环境21之间通过共享内存3实现数据的共享与交换。在本实施例中,控制器抽象层23是指运行在数据应用核2中的操作系统。

  见图2,共享内存3的数据结构包括通信数据区31、标定数据区32和诊断数据区33。通信数据区31由多个周期数据块311构成,每个周期数据块311均包括发送数据块312和接收数据块313。每个发送数据块312和接收数据块313内均设有一个数据锁314,保证发送数据块312和接收数据313块仅被一个核使用。

  见图3,诊断数据区33包括诊断请求数据块和诊断响应数据块;所述诊断请求数据块包括诊断请求数据锁331、诊断服务号332和诊断请求数据333;所述诊断响应数据块包括诊断响应数据锁334、诊断响应号335和诊断响应数据336。

  本实施例的一种适用于异构多核芯片的CAN协议栈系统中的数据收发核运行时环境12与数据应用核运行时环境21之间通过共享内存3实现数据的共享与交换,使得数据收发核1和数据应用2核能够部署在异构多核芯片的两个核中,解决了当前CAN协议栈无法部署在异构多核芯片的两个核中的问题。

  (实施例2)

  见图1至图3,本实施例的一种适用于异构多核芯片的CAN协议栈的配置方法,包括以下步骤:

  S1,将CAN数据的发送与接收部署在实时性较高的核中,记为数据收发核1;数据收发核1由顶层至底层依次包括应用层11、数据收发核运行时环境12和系统基础13。系统基础13包括COM模块131、DCM模块132、PDU路由器133、CAN Tp模块134、CAN interface模块135和CAN驱动136。COM模块131用于处理信号的接收和发送功能,并为数据收发核运行时环境12提供信号接收和发送的接口函数。DCM模块132负责诊断报文通信。PDU路由器133用于提供网关功能。CAN Tp模块134负责CAN报文的组包和拆包。CAN interface模块135作为CAN Tp模块134与CAN驱动136之间的接口层。CAN驱动136用于硬件驱动。该步骤具体操作可通过脚本实现,如通过脚本生成数据收发核1中COM模块131的配置代码与数据收发核运行时环境12的代码部署在数据收发核中。

  S2,将CAN数据的应用部署在实时性不高的核中,记为数据应用核2;数据应用核2由顶层至底层依次包括数据应用核运行时环境21、服务层22和控制器抽象层23。该步骤具体操作可通过脚本实现,如通过脚本生成对应数据应用核的数据应用核运行时环境21和服务层22的代码并部署在数据应用核中。在本实施例中,控制器抽象层23是指运行在数据应用核2中的操作系统。

  S3,配置一个共享内存3;共享内存3的数据结构被配置为包括通信数据区31、标定数据区32和诊断数据区33三个部分,其中通信数据区31根据数据的发送或者接收周期划分为多个周期数据块311构成,每个周期数据块311均由发送数据块312和接收数据块313构成,每个发送数据块312和接收数据块313内均设有一个数据锁314,保证发送数据块312和接收数据313块仅被一个核使用。诊断数据区33包括诊断请求数据块和诊断响应数据块;所述诊断请求数据块包括诊断请求数据锁331、诊断服务号332和诊断请求数据333;所述诊断响应数据块包括诊断响应数据锁334、诊断响应号335和诊断响应数据336。

  S4,配置数据收发核1和数据应用核2的运行时环境通过共享内存3实现数据的共享与交换。

  S5,生成并更新不同的CAN数据库下的数据应用核2的数据应用核运行时环境21和服务层22的代码,从而适配不同的CAN数据库,并且提高代码开发的效率。具体包括:

  S5.1,当收到DBC文件(Database Can的缩写,即CAN的数据库文件)后,对DBC文件进行解析,

  S5.2,将解析得到的报文和信号信息写入表格中;

  S5.3,将报文按照节点信息分类,建立对报文和信号的索引;

  S5.4,读入模板文件;

  S5.5,读取代码生成用的中间文件列表,建立输出文件的索引,删除中间文件中的多余文件;

  S5.3,根据输出文件的索引和对报文和信号的索引,按照模板文件等生成新的数据应用核2的数据应用核运行时环境21和服务层22的代码。

  本实施例的一种适用于异构多核芯片的CAN协议栈的配置方法配置的CAN协议栈,可以充分发挥不同核运行的操作系统的高实时性与高便利性的特点,既能够保证CAN总线数据在芯片内的处理的速度,也实现了数据操作的便利性。

  以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

《一种适用于异构多核芯片的CAN协议栈系统及配置方法.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)