한국어
오픈소스포럼
 이곳은 다양한 오픈소스 프로젝트를 소개하고 리뷰, 활용 방법을 공유합니다.

GENIVI DLT(Diagnostic Log and Trace) 활용

makersweb 2020.11.19 23:07 조회 수 : 2880

GENIVI DLT는 AUTOSAR 표준 4.0 DLT에 명시된 표준화된 프로토콜에 기초하여 로그 및 추적 인터페이스를 제공한다. 차량 내부의 많은 ECU 및 전자장비에서 사용하기위해 시작되었지만 기타 응용 프로그램 프로젝트에서 로깅 프레임 워크로 사용할 수 있다.

 

https://github.com/GENIVI

 

DLT는 기본적으로 크게 3 가지 구성 요소로 구성된다.

 

dlt_overview.png

 

DLT Library:

DLT 사용자 응용 프로그램에 대한 DLT 로깅을 활성화하고 데몬을 사용할 수없는 경우 로그 메시지의 임시 저장소를 활성화한다.

 

DLT Daemon:

DLT 사용자 응용 프로그램에서 로그 메시지 수신 및 로그 메시지를 DLT 클라이언트로 전송하고 제어 메시지에 응답한다.

 

DLT Client:

DLT 데몬에서 로그 메시지를 수신하여 하나의 단일 추적 파일로 저장하고 제어 메시지를 보낼 수 있다. DLT Viewer가 DLT Client 정도로 생각하면 되겠다. TCP나 시리얼 통신을 통해 원격에서 로그를 필터링, 추적하고 진단할 수 있다.

dlt-viewer.png

▲TCP를 통해 라즈베리파이 4 응용프로그램 로그가 원격 윈도우 시스템의 dlt-viewer 에 출력된 모습.

 

응용프로그램에서 DLT를 사용하려면 DLT 라이브러리에 링크되어야한다. 다음 예제는 최소한의 코드를 사용하여 애플리케이션에서 DLT를 사용하는 방법을 보여준다.

#include <dlt.h>

DLT_DECLARE_CONTEXT(ctx); /* declare context */

int main()
{
    DLT_REGISTER_APP("EXA1", "First Example");

    DLT_REGISTER_CONTEXT(ctx, "CON", "First context");

    /* … */

    DLT_LOG(ctx, DLT_LOG_INFO, DLT_STRING("Hello world!"));

    /* … */

    DLT_UNREGISTER_CONTEXT(ctx);
    DLT_UNREGISTER_APP();
    return 0;
}

 

다음은 DLT에서 사용할 수 있는 로그 레벨이다.

Log Level

Description

DLT_LOG_FATAL

Fatal system errors, should be very rare

DLT_LOG_ERROR

Error with impact on correct functionality

DLT_LOG_WARN

Warning if correct behavior cannot not be ensured

DLT_LOG_INFO

Informational, providing high level understanding

DLT_LOG_DEBUG

Detailed debug information for programmers

DLT_LOG_VERBOSE

Verbose debug information for programmers

 

Qt 응용프로그램을 개발하는 경우 로그 레벨이 완전히 1:1 매칭되진 않지만 Qt 로깅 시스템과 연동도 가능하다 (다음 링크를 참고)

https://doc.qt.io/QtGENIVIExtras/qtdlt.html

 

GENIVI DLT는 MPL 라이센스 정책에 따라 사용할 수 있으며 다양한 프로젝트에서 실제로 유용하게 사용될 수 있다.

번호 제목 글쓴이 날짜 조회 수
27 Chromium과 Ozone 층 file makersweb 2022.03.03 24
26 Flutter Application 에서 한글(EUC-KR) 깨져서 나오는 문제 file makersweb 2022.01.06 195
25 CopperSpice 에 대해서 (C++ Gui 라이브러리) file makersweb 2022.01.02 169
24 Flutter/Dart 와 Qt/QML 비교 file makersweb 2021.11.07 286
23 VSCode 와 Qbs 플러그인으로 C/C++ 개발환경 구성 file makersweb 2021.09.12 216
22 ZeroMQ 를 이용한 Qt 응용프로그램 간 통신 file makersweb 2021.08.28 295
21 C++를 위한 Lottie 라이브러리 with SDL2 file makersweb 2021.08.15 474
20 CANdevStudio 를 사용하여 CAN 네트워크 시뮬레이션 file makersweb 2021.03.09 616
19 Protocol Buffers 를 이용한 직렬화 with Conan Package Manager file makersweb 2021.02.24 263
18 라즈베리파이에서 Redis의 Pub/Sub 패턴을 사용하는 Electron 응용프로그램 file makersweb 2021.01.31 309
17 Nana, C++용 크로스플랫폼 GUI 라이브러리 file makersweb 2021.01.06 1293
16 라즈베리파이4에서 openFrameworks 예제 실행 file makersweb 2020.12.13 244
15 Dear ImGui, 경량의 C++ 용 GUI 및 Widget 라이브러리 file makersweb 2020.11.28 4339
» GENIVI DLT(Diagnostic Log and Trace) 활용 file makersweb 2020.11.19 2880
13 윈도우에서 안드로이드 flutter 프로그래밍 개발환경 구축(with Visual Studio Code) file makersweb 2020.09.16 443
12 가볍고 쉬운 임베디드용 그래픽 라이브러리 - LVGL file makersweb 2020.09.16 925
11 Qt와 GStreamer 로 작성한 flac 오디오 재생 예제 file makersweb 2020.09.05 680
10 ZeroMQ 비동기 클라이언트/서버 패턴 file makersweb 2020.08.13 666
9 ZeroMQ의 기본 메세지 패턴들 file makersweb 2020.07.31 3824
8 [SDL2 와 OpenGL]윈도우 생성과 2D그래픽 file makersweb 2020.04.11 1650