autosar 诊断入门

2023-09-17 10:56:50

AUTOSAR (汽车开放系统架构) 是一个国际汽车行业的开放和标准化的软件架构。它的主要目标是为了创建一种独立于硬件的软件架构,以提高汽车电子系统的模块化和可重用性。
AUTOSAR架构主要分为两个部分:AUTOSAR Runtime Environment (RTE) 和 AUTOSAR Software Components (SWCs)。

  1. AUTOSAR Runtime Environment (RTE)
    RTE是软件组件之间的通信媒介,它提供接口以实现组件间的数据交换。RTE的主要任务包括通信,输入/输出硬件抽象,时间和数据同步等。
  2. AUTOSAR Software Components (SWCs)
    SWCs是具有明确功能的一种软件模块,例如发动机管理或刹车控制。它们包含一种或多种Runnable Entities (Runnables),这些Runnables是实现SWC功能的代码块。SWCs可以通过RTE进行通信。

AUTOSAR架构还包括以下层级:

  1. 应用层
    应用层包含了所有的AUTOSAR SWC,这些SW辆功能,如刹车管理,动力系统控制等。
  2. 运行时环境层
    这就是RTE,它允许SWC之间的通信并提供硬件抽象。
  3. 基础软件层
    基础软件层包含一系列的模块,负责提供各种服务,如操作系统,通信服务,网络管理,输入/输出硬件控制等。
  4. 微控制器抽象层
    这一层为微控制器硬件提供抽象,使得上层软件可以独立于硬件进行设计和开发。
  5. 硬件层
    硬件层是实际的物理硬件,例如微控制器,传感器,执行器等。
    AUTOSAR的这种分层架构可以提高软件的模块化和可重用性,使得汽车制造商和供应商可以更容易地设计和开发复杂的汽车电子系统。

以ECU例子,通俗理解
假设我们正在使用一个单片机(例如STM32)来控制汽车的灯光系统,需要控制头灯、尾灯和转向灯。在AUTOSAR架构中,我们可以将每一个灯光看作是一个单独的软件组件(Software Component,SWC)。例如,“头灯控制SWC”,和“转向灯控制SWC”。

应用层:这一层包含所有的软件组件,也就是我们的头灯、尾灯和转向灯的控制代码。

运行时环境层(RTE): 这一层是所有软件组件之间通信的桥梁。例如,当驾驶员打开头灯的开关,"开关控制SW RTE 告诉 "头灯控制SW。

基础软件层:这一层包含了一些基本的软件服务,例如操作系统、驱动程序等。在我们的例子中,单片机的GPIO引脚驱动、PWM驱动等就属于这一层。

微控制器抽象层:这一层对硬件进行了抽象,使得上层软件可以不用关心具体的硬件细节。例如,这一层可以将单片机的某个GPIO引脚抽象为"头灯控制引脚"。

硬件层:这一层就是实际的硬件,也就是我们的单片机和灯光硬件。

