当前位置: 首页 > backend >正文

AUTOSAR进阶图解==>AUTOSAR_SWS_DiagnosticLogAndTrace

AUTOSAR Diagnostic Log and Trace 模块说明

本文档是对AUTOSAR SWS Diagnostic Log and Trace的增强版本,加入了相关架构图解和详细的组件说明。

1. 简介和功能概述

Diagnostic Log and Trace (DLT) 是AUTOSAR基础软件模块之一,用于诊断、日志记录和跟踪。DLT模块位于PduR之上和RTE之下,接收来自DET、DEM、软件组件的日志信息或RTE的跟踪信息。

DLT模块通过通信总线传输这些数据,使这些信息在ECU外部可见。此外,NvM模块可以选择性地用于持久存储DLT模块的更新过滤器设置,从而使ECU能够以所需级别传输日志/跟踪信息,而无需来自通信总线(通过记录工具)的显式设置请求。

在这里插入图片描述

1.1 DLT架构图详细说明

上图展示了DLT模块在AUTOSAR架构中的位置和与其他模块的关系。DLT模块作为服务层的一部分,与多个模块进行交互:

  1. 应用层交互

    • 软件组件(SWC)通过RTE向DLT模块发送日志和跟踪消息
    • RTE/VFB负责将这些消息转发给DLT模块处理
  2. 服务层交互

    • DLT与DET(Default Error Tracer)交互,接收错误消息
    • DLT与DEM(Diagnostic Event Manager)交互,接收诊断事件
    • DLT与NvM(NVRAM Manager)交互,用于存储和加载配置信息
    • DLT与GPT(General Purpose Timer)交互,用于获取时间戳
    • DLT与StbM(Synchronized Time Base)交互,获取同步时间
  3. 通信层交互

    • DLT通过PDU Router发送和接收消息
    • 通过通信堆栈将消息传输到外部客户端(日志工具)

DLT模块提供了记录和跟踪功能,使开发人员能够监控ECU内部的运行状态,对问题进行诊断和调试。

2. DLT模块内部结构

DLT模块内部由多个子组件组成,它们协同工作以处理日志和跟踪消息。

在这里插入图片描述

2.1 DLT内部结构详细说明

DLT内部结构图展示了模块的核心组件及其交互方式:

  1. DLT核心管理器

    • 初始化管理:负责模块的初始化流程
    • 消息处理器:处理接收到的日志和跟踪消息
    • 配置管理:管理模块的配置参数和设置
  2. 日志和跟踪处理

    • 日志消息处理器:处理来自软件组件和基础软件的日志消息
    • 跟踪消息处理器:处理RTE/VFB的跟踪消息
    • 消息过滤:根据配置的规则过滤消息
  3. 通信接口

    • 接收处理:处理来自PDU Router的接收数据
    • 发送处理:将日志/跟踪消息发送到PDU Router
    • 消息缓冲区:临时存储待发送的消息
  4. 会话管理

    • 应用程序ID管理:管理软件组件的应用ID
    • 上下文ID管理:管理日志/跟踪消息的上下文ID
    • 会话处理:处理多个会话实例
  5. 时间戳管理:负责为消息添加时间戳

  6. 存储管理:管理配置的持久化存储

DLT模块的内部组件通过明确定义的接口进行交互,确保消息处理的流畅性和可靠性。配置管理负责处理日志级别、跟踪状态等设置,而过滤机制确保只有符合条件的消息才会被处理和传输。

3. DLT消息结构

DLT消息有统一的结构,包含标准头部、可选的扩展头部和有效载荷。

在这里插入图片描述

3.1 DLT消息结构详细说明

DLT消息结构图展示了消息的组成和相关数据类型:

  1. DLT消息数据类型

    • Dlt_MessageType: 定义消息类型(日志、应用跟踪、网络跟踪、控制)
    • Dlt_MessageLogLevelType: 定义日志级别(OFF、FATAL、ERROR、WARN、INFO、DEBUG、VERBOSE)
    • Dlt_MessageNetworkTraceInfoType: 定义网络跟踪类型(IPC、CAN、FLEXRAY、MOST、ETHERNET、SOMEIP)
    • Dlt_MessageIDType: 消息唯一标识符
  2. DLT消息信息结构

    • Dlt_MessageOptionsType: 消息选项(如verbose模式、消息类型)
    • Dlt_MessageLogInfoType: 日志消息相关信息(参数计数、选项、日志级别、消息ID)
    • Dlt_MessageTraceInfoType: 跟踪消息相关信息(参数计数、选项、跟踪状态、网络跟踪类型)
  3. DLT消息标识结构

    • Dlt_ApplicationIDType: 应用ID,由四个8位ASCII字符组成
    • Dlt_ContextIDType: 上下文ID,由四个8位ASCII字符组成
    • Dlt_SessionIDType: 会话ID,用于区分同一软件组件的不同实例
    • Dlt_ContextIdInfoType: 上下文ID相关信息(上下文ID、日志级别、跟踪状态、描述)
    • Dlt_ApplicationIdInfoType: 应用ID相关信息(应用ID、上下文ID计数、上下文信息列表、描述)
  4. DLT消息结构

    • Dlt_HeaderType: 标准头部,包含头部类型、是否使用扩展头部、ECU ID、会话ID、时间戳等
    • Dlt_ExtendedHeaderType: 扩展头部,包含消息类型、verbose标志、应用ID、上下文ID
    • Dlt_MessagePayloadType: 消息负载,包含实际的数据内容
    • Dlt_MessageType: 完整的DLT消息,包含标准头部、扩展头部和负载

DLT消息通过应用ID和上下文ID唯一标识其来源,允许针对特定消息源的过滤。消息级别定义了消息的严重程度,而消息类型区分了不同类型的信息(如日志、跟踪)。

4. DLT消息流程

DLT消息的处理涉及多个步骤和组件之间的交互。

在这里插入图片描述

4.1 DLT消息流程详细说明

DLT消息流程图展示了消息从软件组件到外部客户端的完整处理流程:

  1. 初始化阶段

    • RTE调用Dlt_Init()初始化DLT模块
    • DLT模块初始化过滤器和缓冲区
    • 外部客户端(日志工具)可以发送控制消息获取日志信息
    • DLT模块处理控制命令并返回响应
  2. 日志消息流程

    • 软件组件通过RTE发送日志消息
    • RTE调用Dlt_SendLogMessage()传递消息到DLT模块
    • DLT模块根据过滤规则检查消息
    • 消息通过过滤后,DLT模块构建DLT消息并存储在缓冲区中
    • 消息未通过过滤时,直接返回过滤状态
  3. 跟踪消息流程

    • 软件组件通过RTE发送跟踪消息
    • RTE调用Dlt_SendTraceMessage()传递消息到DLT模块
    • DLT模块检查跟踪状态是否激活
    • 跟踪激活时,DLT模块构建DLT消息并存储在缓冲区
    • 跟踪未激活时,消息被过滤掉
  4. 消息传输流程

    • PDU Router调用Dlt_TriggerTransmit()触发消息传输
    • DLT模块从缓冲区获取待发送消息
    • DLT模块将消息数据提供给PDU Router
    • PDU Router通过通信栈发送数据到外部客户端
  5. 控制命令处理

    • 外部客户端发送控制命令(如设置日志级别)
    • 命令通过通信栈和PDU Router转发到DLT模块
    • DLT模块通过Dlt_RxIndication()接收并处理命令
    • DLT模块更新相关设置(如过滤规则)
    • DLT模块通知RTE相关变更,RTE再通知相关软件组件

通过这一流程,DLT模块实现了软件组件与外部诊断工具之间的有效通信,使开发人员能够监控、调试和分析ECU内部的运行状态。

5. DLT配置结构

DLT模块的配置决定了其行为和功能,采用容器和参数的层次结构。

