一种基于AUTOSAR协议栈的Can报文缓存处理架构制造技术

技术编号:38757665 阅读:13 留言:0更新日期:2023-09-10 09:42
本申请提供了一种基于AUTOSAR协议栈的Can报文缓存处理架构,包括:缓存模块,用于在Can中断时将接收到的Can报文缓存,所述Can报文包括网管报文、应用报文和诊断报文;分时处理函数接口,用于在Task中执行,实现分时读取、处理缓存模块中缓存的Can报文。本架构既满足了处理报文的时间需求,又减少了在Can中断中的处理时间,防止了频繁的进出中断影响单片机的任务调度。的任务调度。的任务调度。

【技术实现步骤摘要】
一种基于AUTOSAR协议栈的Can报文缓存处理架构


[0001]本专利技术涉及汽车电子控制技术,尤其涉及一种基于AUTOSAR协议栈的Can报文缓存处理架构。

技术介绍

[0002]目前大多数车辆的电子控制器单元ECU(Electronic Control Unit)均使用AUTOSAR(Automotive Open System Architecture,汽车开放系统架构)。在AUTOSAR中,网络设备的外围设备会接收到大量的以太网报文,外围设备每接收到一个以太网报文,都会产生中断通知主机的CPU(Central Processing Unit,中央处理器)进行报文接收处理。
[0003]随着接收的报文数量增多,中断负载加剧,CPU需要处理大量的中断请求,导致CPU资源消耗量过大,从而无法满足高速传输以太网数据的需求。此外,中断过多还可能会对系统稳定性造成影响,例如造成丢帧现象、打乱Task正常调度等,此外,如果此时有些关键程序没有做开关中断保护,可能会出现某些关键变量值出错,从而导致程序跑飞。

技术实现思路

[0004]本专利技术的目的在于提供一种基于AUTOSAR协议栈的Can报文缓存处理架构,能够减少中断时间,防止频繁的进出中断影响单片机的任务调度。
[0005]以下给出一个或多个方面的简要概述以提供对这些方面的基本理解。此概述不是所有构想到的方面的详尽综览,并且既非旨在指认出所有方面的关键性或决定性要素亦非试图界定任何或所有方面的范围。其唯一的目的是要以简化形式给出一个或多个方面的一些概念以为稍后给出的更加详细的描述之序。
[0006]根据本专利技术的一方面,提供了一种基于AUTOSAR协议栈的Can报文缓存处理架构,包括:
[0007]缓存模块,用于在Can中断时将接收到的Can报文缓存,所述Can报文包括网管报文、应用报文和诊断报文;
[0008]分时处理函数接口,用于在Task中执行,实现分时读取、处理缓存模块中缓存的Can报文。
[0009]在一实施例中,所述缓存模块中设置有消息缓存数组,所述消息缓存数组用于存储接收到的报文的邮箱号、CanID、时间戳、数据长度和payload。
[0010]在一实施例中,所述消息缓存数组中分别针对网管报文、应用报文和诊断报文分配存储起始位置。
[0011]在一实施例中,所述缓存模块中设置有封装数组,所述封装数组中的每个元素将指向所述消息缓存数组的指针和控制变量封装在一起,形成一个缓存单元。
[0012]在一实施例中,所述控制变量包括缓存消息类型、缓存数组使能标志以及溢出标志。
[0013]在一实施例中,所述缓存模块中设置有映射数组,所述映射数组中的每个元素只
包含两个变量,其中一个变量为报文计数,另一个变量为指向所述封装数组的指针数组。
[0014]在一实施例中,所述缓存模块具有一个按序存储函数接口,所述按序存储函数对接收到的报文中的CanID进行运算,运算结果用作访问映射数组的索引;所述消息缓存数组将报文存储在对应的起始位置,并将存储地址赋予映射,设置报文有效标志后将存储位置后移。
[0015]在一实施例中,所述缓存模块还具有一个按序读取函数接口,所述按序读取函数用于在一个任务中,按照缓存报文的时间戳顺序读取缓存的报文,并调用CanIf层的接口CanIf_RxIndication(),将报文向上传到协议栈其他模块进行处理。
[0016]本专利技术实施例的有益效果是:通过在Can中断时将接收到的报文缓存而非直接处理,在task中周期轮询缓存报文完成系统功能,既满足了处理报文的时间需求,又减少了中断响应时间,防止了其他任务受到频繁打断而跑飞。
附图说明
[0017]为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本专利技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0018]在结合以下附图阅读本公开的实施例的详细描述之后,能够更好地理解本专利技术的上述特征和优点。在附图中,各组件不一定是按比例绘制,并且具有类似的相关特性或特征的组件可能具有相同或相近的附图标记。
[0019]图1是本申请实施例的系统架构示意图;
[0020]图2是本申请实施例的消息缓存数组示意图;
[0021]图3是本申请实施例的封装数组示意图;
[0022]图4是本申请实施例的映射数组示意图;
[0023]图5是本申请实施例的报文处理流程示意图;
[0024]图6是本申请实施例缓存模块CanCom的代码结构示意图。
具体实施方式
[0025]以下结合附图和具体实施例对本专利技术作详细描述。注意,以下结合附图和具体实施例描述的诸方面仅是示例性的,而不应被理解为对本专利技术的保护范围进行任何限制。
[0026]图1示出了本实施例提供的基于AUTOSAR协议栈的Can报文缓存处理架构,该架构作为AUTOSAR协议栈的一部分,包括缓存模块CanCom和分时处理函数接口CanCom_MainFunction()。缓存模块用于在Can中断时将接收到的Can报文缓存,其中Can报文包括网管报文、应用报文和诊断报文。分时处理函数接口用于在Task中执行,实现周期性分时读取、处理缓存模块中缓存的Can报文。
[0027]其中,缓存模块CanCom中设置有消息缓存数组stRxMsgBuff,消息缓存数组stRxMsgBuff的类型为tRxMessage。消息缓存数组stRxMsgBuff用于存储接收到的报文的邮箱号、CanID、时间戳、数据长度和payload(有效数据字节)。
[0028]消息缓存数组stRxMsgBuff中分别针对网管报文、应用报文和诊断报文分配了存
储起始位置。图2展示了各种报文的存储起始位置,如图2所示,网管报文存储起始位置为&stRxMsgBuff[0],应用报文存储起始位置为&stRxMsgBuff[NMCnt],诊断报文存储起始位置为&stRxMsgBuff[NMCnt+DcmCnt]。其中,NMCnt=需要缓存的网管报文数量,其中DcmCnt=需要缓存的应用报文数量。
[0029]进一步地,为了便于对报文进行封装和存取数据,在缓存模块CanCom中设置有封装数组stRxBuff,其类型为tRxBuffer。封装数组tRxBuffer中的每个元素将指向消息缓存数组stRxMsgBuff的指针和一些控制变量(例如缓存消息类型、缓存数组使能标志以及溢出标志)封装在一起,形成一个buffer单元,如图3所示。
[0030]缓存模块CanCom中还设置有映射数组stRxBuffMap,其类型为tRxBufferMap。映射数组stRxBuffMap中的每个元素只包含两个变量,其中一个变量为本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于AUTOSAR协议栈的Can报文缓存处理架构,其特征在于,包括:缓存模块,用于在Can中断时将接收到的Can报文缓存,所述Can报文包括网管报文、应用报文和诊断报文;分时处理函数接口,用于在Task中执行,实现分时读取、处理缓存模块中缓存的Can报文。2.根据权利要求1所述的基于AUTOSAR协议栈的Can报文缓存处理架构,其特征在于:所述缓存模块中设置有消息缓存数组,所述消息缓存数组用于存储接收到的报文的邮箱号、CanID、时间戳、数据长度和有效数据字节。3.根据权利要求2所述的基于AUTOSAR协议栈的Can报文缓存处理架构,其特征在于:所述消息缓存数组中分别针对网管报文、应用报文和诊断报文分配存储起始位置。4.根据权利要求3所述的基于AUTOSAR协议栈的Can报文缓存处理架构,其特征在于:所述缓存模块中设置有封装数组,所述封装数组中的每个元素将指向所述消息缓存数组的指针和控制变量封装在一起,形成一个缓存单元。5.根据权利要求4所述的基于AUTOSAR协议栈的Can报文缓存处理架构,其...

【专利技术属性】
技术研发人员:赵钰琨宋平刘小燕
申请(专利权)人:北京茵沃汽车科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1