这样,当驾驶员打开头灯的开关时,“开关控制SWC” 会通过 RTE 发送消息给 “头灯控制SW灯控制SWC” 会调用基础软件层的 GPIO 驱动程序,通过微控制器抽象层控制硬件层的 GPIO 引脚,从而点亮头灯。
诊断部分
在AUTOSAR架构中,诊断主要包括两个重要模块:Diagnostic Communication Manager (Dcm) 和 Diagnostic Event Manager (Dem)。这两个模块都属于基础软件层(BSW Layer)的服务层(Service Layer)。
以下是每一层的详细实现和层与层之间的联系:
应用层(Application Layer)
应用层并不直接实现诊断功能,但它会生成一些可能需要诊断的事件或故障,比如一个传感器的读数超过了正常范围。这些事件或故障会被送入Diagnostic Event Manager (Dem)进行管理。
运行时环境层(RTE)
RTE负责应用层和基础软件层之间的通信。在诊断的上下文中,RTE提供了APIs,允许应用层调用Diagnostic Event Manager (Dem)的服务,比如报告一个新的故障。
基础软件层(BSW Layer)
在基础软件层的服务层中,Diagnostic Event Manager (Dem) 和 Diagnostic Communication Manager (Dcm) 是实现诊断功能的关键。

  • Diagnostic Event Manager (Dem): Dem负责管理和存储所有的故障码(Diagnostic Trouble Codes,DTC)。当应用层或其他BSW模块报告一个新的故障时,Dem会存储这个故障码,以便后续的诊断。Dem还管理故障码的状态,比如故障是否已经恢复,故障是否需要立即通知驾驶员等。
  • Diagnostic Communication Manager (Dcm): Dcm负责处理来自外部诊断设备的诊断请求,比如读取故障码、清除故障码、读取数据流等。Dcm会通过RTE调用Dem或其他BSW模块提供的服务,以完成这些诊断请求。然后,Dcm会将诊断结果发送回外部诊断设备。
    Dcm和Dem模块通常通过RTE进行通信,但也可以直接进行通信。Dcm和Dem的配置(比如支持的诊断服务、故障码的定义等)通常是通过XML文件进行的。
    通过以上的分层和模块化设计,AUTOSAR的诊断功能可以实现很高的灵活性和可配置性,满足了不同车辆和不同诊断需求的要求。

诊断DTC实现
在AUTOSAR中,故障码(Diagnostic Trouble Code,或DTC)的触发和读取过程如下:

故障码的触发

在应用层,某个模块(例如,一个引擎管理模块)可能会检测到某种故障情况,比如一个传感器的读数超过了正常范围。

当故障发生时,应用层模块通过RTE调用Diagnostic Event Manager(Dem)的API来报告故障。具体的API可能是Dem_ReportErrorStatus。

Dem模块接收到故障报告后,首先会检查该故障是否已经存在。如果这是一个新的故障,Dem会创建一个新的DTC,并将其状态设置为“已报告”。如果该故障已经存在,Dem可能会更新其状态或计数器。

Dem将新的DTC存储在非易失性内存中,以便在车辆重新启动后仍然可用。

故障码的读取

外部诊断设备(例如,一个诊断工具或诊断测试设备)通过Vehicle Diagnostic Connector发送一个读取DTC的诊断请求。

该请求通过车辆的网络(例如,CAN或Ethernet)传输到目标ECU。

在目标ECU中,Diagnostic Communication Manager(Dcm)接收到诊断请求,解析出请求的服务ID(在这个例子中,是读取DTC的服务ID)。

Dcm通过RTE调用Dem的API(例如,Dem_GetDTCOfEvent)来获取请求的DTC。

Dem返回请求的DTC,包括DTC的ID、状态、严重性等信息。

Dcm将DTC的信息封装成诊断响应消息,并通过网络发送回外部诊断设备。

通过以上的流程,AUTOSAR实现了故障码的触发和读取。这个流程涉及到了应用层、RTE和BSW层的多个模块,显示了AUTOSAR分层和模块化设计的优势。

更多推荐

SSRF漏洞(利用file协议读取本地文件)

简介当利用SSRF漏洞时,攻击者可以通过构造恶意请求来读取本地文件。其中一种方法是使用file协议来读取本地文件。例如,file:///etc/passwd是一个常见的示例,它用于读取Linux系统上的passwd文件。passwd文件是Linux系统中用于存储用户账户信息的文件,其中包含了所有用户的用户名、密码和相关

系统架构设计师-数据库系统(3)

目录一、数据控制1、安全性2、完整性3、并发控制4、故障恢复二、数据库设计概述1、数据库设计关注的问题2、数据库性能优化3、规范化与反规范化一、数据控制1、安全性2、完整性(1)实体完整性约束:规定基本关系的主属性不能取空值。(2)参照完整性约束:关系与关系间的引用,其他关系的主键或空值。(3)用户自定义完整性约束:应

知识图谱:知识表示发展史