在这里插入图片描述

5.1 DLT配置结构详细说明

DLT配置结构图展示了模块配置的层次结构和相关参数:

  1. Dlt:顶级配置容器

    • DltConfigSet:包含应用程序、上下文和日志通道配置
    • DltGeneral:全局设置
  2. DltGeneral:全局DLT配置

    • DltGeneralDevErrorDetect:是否使用默认错误跟踪器
    • DltGeneralInjectionSupport:是否启用注入功能
    • DltGeneralRxDataPathControl:是否启用接收数据路径控制
    • DltGeneralRegisterContextNotification:是否启用上下文注册通知
    • DltGeneralHeaderType:头部类型设置
    • DltGeneralVersionInfoApi:版本信息API支持
    • DltGeneralBufferSize:缓冲区大小
    • DltGeneralMaxLogChannels:最大日志通道数
    • DltGeneralUseLocalTimestamps:是否使用本地时间戳
    • DltGeneralUseExtendedHeaderFeatures:是否使用扩展头部特性
  3. DltConfigSet:配置集合

    • DltLogChannel:日志通道配置
    • DltApplication:应用程序配置
    • DltSwc:软件组件配置
  4. DltLogChannel:日志通道配置

    • DltLogChannelName:通道名称
    • DltLogChannelId:通道ID
    • DltLogChannelThreshold:通道阈值
    • DltLogChannelEnabled:通道状态
  5. DltApplication:应用程序配置

    • DltApplicationId:应用ID
    • DltApplicationDescription:应用描述
    • DltContext:上下文配置列表
  6. DltContext:上下文配置

    • DltContextId:上下文ID
    • DltContextDescription:上下文描述
    • DltContextLogLevel:上下文日志级别
    • DltContextTraceStatus:上下文跟踪状态
  7. DltSwc:软件组件配置

    • DltSwcName:组件名称
    • DltSwcEcuInstance:ECU实例
    • DltSwcComMChannel:通信通道
    • DltSwcNotificationApi:通知API支持
    • DltSwcDefaultLogLevel:默认日志级别
    • DltSwcDefaultTraceStatus:默认跟踪状态
    • DltSwcProcessId:进程ID
    • DltContextMapping:上下文映射
  8. DltContextMapping:上下文映射配置

    • DltContextMappingAppId:映射的应用ID
    • DltContextMappingContextId:映射的上下文ID

通过这些配置参数,可以精细控制DLT模块的行为,包括日志级别、跟踪状态、缓冲区大小、以及软件组件与日志/跟踪功能的关联。

6. DLT与其他模块的交互

DLT模块与多个AUTOSAR模块进行交互,实现其功能:

  1. RTE/VFB

    • 用于与软件组件交互,接收日志和跟踪消息
    • VFB跟踪当前仅支持非verbose模式
  2. PDU Router

    • 用于在通信总线上传输DLT消息
    • 处理接收到的控制消息
  3. NvM

    • 可选使用,用于加载和存储修改的配置
    • 如过滤器设置和日志通道分配
  4. GPT

    • 用于获取时间戳
    • 为日志和跟踪消息添加时间信息
  5. StbM

    • 用于获取同步时间值(从全局时间基准导出的本地时间基准)
    • 支持标准/扩展格式
  6. DET

    • 可选交互,用于报告默认错误
    • 将DET错误转发到通信总线
  7. DEM

    • 通过CDD和/或软件组件与DEM交互
    • 用于报告开发错误并在通信总线上传输DEM事件
    • 注意:DEM和DLT之间没有标准化的交互

7. 术语和定义

