autosar 诊断入门

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分层和模块化设计的优势。

这里的NM主要是针对Can协议的网路管理。 AUTOSAR CanNM的核心思想主要归纳为以下两条: 1.  如果节点需要保持通信,则节点需要周期的发送NMPDUs,否则停止发送NMPDUs 2.     如果总线上的所有节点不需要使用总线,那么总线上过了一段时间没有NMPDUs时,则会进入Bus-Sleep Mode。   工作模式和状态   CanNm一共有三个工作模式 1.  Network Mode 2.  PrepareBus-Sleep Mode 3.  Bus-Sleep Mode 模式的改变应该通过回调函数通知上层。 下面单独说每种模式   (1)Network Mode Network Mode又包括三个内部状态 1. Repeat Message State 2. Normal Operation State 3. Ready Sleep State ①Repeat Message State 这个模式被用来确保从Bus-Sleep or Prepare Bus-Sleep到Network Mode的节点被总线上面其他节点发现。这个状态可以用来检测总线上的节点。 当进入Repeat Message State时,节点应该开始传送NMPDUs。 在Repeat Message State时,当NM-Timeout Timer溢出,CanNm模块应该重载Timer。 CanNm模块应该在Repeat Message State 下保持一段时间,这段时间可以通过CANNM_REPEAT_MESSAGE_TIME来进行配置。 当离开Repeat Message State的时候,如果节点需要通信,则进入Normal Operation State;如果节点不需要通信,则进入Ready Sleep State。并且清空Repeat Message Bit。   ②Normal Operation State 这个状态可以保持总线处于唤醒状态。从Ready sleep state进入这个状态的时候应该发送NMPDUs。 在Normal Operation State当NM-Timeout Timer溢出,CanNm模块应该重载Timer。 如果节点不需要使用通信,则网络应该被释放,节点应该进入Ready Sleep State。 如果节点接收到Repeat Message Request Bit,则节点进入Repeat Message State。如果节点自身需要进入Repeat Message State,则该节点进入Repeat Message State并且设置Repeat Message Request Bit。   ③ReadySleep State 这个状态是为了如果本节点已经准备释放总线,而其他节点还需要使用总线的时候,在这个状态下等待其他总线上的节点进入Perpere Bus-Sleep Mode。进入这个状态之后,CanNm模块应该停止NMPDUs的传送。 如果NM-Timeout Timer溢出,节点将会进入Prepare Bus-Sleep Mode。 如果该节点需要使用总线,则节点进入Nomal Operation State。 如果节点接收到Repeat Message Request Bit,则节点进入Repeat Message State。如果节点自身需要进入Repeat Message State,则该节点进入Repeat Message State并且设置Repeat Message Request Bit。 (2)PrepareBus-Sleep Mode   这个状态是为了等待总线上的所有节点能够在进入Bus-Sleep Mode之前,有时间停止节点的active状态如清空队列中为发送的报文。在Prepare Bus –Sleep Mode下,所有节点都静默下来。 当节点进入PrepareBus Mode时,应该通知上层应用。通过配置CANNM_WAIT_BUS_SLEEP_TIME参数,可以改变节点在PrepareBus-Sleep Mode停留的时间,在这段时间之后节点将会进入其他状态。 在Prepare Bus-Sleep Mode下面接收到NMPDU或者被上层应用请求通信时,节点将进入Network Mode中的Normal operation State。   (3)Bus-SleepMode   Bus-Sleep Mode的目的是当没有消息被传送的时候可以减少能量的消耗。在Bus-Sleep Mode下面,节点可以被唤醒(如本地唤醒源和CAN线唤醒源)。CANNM_TIMEOUT_TIME+CANNM_WAIT_BUS_SLEEP_TIME两个参数在整个总线上面的节点都应该时一样的配置,保证了总线上的节点能够统一的进行休眠。 当进入Bus-Sleep Mode时候,应该通知上层应用。 在Bus-Sleep Mode下,如果成功接收到NMPDU,CAN NM模块应该调用Nm_NetworkStartIndication。 如果CanNm_PassiveStartUp被调用,则CAN NM模块进入Network Mode 中的Repeat Message State。 ———————————————— 版权声明:本文为CSDN博主「cococenstar」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/cococenstar/article/details/84096689
AutoSAR汽车行业中广泛使用的标准化软件架构,它提供了一组标准化的接口和协议,使不同的汽车电子设备能够相互协作,并且可以方便地集成到汽车系统中。下面是AutoSAR入门到精通的学习路径: 1. 了解AutoSAR基础知识:需要理解AutoSAR的定义、历史和目的,以及它如何满足汽车行业的需求。 2. 掌握AutoSAR的架构:需要学习AutoSAR的软件架构,包括应用层、运行时环境、基础软件(BSW)和硬件抽象层(HAL)等模块。 3. 学习AutoSAR的应用:需要学习如何使用AutoSAR来开发汽车电子系统的应用程序,包括应用程序编写、配置、测试和集成等方面。 4. 掌握AutoSAR的基础软件(BSW):需要学习AutoSAR的基础软件模块,包括通信协议栈、诊断模块、内存管理和任务管理等。 5. 学习AutoSAR的硬件抽象层(HAL):需要学习AutoSAR的硬件抽象层模块,包括处理器、外设和中断处理等方面。 6. 掌握AutoSAR的配置工具:需要学习AutoSAR的配置工具,包括EB Tresos Studio、Vector DaVinci等工具的使用方法。 7. 深入研究AutoSAR的应用场景:需要学习AutoSAR的不同应用场景,包括汽车网关、车载娱乐、车身电子控制等方面。 8. 掌握AutoSAR的调试和优化技巧:需要学习AutoSAR的调试和优化方法,包括调试工具和技巧、性能优化等方面。 9. 实践AutoSAR项目:需要参与AutoSAR项目的开发和实施,以实践所学知识,并积累实践经验。 总之,要深入学习AutoSAR需要系统性地学习其基础知识、架构、应用、基础软件、硬件抽象层、配置工具、应用场景、调试和优化技巧,并进行实践。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小昭dedug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值