genivi dlt調測

1      概述

本文主要闡述使用genivi dlt離線存儲相關事項

GENIVI DLT 提供日誌和跟蹤接口,基於 AUTOSAR 標準 4.0 DLT 中指定的標準化協議。它由其他 GENIVI 組件使用,但可以用作其他應用程序的日誌記錄框架,與 GENIVI 無關。

本文主要對應DLT Daemon 2.18.8版本

 

最重要的術語和部分如下圖所示。有關 DLT 特定術語的完整概述,請參閱詞彙表。

 

 

DLT Application本質上是一個應用程序,服務於其各自(非 DLT 相關)目的並生成 DLT 日誌消息。它利用 DLT 庫來製作和傳輸這些消息。

DLT Library爲 DLT 用戶(即應用程序)提供了一個方便的 API,以創建 DLT 日誌消息並將它們交給 DLT 守護程序。如果後者不可用,庫會將消息緩存在環形緩衝區中,這樣它們就不會立即丟失。

DLT Daemon是ECU 的DLT 通信接口。它收集和緩衝來自在 ECU 上運行的一個或多個 DLT 用戶的日誌消息,並根據他們的請求將它們提供給 DLT 客戶端。守護進程還接受來自客戶端的控制消息來調整守護進程或應用程序的行爲。

DLT Client通過從 DLT 守護進程獲取日誌消息來接收和使用來自 DLT 用戶的日誌消息。它還可以發出控制消息來控制 DLT 守護程序或其連接的 DLT 用戶的行爲。 DLT 客戶端甚至可以通過所謂的注入消息將用戶定義的數據傳輸給 DLT 用戶。

Log Storage主要從Daemon的緩存中拉取日誌信息,可以對輸出按照Filter配置進行控制。

  

2      指南

  

cd dlt-daemon-master

2.1       Make

2.1.1    修改CONFIGURATION_FILES_DIR

修改CMakeList.txt

#set(CONFIGURATION_FILES_DIR ${CMAKE_INSTALL_FULL_SYSCONFDIR})

set(CONFIGURATION_FILES_DIR ${CMAKE_CONFIG_FILE_PATH})

 

2.1.2    修改配置的 install path

將DESTINATION ${CONFIGURATION_FILES_DIR} 調整爲DESTINATION ${CMAKE_INSTALL_PREFIX}/etc

./src/daemon/CMakeList.txt

INSTALL(FILES dlt.conf

   DESTINATION ${CMAKE_INSTALL_PREFIX}/etc

    COMPONENT base)

 

 

./src/gateway/CMakeList.txt

INSTALL(FILES dlt_gateway.conf

    DESTINATION ${CMAKE_INSTALL_PREFIX}/etc

    COMPONENT base)

 

 cmake -DCMAKE_TOOLCHAIN_FILE=../aarch64.toolchain.cmake -DCMAKE_CONFIG_FILE_PATH=/your_config_path/2578/etc -DCMAKE_INSTALL_PREFIX=/your_file_path/2578/install ..

 

make

make install

  

2.2       code

2.2.1    標準接口Simple code

#include "dlt/dlt.h"

DLT_DECLARE_CONTEXT(myContext1)

DLT_DECLARE_CONTEXT(myContext2)

DLT_DECLARE_CONTEXT(myContext3)

 

    /* dlt:register dlt application: LogAppName=APP */

    DLT_REGISTER_APP("APP","Application for Logging");

 

    /* dlt:register all contexts: ContextName=TEST */

    DLT_REGISTER_CONTEXT(myContext1,"TEST1","Test Context 1 for Logging");

    DLT_REGISTER_CONTEXT(myContext2,"TEST2","Test Context 2 for Logging");

    DLT_REGISTER_CONTEXT(myContext3,"TEST3","Test Context 3 for Logging");

 

    /* dlt:Write your logs */

    DLT_LOG(myContext1,DLT_LOG_ERROR,DLT_INT(5),DLT_STRING("This is a error"));

    DLT_LOG(myContext2,DLT_LOG_INFO,DLT_INT(5),DLT_STRING("But this only information"));

    DLT_LOG(myContext3,DLT_LOG_DEBUG,DLT_INT(5),DLT_STRING("But this only information"));

 

    /* dlt:unregister your contexts */

    DLT_UNREGISTER_CONTEXT(myContext1);

    DLT_UNREGISTER_CONTEXT(myContext2);

    DLT_UNREGISTER_CONTEXT(myContext3);

 

    /* dlt:unregister your application */

    DLT_UNREGISTER_APP();

 

 

./dlt-daemon -c /home/my_dlt/etc/dlt.conf -t /tmp/genivi_dlt -p 3495

 

Applications wanting to connect to a daemon using a custom directory need to be started with the environment variable DLT_PIPE_DIR set appropriately.

export DLT_PIPE_DIR=/tmp/genivi_dlt

 

Applications wanting to connect to a daemon using a custom port need to be started with the environment variable DLT_DAEMON_TCP_PORT set appropriately.

export DLT_DAEMON_TCP_PORT =3495

 

2.3       config

 

Directory for local fifo and user-pipes (Default: /tmp/genivi_dlt)

Port to monitor for incoming requests (Default: 3495)

DLT daemon configuration file (Default: /home/my_dlt/etc/dlt.conf)

 

LoggingFilename = /tmp/genivi_dlt/dlt.log

ControlSocketPath = /tmp/genivi_dlt/dlt-ctrl.sock

 

 

2.3.1    dlt_daemon

./dlt-daemon -c /home/my_dlt/dlt.conf -t /tmp/genivi_dlt -p 3495

 

 

2.3.2    dlt_logstorage

./bin/dlt-logstorage-ctrl -c 1 -p /home/my_dlt/storage/genivi_dlt/log

 

# Offline logstorage

OfflineLogstorageMaxDevices = 1

 

dlt_logstorage.conf

[FILTER1]

LogAppName=LOG

ContextName=TEST

LogLevel=DLT_LOG_DEBUG

File=svsoc01

FileSize=500

NOFiles=5

 

LogAppName 對應APID: LOG,

ContextName 對應CTID: TEST,

這裏的ECUID繼承dlt.conf的ECU: ECU1

LogLevel用於限制輸出的level

File文件名,這裏不能指定文件路徑,文件路徑只能dlt-logstorage-ctrl的-p參數指定

FileSize:文件大小,單個文件的大小

NOFiles:文件個數

 

注意:File文件不能出現下劃線_, 因爲DLT默認的分隔符是_(可以調整),這樣會引起DLT獲取數據分割時失敗,從而導致Index無法從文件名中獲取導致計數和遞增失敗。

比如出現如下問題

[ 4691.526959]~DLT~ 2887~ERROR    ~Unable to calculate index from log file name. Reset to 001

 

 

轉載請註明出處

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章