​数据是众多行业最核心的资产,人工智能技术与数据的深度融合也成为各大行业机构的重点关注内容,在多种人工智能的技术中,知识图谱因其能够更好的表达业务场景的多样全貌,可以更好的服务于人工智能时代的分析与决策场景,成为近年来的技术创新热点之一。知识的概念知识表示就是对知识的一种描述,或者说是对知识的一组约定,一种计算机可以接

论文阅读《ICDE2023:Relational Message Passing for Fully Inductive Knowledge Graph Completion》

论文链接工作简介在知识图谱补全(KGC)中,预测涉及新兴实体和/或关系的三元组,这是在学习KG嵌入时看不到的,已成为一个关键挑战。带有消息传递的子图推理是一个很有前途和流行的解决方案。最近的一些方法已经取得了很好的性能,但它们(1)通常只能预测单独涉及未见过的实体的三元组,无法解决更现实的同时具有未见过的实体和未见过的

【JavaEE】多线程(四)

多线程(四)在开始讲之前,我们先来回顾回顾前三篇所讲过的内容~线程的概念并发编程,多进程,比较重,频繁创建销毁,开销大Thread的使用创建线程继承Thread实现Runnable继承Thread(匿名内部类)实现Runnable(匿名内部类)使用lambda'Thread中的重要性启动线程start终止线程isInt

RocketMQ 核心编程模型以及生产环境最佳实践

文章目录1、RocketMQ的消息模型2、深入理解RocketMQ的消息模型2.1、RocketMQ客户端基本流程2.2、消息确认机制2.2.1、发送消息的方式第一种称为单向发送第二种称为同步发送第三种称为异步发送2.2.2、状态确认机制2.2.3、消费者也可以自行指定起始消费位点2.3、广播消息2.4、顺序消息机制1

GPT会统治人类吗

一前言花了大概两天时间看完《这就是ChatGPT》,触动还是挺大的,让我静下来,认真地想一想,是否真正理解了ChatGPT,又能给我们以什么样的启发。二思考在工作和生活中,使用ChatGPT或文心一言,逐渐形成了习惯,总想听听它们的意见。无论是小学作文还是小的编程测试例子,大部分情况下还是能够给我一个比较靠谱的意见,而

SpringBoot【SpringBoot介绍、SpringBoot入门、SpringBoot原理分析、SpringBoot原理分析】(一)-全面详解(学习总结---从入门到深化)

目录SpringBoot介绍_Spring缺点分析SpringBoot介绍_什么是SpringBootSpringBoot介绍_SpringBoot核心功能SpringBoot入门_通过官网搭建项目SpringBoot入门_通过IDEA脚手架搭建项目SpringBoot入门_SpringBoot项目结构SpringBo

超硬核的Move Dev Meetup上海线下交流会圆满结束

北京时间9月16日下午2–6点,由MoveFunsDAO联合其他组织举办的Move开发者线下交流会在上海悦达国际大厦圆满完成。此次活动也是上海区块链周的周边活动,受到了Web3从业者的广泛关注。本场交流会邀请了OpenBuild技术社区主理人Ian主持,50余位参会者来到现场参与此次交流。以下是嘉宾分享:Jolesta

基础算法--双指针算法

双指针算法1.基本介绍严格的来说,双指针只能说是是算法中的一种技巧。双指针指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针)的指针进行扫描,从而达到相应的目的。最常见的双指针算法有两种:一种是,在一个序列里边,用两个指针维护一段区间;另一种是,在两个序列里

药品咨询报告合集整理平台打包(一共36597份)【专题推荐】

<医药行业从业者必看>笔者今天分享高价值医药行业报告36500余份的获取/下载方法,报告涵盖了医药细分领域研究报告+药品报告(所有上市药品)+医药行业分析报告+医药环境观察报告+药品市场调研报告+药品靶点研究报告+医药白皮书;数据来源于药融云自产报告&药品报告自动生成系统(最新日期)。①报告下载途径药品报告:药融云医药

热文推荐