8.AUTOSAR 诊断栈分析(一)

目录

1.错误分级分类

2.错误上报方法 

2.1 API上报

2.2 预定义的Callout上报

2.3 DET(Default Error Tracer)相关Hook或者Callout上报

2.4 DEM相关错误处理

2.5 DLT相关错误处理 

3.小结 


终于来到了整个ECU的核心:诊断Dianostic。

为了更加系统地了解诊断,我将从错误分级分类、错误上报方法、诊断模块几个方面进行分析。

1.错误分级分类

根据AUTOSAR相关简介,在ECU系统级别的错误等级如下四类:

  • 开发错误(Development Errors)

        这种错误类型很常见,在开发期间用来定位软件bug;

        例如某些模块没初始就开始使用、错误的数据长度等;

        随着ECU的量产上车该类错误的检测机制需要关闭。

  • 运行时错误(Runtime Errors)

        该类错误属于比较严重的系统级软件错误,但是也是需要根据实际情况记录。

        例如在运行过程中,收到的CAN报文突然丢掉了(Buffer里没数据了)。

  • 瞬态故障错误(Transient Faults)

        瞬态故障错误一般发生在硬件,这个我暂时还没有看到过。

  • 产品错误(Production Errors)

        这个很好理解了,就是定义的某些DTC,用于量产车日常的维修诊断使用。

那么上述错误从类型来看,又分为:

  • 硬件失效/错误

        例如Flash模拟EEPROM失效,不能写入等

  • 软件错误

        例如调用NvM_Write时输入了错误的地址信息等

  • 系统错误

        这个就不太好分辨,例如某报文接收超时,无法判断是软件还是硬件错误;故定义成系统错误,需要进一步处理。

2.错误上报方法 

AUTOSAR定义了如下几种方法进行错误上报。

2.1 API上报

该方法是通过读取调用某个API后的返回值获得该API操作是否成功。这么说起来比较绕,还是具体示例:

Std_ReturnType Dem_ClearDTC (uint8 ClientId)

如上,Std_ReturnType有两种返回值E_OK和E_NOT_OK,用于表示当前清除DTC的操作是否成功,用户根据返回接口去做对应的代码逻辑。

注意,这里要与我们调用DEM相关API设置DTC状态不一样的,下面会讲到。

2.2 预定义的Callout上报

当某个操作出现错误时设计一个callout,例如CAN报文接收timeout,此时通过callout上报。

2.3 DET(Default Error Tracer)相关Hook或者Callout上报

DET主要是上报开发错误和运行时错误。

这意味着,在开发阶段DET用于上报开发错误,量产阶段DET根据情况上报系统错误。所以以前我们常说上车后DET是需要关闭的这种说法不是非常准确。

该方式常见的机制有:

  • 将错误信息写入ring buffer
  • 将错误信息通过串口输出到外部logger
  • 死循环等

提供的接口有:

Det_ReportError(uint16 ModuleId, uint8 InstanceId, uint8 ApiId, uint8 ErrorId)

ModuleID:一般指AUTOSAR定义的基础软件模块ID

IntanceID:该模块的示例ID,例如CAN0\1\2

ApiID:对应模块的API ID

ErrorID:对应错误ID 

2.4 DEM相关错误处理

DEM错误上报,就是大家平时接触的最多的错误处理地方时,用于上报主机厂定义的错误,通常是通过将错误事件写进memory、禁用某些ECU功能(FIM:Function Inhibition Manager)或者通知某些SW-C。

该模块提供的接口如下:

Dem_SetEventStatus(EventId, EventStatus)

这块的事件管理会在后面详细说明。

2.5 DLT相关错误处理 

DLT(Diagnostic Log and Trace)用于收集错误信息并转为标准格式,然后将数据传给PduR,经由PduR通过不同总线传输到PC或者记录仪。

该模块有如下功能:

  • 提供标准接口用于记录SW-Cs、Det、Dem等模块提供的错误信息
  • 结合RTE使用Trace
  • 可以单独对log、trace信息进行使能
  • Dlt在开发和量产阶段均可以使用

需要重点关注的是,量产阶段DLT的log和trace信息必须要信息安全机制保证。

常用API为:

Dlt_SendLogMessage(Dlt_SessionIDType session_id, 
Dlt_MessageLogInfoType log_info, 
uint8 *log_data, 
uint16 log_data_length)

DLT常见的使用方法如下:

  1. SW-C生成一个log信息,并调用DLT标准接口将信息发送给DLT
  2. DLT模块通过DLT协议将数据转为标准格式;
  3. 通过PduR将数据传给目标总线
  4. 编码后的数据传给目标PC。 

