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

GENIVI DLT(Diagnostic Log and Trace) 활용

makersweb 2020.11.19 23:07 조회 수 : 8267

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 라이센스 정책에 따라 사용할 수 있으며 다양한 프로젝트에서 실제로 유용하게 사용될 수 있다.

번호 제목 글쓴이 날짜 조회 수
35 Wayland IVI Extension 간단 리뷰 file makersweb 2019.05.12 2256
34 GDBus 튜토리얼(GDBus tutorial) file makersweb 2019.06.30 10323
33 텔레그램(Telegram) Bot 개발 file makersweb 2019.07.21 5702
32 리눅스에서 SDL2 최신버전 컴파일과 Qt Creator로 개발환경 구성 file makersweb 2019.10.06 3028
31 webOS소개 및 Raspberry Pi 3 에서 실행 file makersweb 2019.10.13 3871
30 도커(docker)설치 및 기본 명령어 makersweb 2019.12.02 482
29 Pluma(C++ Plug-in Management Framework) 튜토리얼 file makersweb 2019.12.07 13975
28 [SDL2 와 OpenGL]윈도우 생성과 2D그래픽 file makersweb 2020.04.11 3053
27 ZeroMQ의 기본 메세지 패턴들 file makersweb 2020.07.31 8472
26 ZeroMQ 비동기 클라이언트/서버 패턴 file makersweb 2020.08.13 1761
25 Qt와 GStreamer 로 작성한 flac 오디오 재생 예제 file makersweb 2020.09.05 1139
24 가볍고 쉬운 임베디드용 그래픽 라이브러리 - LVGL file makersweb 2020.09.16 3309
23 윈도우에서 안드로이드 flutter 프로그래밍 개발환경 구축(with Visual Studio Code) file makersweb 2020.09.16 794
» GENIVI DLT(Diagnostic Log and Trace) 활용 file makersweb 2020.11.19 8267
21 Dear ImGui, 경량의 C++ 용 GUI 및 Widget 라이브러리 file makersweb 2020.11.28 9033
20 라즈베리파이4에서 openFrameworks 예제 실행 file makersweb 2020.12.13 559
19 Nana, C++용 크로스플랫폼 GUI 라이브러리 file makersweb 2021.01.06 2063
18 라즈베리파이에서 Redis의 Pub/Sub 패턴을 사용하는 Electron 응용프로그램 file makersweb 2021.01.31 680
17 Protocol Buffers 를 이용한 직렬화 with Conan Package Manager file makersweb 2021.02.24 860
16 CANdevStudio 를 사용하여 CAN 네트워크 시뮬레이션 file makersweb 2021.03.09 1689