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

GENIVI DLT(Diagnostic Log and Trace) 활용

makersweb 2020.11.19 23:07 조회 수 : 8504

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 Flutter 위젯의 상태관리에 대해서 file makersweb 2023.04.06 462
34 [NodeGui] JavaScript로 데스크탑 응용프로그램 작성 file makersweb 2023.02.21 1195
33 openFrameworks 한글 폰트 설정 및 출력하기 file makersweb 2023.02.19 207
32 LVGL 을 통해 GUI 구현 시 한글 폰트 추가 file makersweb 2023.02.07 1171
31 Windows에서 Qt Creator + CMake + vcpkg 로 C++ 개발환경 구성 (POCO 라이브러리 DirectoryWatcher 예제) file makersweb 2023.01.14 692
30 NAppGUI, C언어용 크로스 플랫폼 GUI 라이브러리 file makersweb 2022.10.10 874
29 OTA 오픈소스 프로젝트 makersweb 2022.08.03 480
28 AGL (Automotive Grade Linux) 개요 file makersweb 2022.06.19 1868
27 Chromium과 Ozone 층 file makersweb 2022.03.03 744
26 Flutter Application 에서 한글(EUC-KR) 깨져서 나오는 문제 file makersweb 2022.01.06 2718
25 CopperSpice 에 대해서 (C++ Gui 라이브러리) file makersweb 2022.01.02 545
24 Flutter/Dart 와 Qt/QML 비교 file makersweb 2021.11.07 1425
23 VSCode 와 Qbs 플러그인으로 C/C++ 개발환경 구성 file makersweb 2021.09.12 853
22 ZeroMQ 를 이용한 Qt 응용프로그램 간 통신 file makersweb 2021.08.28 860
21 C++를 위한 Lottie 라이브러리 with SDL2 file makersweb 2021.08.15 969
20 CANdevStudio 를 사용하여 CAN 네트워크 시뮬레이션 file makersweb 2021.03.09 1729
19 Protocol Buffers 를 이용한 직렬화 with Conan Package Manager file makersweb 2021.02.24 874
18 라즈베리파이에서 Redis의 Pub/Sub 패턴을 사용하는 Electron 응용프로그램 file makersweb 2021.01.31 685
17 Nana, C++용 크로스플랫폼 GUI 라이브러리 file makersweb 2021.01.06 2076
16 라즈베리파이4에서 openFrameworks 예제 실행 file makersweb 2020.12.13 561