導入
AUTOSAR Dlt (Diagnostic Log and Trace) モジュールは、主に DET、DEM、SW-C からのログ情報 (ログ情報) または RTE からのトレース情報 (トレース情報) を受信するために使用されます。Dlt モジュールは通信バスを介してこれらのデータを送信し、これらのログとトレース情報を ECU の外部から見えるようにします。
この目的を達成するために、Dlt モジュールは、通信バス上でこれらの特殊なログ/トレース メッセージを送受信する方法の API を定義します。
さらに、Dlt モジュールの更新フィルター設定も、NvM モジュールを通じて永続的に保存できます。これにより、ECU は、ECU が起動するたびに通信バスから (ロギング機能を介して) 明示的に設定要求を要求することなく、必要なレベルでログ/トレース情報を送信できるようになります。
Dlt モジュールは、PduR モジュールと RTE モジュールの間に位置します。
ご注意ください:
Dlt メッセージ形式、利用可能な Dlt コマンド、および Dlt プロトコル (外部ログおよびトレース ツールとの通信用) は、別のドキュメントで定義されています [1] 。詳細については、 Dlt プロトコル仕様 を参照してください。
用語と定義
用語 | 説明する |
---|---|
ログとトレース メッセージ (ログとトレース メッセージ) | ログおよびトレース メッセージには、ソフトウェアのログおよびトレース イベントを説明するすべてのデータとオプションが含まれています。ログおよびトレース メッセージは、ヘッダーとペイロードで構成されます。 |
DLT ユーザー | Dlt ユーザーは、生成された Dlt メッセージのソースを表します。考えられるユーザーは、SW-C、RTE (VFB 追跡用)、DEM、または DET です。 |
ログメッセージ | ログ メッセージ (ログ メッセージ) には、状態の変更や値の変更などのデバッグ情報が含まれています。 |
トレースメッセージ | トレース メッセージには、VFB を介して渡される情報が含まれています。 |
ECU ID | ECU id は、4 つの 8 ビット ASCII 文字 (ab0 や COMB など) で構成される ECU の名前です。 |
セッション | セッションは、メッセージのソースを記録または追跡する論理エンティティです。アプリケーション/SW-C が複数回インスタンス化される場合、各インスタンスはアプリケーション/コンテキスト ID に関連するグローバルに一意のセッション ID を取得します。アプリケーション/SWC に Dlt に対して開いている複数のポートがある場合、複数のログ セッションまたはトレース セッションが同時に存在する可能性があります。AUTOSAR では SW-C に指定された特別なセッション ID がないため、ポート定義パラメータ値を通じて実現できます。 |
セッションID | セッション ID は、ログまたはトレース セッションの識別番号です。 |
アプリケーションIDはApplication/SW-Cの略称です。ログおよびトレース メッセージのソースを特定します。アプリケーション ID は 4 つの 8 ビット ASCII 文字で構成されます。 | |
コンテキストID (コンテキストID) | コンテキスト ID は、アプリケーション/SW-C によって生成されたログおよびトレース メッセージをグループ化するために使用されるユーザー定義の識別子です。コンテキスト ID は 4 つの 8 ビット ASCII 文字で構成されます。 次のルールを満たす必要があります。 1. 各アプリケーション ID は複数のコンテキスト ID を持つことができます。2. コンテキスト ID はアプリケーション ID に従ってグループ化されます。3. コンテキスト ID はアプリケーション ID 内で一意である必要があります。4. ログおよびトレースメッセージのソースは、メタ情報の「ApplicationID」および「ContextId」によって識別されます。 |
メッセージID | メッセージ ID はメッセージを特徴付ける識別子であり、メッセージ自体を通じて送信されます。メッセージ ID は、ログまたはトレース メッセージを一意に識別するために使用されます。これは、メッセージのソース (ソース コード内) を識別するために使用でき、メッセージのペイロードを記述するために使用できます。メッセージ ID は、開発または構成中に静的に固定されます。 |
ログレベル(ログレベル) | ログ レベルは、ログ メッセージのレベル分類を定義します。 |
トレースステータス | トレース ステータスは、トレース メッセージを送信する必要があるかどうかの情報を提供します。 |
ログチャンネル | DLT メッセージの送信に使用される物理通信バス。 |
外部クライアント (外部クライアント) | 外部クライアントは、Dlt モジュールを使用して ECU によって提供されるログ/トレース メッセージを制御、監視、保存するためのツールです。 |
使用するシーン
次のコンテンツでは、ECU が Dlt シーンを使用して分類する方法について説明します。
Dlt プロトコルはバスに依存しませんが、通信にはイーサネットなどのより高い帯域幅を持つバスを使用することをお勧めします。それにもかかわらず、Dlt のプロトコルはイーサネットの使用に限定されません。
Dlt を使用した一般的なロギング
- アプリケーション/SW-C はログ メッセージを生成します。
- ログ メッセージが Dlt モジュールに送信されます。
- Dlt モジュールは通信バスにログ メッセージを送信します。
- 外部 DLT クライアント ログのログ メッセージ
VFBのトレース
- RTE は Dlt によって提供されるマクロを呼び出し、Dlt は Dlt API インターフェイスを呼び出してトレースされたメッセージを生成します。
- Dlt モジュールは、生成されたトレース メッセージを、Dlt 通信モジュールによって実装されたインターフェイスに送信します。
- Dlt 通信モジュールは、トレース メッセージをネットワークに転送します。
- 外部クライアントはトレース メッセージを受信して保存します。
実行時構成 Dlt (Dlt の実行時構成)
- 外部 DLT クライアントは、ログ レベルとトレース レベルを設定し、変更を DLT モジュールに送信します。
- Dlt モジュールは、それに応じてフィルター設定の構成を調整します。
- Dlt モジュールは、アプリケーションに新しいログ レベルを通知します。
非冗長モード
通信バス上の変数のメタデータを送信しないことで、バス上のトラフィックを削減できます。この時点で、外部 FIBEX ファイルを使用して、ペイロードの内容を解析する方法に関する情報を保持できます。外部 Dlt クライアントは、これらの FIBEX ファイルで定義されたメタデータを受信したデータとマージして保存します。
- Dlt モジュールを呼び出して、非冗長モードで Dlt メッセージを送信します。
- Dlt モジュールは、Dlt メッセージをフィルタリングして生成します。
- Dlt モジュールは、Dlt メッセージを通信バスに送信します。
- 外部 Dlt クライアントは、外部 FIBEX ファイルからメタ情報を取得します。
- マージされた情報は、外部 DLT クライアントによって保存されます。
プロトコル仕様
メッセージフォーマット
デバッグ データと制御情報には、同じ Dlt メッセージ形式を使用してください。これは、標準ヘッダー、オプションの拡張ヘッダー、および有効な複合セクションで構成されます。
標準ヘッダー
Dlt 標準ヘッダーは、次の順序で次のフィールドで構成されます。
位置 | 説明する |
---|---|
バイト0 | HTYP(ヘッダータイプ) |
バイト1 | MCNT (メッセージカウンター) |
バイト2~3 | LEN(長さ) |
バイト4~7 | ECU (ECU ID) |
バイト8~11 | SEID(セッションID) |
バイト12~15 | TMSP(タイムスタンプ) |
拡張ヘッダー
標準ヘッダの UEH ビットが「1」に設定されている場合、Dlt 拡張ヘッダ形式で定義された付加情報が送信されます。Dlt 拡張ヘッダーは、Dlt 標準ヘッダー フィールドの直後に追加されます。
DLT 拡張ヘッダー形式は、次の順序で次のフィールドで構成されます。
位置 | 説明する |
---|---|
バイト0 | MSIN(メッセージ情報) |
バイト1 | NOAR (引数の数) |
バイト2~5 | APID(アプリケーションID) |
バイト6~9 | CTID(コンテキストID) |
ボディ/ペイロード形式
Dlt 本体データは、Dlt ヘッダーまたは Dlt 拡張ヘッダー (使用されている場合) の後に続きます。DLT ボディ データには、Log または Trace となるパラメータ、または制御情報が含まれます。
依存モジュール
RTE
RTE (VFB および BSW スケジューラを含む) は、主に SW-C と対話し、ログとトレース メッセージを生成し、ループ内で Dlt モジュールの Tx 関数を呼び出すために使用されます。
PDUルーター
通信バス上で Dlt メッセージを送信するために、Dlt モジュールは PDU ルーターと対話します。
NvM
フィルタ設定やログチャネル割り当てなどの関連構成をロードおよび保存するため。NvM モジュールは必須ではありませんが、オプションです。
GPT
タイムスタンプを取得するには、GPT モジュールを使用できます。
StbM
標準/拡張形式で同期時刻値を取得するため。ローカル タイム ベースはグローバル タイム ベースから派生し、StbM モジュールをこの目的に使用できます。
ザ
デフォルトのエラーを報告し、DET エラーを通信バスに転送できるようにするには、Dlt モジュールが DET モジュールと対話する必要があります。ただし、DET との対話は必須ではなく、オプションです。
DEM
開発エラーを報告し、通信バス上で DEM イベントを送信できるようにするには、Dlt モジュールが DEM モジュールと対話する必要があります。ただし、DEM との対話は必須ではなく、オプションです。
ファイル構造
関数定義
次のコンテンツでは、SW-C、PduR、および外部ログ デバイス (外部クライアント) と対話するときに Dlt モジュールに必要な AUTOSAR 固有のデータおよび制御パスについて説明します。
DLT コマンド (DLT コマンド)
Dlt协议指定由唯一的Service id标识的各种Dlt命令。Dlt命令用于在运行时修改Dlt模块的行为,例如,获取关于当前Dlt配置的信息或更改过滤器设置。(PRS_Dlt_00635)
Service ID | Dlt Command | Description |
---|---|---|
0x01 | SetLogLevel | 设置日志级别 |
0x02 | SetTraceStatus | 启用/禁用跟踪消息 |
0x03 | GetLogInfo | 返回已注册SW-C的LogLevel |
0x04 | GetDefaultLogLevel | 返回通配符的日志级别 |
0x05 | StoreConfiguration | 存储当前配置非易失性 |
0x06 | ResetToFactoryDefault | 将配置设置回默认值 |
0x0A | SetMessageFiltering | 启用/禁用Dlt过滤器 |
0x11 | SetDefaultLogLevel | 设置通配符的日志级别 |
0x12 | SetDefaultTraceStatus | 启用/禁用通配符的跟踪消息 |
0x15 | GetDefaultTraceStatus | 获取通配符的当前TraceLevel |
0x17 | GetLogChannelNames | 返回LogChannel的名称 |
0x1F | GetTraceStatus | 获取当前跟踪状态(开启/关闭) |
0x20 | SetLogChannelAssignment | 添加/删除给定的LogChannel作为输出路径 |
0x21 | SetLogChannelThreshold | 为给定的LogChannel设置过滤阈值 |
0x22 | GetLogChannelThreshold | 获取给定LogChannel的筛选器阈值 |
0x23 | BufferOverflowNotification | DLT模块内缓冲区溢出的指示 |
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配置和/或更新。
Dlt模块会为每个配置的SW-C提供一个接口DltService类型的P-Port。P-Port接口包含SessionId作为端口定义的参数。Dlt模块也会为每个配置的SW-C提供一个R-Port类型的接口LogTraceSessionControl(见第8章),其中配置参数DltSwcSupportLogLevelChangeNotification会被设置为TRUE。SW-C需要负责的ApplicationId / ContextId元组,因此在日志级别或跟踪状态更改时需要通知该元组,可以从配置参数DltSwcContext取得。
参考
- ^ DLT プロトコル仕様 (PRS_DLTProtocol.pdf) https://www.autosar.org/fileadmin/user_upload/standards/foundation/1-0/AUTOSAR_PRS_DiagnosticLogAndTraceProtocol.pdf