徽州骆驼 · 2022年01月21日

AUTOSAR DLT 模块介绍

cb4d80696d20e22ffc501f95930c5fe5.png

一、简介

AUTOSAR Dlt (Diagnostic Log and Trace)  模块主要用来接收来自DET、DEM、SW-Cs的日志信息(log information)或者来自RTE的跟踪信息(trace information)。Dlt模块通过通信总线传输这些数据,使这些日志和trace信息在ECU外部可见。

为此,Dlt模块会定义了用于在如何在通信总线上发送和接收这些专用的日志/跟踪信息的API。

此外也可以通过NvM模块来永久保存Dlt模块的更新过滤器设置。这使得ECU能够以期望的级别传输日志/跟踪信息,而不需要在每次ECU启动时从通信总线(通过日志工具)发出明确的设置请求。

Dlt模块位于PduR模块和RTE模块之间。

be30a264a32012ca4fe3637d82a5274a.jpg

请注意:

Dlt消息格式、可用的Dlt命令和Dlt协议(用于与外部日志和跟踪工具通信)会定义在另一个单独的文档中[1]。更多信息请参考Dlt协议规范

术语和定义

image.png

二、使用场景

下面内容会对ECU如何使用Dlt的场景进行分类的描述

虽然Dlt协议与总线无关,但建议使用通信具有更高带宽的总线,如以太网。尽管如此,Dlt的协议并不局限于以太网的使用。

使用Dlt进行常规日志记录(General logging with Dlt)

415cced560752c5a3e70e9c67402859a.jpg

  1. 应用程序 / SW-C生成一条日志消息。
  2. Log Message发送给Dlt模块。
  3. Dlt模块将日志消息发送到通信总线
  4. 外部Dlt客户端记录日志消息

VFB的跟踪(Tracing of VFB)

b8aaa42cb128114a6cd68dfe541b15fb.jpg

  1. RTE调用Dlt提供的宏,Dlt调用Dlt API接口生成跟踪的消息。
  2. Dlt模块将生成的跟踪消息发送到实现了Dlt通信模块接口。
  3. Dlt通信模块将跟踪消息转发到网络。
  4. 外部客户端接收并存储跟踪消息。
  
 **运行时配置Dlt(Runtime configuration of Dlt)**


6a2b2133fdff9cb0fb83b440977fe148.jpg

  1. 外部Dlt客户端设置日志和跟踪级别,并将更改发送给Dlt模块。
  2. Dlt模块相应地调整其过滤器设置的配置。
  3. Dlt模块通知应用程序新的日志级别。

非冗长模式(Non-verbose mode)

可以通过不发送通信总线上的变量的元数据减少总线上的流量。此时可以使用外部FIBEX文件保存如何解析有效负载(payload)内容的信息。外部Dlt客户端将这些FIBEX文件中定义的元数据与接收到的数据合并并保存。

0b128f4b07f3456031702d2c51d184f2.jpg

  1. 调用Dlt模块以非冗长模式进行传输Dlt消息。
  2. Dlt模块过滤并生成Dlt消息。
  3. Dlt模块将Dlt消息发送到通信总线。
  4. 外部Dlt客户端从外部FIBEX文件中获取元信息。
  5. 合并后的信息由外部Dlt客户端存储。


三、协议规范(Protocol specification)

消息格式

对于调试数据和控制信息,只需使用相同的Dlt消息格式。它由一个标准报头、一个可选的扩展报头和一个有效复杂段组成。

775fbd3d2308961bd9c6632acab6441d.png

标准报头(Standard Header)

82f74f7a4971b4dbccc94288e904cd2d.jpg

Dlt标准报头应由以下字段组成,顺序如下:

image.png

扩展报头(Extended Header)

022dddd35bbd8e32916dc15fdfb84c74.jpg

如果标准报头的UEH位设置为' 1 ',则传输在Dlt扩展报头格式中定义的附加信息。Dlt扩展报头直接附加在Dlt标准报头字段之后。

Dlt扩展报头格式应由以下字段按以下顺序组成:

image.png

正文格式(Body/Payload format)

Dlt正文数据紧跟着Dlt头或者Dlt扩展头(如果使用的话)。Dlt正文数据包含被Log或Trace的参数,或者包含控制信息。

四、依赖的模块

RTE

RTE(包括VFB和BSW调度器),主要用于与SW-Cs交互,生成日志和跟踪消息,并循环调用Dlt模块的Tx函数。

PDU Router

为了在通信总线上传输Dlt消息,Dlt模块会与PDU Router进行交互。

NvM

为了加载和存储相关的配置,如过滤器设置和日志通道分配。NvM模块并不是必须,可以选用。

GPT

为了获得一个时间戳,GPT模块可以用于此目的。

StbM

为了以标准/扩展格式获取同步时间值。本地时间基数(Local Time Base)派生于全局时间基数(Global Time Base),StbM模块可用于此目的。

DET

为了能够报告默认错误并将DET错误转发给通信总线,Dlt模块必须与DET模块进行交互。然而,与DET的交互并不是必须,可以选用。

DEM

为了能够报告开发错误并在通信总线上传输DEM事件,Dlt模块必须与DEM模块进行交互。然而,与DEM的交互并不是必须,可以选用。

五、文件结构

45cadfdbb915e4edddc4a766f31d6570.jpg


六、功能定义

下面的内容会描述Dlt模块在与SW-Cs、PduR和外部日志设备(External client)交互时,需要的AUTOSAR特定数据和控制路径。

Dlt命令 (Dlt commands)

Dlt协议指定由唯一的Service id标识的各种Dlt命令。Dlt命令用于在运行时修改Dlt模块的行为,例如,获取关于当前Dlt配置的信息或更改过滤器设置。(PRS\_Dlt\_00635)

image.png

Dlt与软件组件的交互

Dlt模块为SW-C提供了可用于发送日志和跟踪消息的接口。

可选地,SW-C可以为日志级别阈值(log level threshold)和跟踪状态变更通知提供一个Port口。这些端口由Dlt模块提供,分别为了不同ApplicationId / ContextId的每个元组而定义。这些通知可以用来避免影响SW-C已经生成的日志和跟踪消息,而不是让它们稍后被Dlt模块过滤掉。

由于Dlt模块支持SW-C的多个实例,它们使用相同的ApplicationId/ContextId元组,一个额外的SessionId参数允许区分来自相同SW-C的不同实例的日志/跟踪消息。

分离那些互相SW-Cs技术,避免SW-Cs必须使用独特的SessionId调用SendLogMessage / SendTraceMessage(细节,见下一章节),Dlt模块提供了一个专用P-Port每SW-C配置(参见配置参数DltSwc) SessionId作为port-defined-argument管理。

如果已配置的SW-C被标记为对日志级别的通知和跟踪状态更改感兴趣,Dlt模块还提供相应的R-Port来通知相应的SW-C。

由SW-C负责ApplicationId/ContextId元组的信息,在运行时分别通过调用RegisterContext和UnregisterContext为SW-C配置和/或更新。

590ca442cd51053d0b4afce8b80d6a7f.jpg

Dlt模块会为每个配置的SW-C提供一个接口DltService类型的P-Port。P-Port接口包含SessionId作为端口定义的参数。Dlt模块也会为每个配置的SW-C提供一个R-Port类型的接口LogTraceSessionControl(见第8章),其中配置参数DltSwcSupportLogLevelChangeNotification会被设置为TRUE。SW-C需要负责的ApplicationId / ContextId元组,因此在日志级别或跟踪状态更改时需要通知该元组,可以从配置参数DltSwcContext取得。

—END—

作者: 米多papa
来源: https://mp.weixin.qq.com/s/p6Z0cqSvZGOHAQqhF6AdGw
微信公众号:
 title=

推荐阅读:

更多汽车电子干货请关注汽车电子与软件专栏。
推荐阅读
关注数
5713
内容数
453
汽车电子与软件行业的相关技术报道及解读。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息