DLT模块使用的关键术语:

  • 日志和跟踪消息:包含描述软件中日志和跟踪事件的所有数据和选项,由头部和负载组成
  • 应用ID (APID):标识应用程序/软件组件的四个8位ASCII字符
  • 上下文ID (CTID):用于分组来自应用程序/软件组件的日志和跟踪消息的四个8位ASCII字符
  • 会话ID:日志或跟踪会话的标识号
  • 会话:日志或跟踪消息源的逻辑实体
  • 日志消息:包含调试信息,如状态变化或值变化
  • 跟踪消息:包含通过VFB传递的信息
  • 消息ID:用于标识消息源和特征化消息负载的标识符
  • 日志级别:定义日志消息严重性级别的分类
  • 跟踪状态:提供跟踪消息是否应该发送的信息
  • 日志通道:用于传输DLT消息的物理通信总线
  • 外部客户端:用于控制、监控和存储ECU使用DLT模块提供的日志/跟踪消息的工具

8. 总结

AUTOSAR Diagnostic Log and Trace模块是一个强大的工具,用于监控、诊断和调试AUTOSAR系统。通过提供统一的接口和协议,它使开发人员能够获取关于软件组件和基础软件模块内部状态的详细信息。

DLT模块支持灵活的配置,允许根据需要过滤和格式化消息,并提供与外部诊断工具的标准化通信。其架构确保了消息处理的效率和可靠性,同时最小化对系统性能的影响。

传输DLT消息的物理通信总线

  • 外部客户端:用于控制、监控和存储ECU使用DLT模块提供的日志/跟踪消息的工具

8. 总结

AUTOSAR Diagnostic Log and Trace模块是一个强大的工具,用于监控、诊断和调试AUTOSAR系统。通过提供统一的接口和协议,它使开发人员能够获取关于软件组件和基础软件模块内部状态的详细信息。

DLT模块支持灵活的配置,允许根据需要过滤和格式化消息,并提供与外部诊断工具的标准化通信。其架构确保了消息处理的效率和可靠性,同时最小化对系统性能的影响。

在开发和调试AUTOSAR系统时,DLT模块是不可或缺的组件,使系统行为的可见性和可调试性大大提高。

http://www.xdnf.cn/news/15759.html

相关文章:

  • Redisson RLocalCachedMap 核心参详解
  • kotlin部分常用特性总结
  • Ultralytics代码详细解析(三:engine->trainer.py主框架)
  • LVS——nat模式
  • 电机相关常见名词
  • 如何解决Flink CDC同步时间类型字段8小时时间差的问题,以MySQL为例
  • Redis Sentinel哨兵集群
  • Spring之【AnnotatedBeanDefinitionReader】
  • 针对大规模语言模型的上下文工程技术调研与总结(翻译并摘要)
  • 【C++】入门阶段
  • 基于开放API接口采集的定制开发开源AI智能名片S2B2C商城小程序数据整合与增长策略研究
  • 本地部署开源的 AI 驱动的搜索引擎 Perplexica 并实现外部访问
  • Spring Bean 的作用域(Bean Scope)
  • SpringAI_Chat模型_DeepSeek模型--基础对话
  • 扭蛋机系统开发:打造多元化娱乐生态的新引擎
  • Libevent(3)之使用教程(2)创建事件
  • Spring MVC @RequestParam注解全解析
  • 【Linux】重生之从零开始学习运维之Nginx之server小实践
  • 最新版vscode 连接ubuntu 18.04 保姆级教程
  • 编程实现Word自动排版:从理论到实践的全面指南
  • SurfaceView、TextureView、SurfaceTexture 和 GLSurfaceView
  • 【Android】ListView与RecyclerView的基础使用
  • 【unity游戏开发入门到精通——3D篇】3D光源之——unity使用Lens Flare (SRP) 组件实现太阳耀斑镜头光晕效果
  • C++实现单层时间轮
  • 4644电源管理芯片在微波射频组件中的技术优势与国产化实践
  • Linux驱动学习day24(UART子系统)
  • Ubuntu系统下快速体验iperf3工具(网络性能测试)
  • 嵌入式Linux:什么是线程?
  • 【RK3576】【Android14】开发环境搭建
  • Thread,ThreadLocal,ThreadLocalMap 三者的关系, 以及在实际开发中的应用【AI记录用】