3.小结 

通过上面简介,我们主要了解了在ECU层级下的错误分级分类、错误上报机制。

对故障处理,大家可能首先就想到了DEM和DET;

对于API这类虽说也在用,但是还没有上升到故障这种想法;

DLT就更不用说了,以前大家有打印log的习惯,但是没有一个统一的标准。

下面我们将详细聊DEM、DCM,有机会在聊聊DLT吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/217772.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023 Unite 大会关于“Muse“ AI 大模型训练

Unity Muse 借助强大的 AI 能力帮助你探索、构思和迭代,其中包括纹理和精灵两项功能,可将自然语言和视觉输入转化为可用资产。 将 AI 引入 Unity Editor 中的 Muse 提供了更快将想法转化为实物的选项。您可以调整并使用文本提示、图案、颜色和草图&…

el-uploader同一文件无法上传问题

在上传成功和失败的回调方法中,吊用一下clearFiles方法。 this.$refs.upload.clearFiles();

GDPU 数据结构 天码行空11

文章目录 数据结构实验十一 图的创建与存储一、实验目的二、实验内容三、【实验源代码】🍻 CPP版🍻 c 语言版🍻 java版 四、【实验结果】五、【实验总结】 数据结构实验十一 图的创建与存储 一、实验目的 1、 理解图的存储结构与基本操作&a…

力扣114. 二叉树展开为链表(java,用树模拟链表)

Problem: 114. 二叉树展开为链表 文章目录 题目描述思路解题方法复杂度Code 题目描述 给你二叉树的根结点 root ,请你将它展开为一个单链表: 1.展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左…

Flink实战(11)-Exactly-Once语义之两阶段提交

0 大纲 [Apache Flink]2017年12月发布的1.4.0版本开始,为流计算引入里程碑特性:TwoPhaseCommitSinkFunction。它提取了两阶段提交协议的通用逻辑,使得通过Flink来构建端到端的Exactly-Once程序成为可能。同时支持: 数据源&#…

柯桥学历提升培训,考研党要不要关闭朋友圈

关掉朋友圈的好处 在众多上岸人的考研经验贴中,可以看到,“适时关闭朋友圈”成为常见内容。 学长学姐给的建议都是不要通过朋友圈去过度关注别人的光鲜生活,也不必一定要向外展示自己的现状,喜怒哀乐自我消化,保持思想…

浅析linux中的信号

人们往往将信号称为“软件中断”,它提供了异步事件的处理机制,这些事件可以来自系统外部(如用户按下ctrlc产生中断符),也可能来自程序或者内核内部的执行动作(如进程除零操作)。进程收到信号&am…

视频图片提取秘籍:从指定时长中提取想要的视频封面

在如今的内容丰富的互联网世界中,视频已经成为大家获取信息、娱乐和交流的重要方式之一。而视频的封面或图片,作为视频内容的“名片”,往往决定了观众是否愿意点击和进一步了解视频内容。视频图片提取,通常也被称为视频封面提取&a…

Flink-简介与基础

Flink-简介与基础 一、Flink起源二、Flink数据处理模式1.批处理2.流处理3.Flink流批一体处理 三、Flink架构1.Flink集群2.Flink Program3.JobManager4.TaskManager 四、Flink应用程序五、Flink高级特性1.时间流(Time)和窗口(Window&#xff0…

【docker】docker安装与优化

目录 一、安装Docker 1、关闭防火墙 2、安装依赖包 3、设置阿里云镜像源 4、安装Docker-CE社区版并设置为开机自启动 5、查看Docker信息 二、设置镜像加速 1、申请加速地址 2、实现加速操作 三、网络优化 1、如何网络优化 2、具体操作 四、docker-server端配置文件…

无人机巡检如何做到实时识别,从数据到模型全流程解读

在数字化和自动化飞速发展的今天,AI识别算法正在加速进入行业生产系统。 基于巡检数据的智能开发,识别算法突破性进展的核心驱动力在于需求——从全天候巡视的平安城市,到潮汐变化的交通网络,从广阔的水域,到繁忙的街道…

通过视频文件地址截取图像生成图片保存为封面图

安装 RPM Fusion 软件库 FFmpeg并不包含在 CentOS 官方软件库中,需要使用第三方软件库安装。可以使用 RPM Fusion 软件库来获取 FFmpeg。 首先,使用以下命令安装 RPM Fusion 软件库: sudo yum install epel-release -y sudo rpm -Uvh https://download1.rpmfusion.org/fre…