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

 

 

轉載請注明出處

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM