GENIVI DLT는 AUTOSAR 표준 4.0 DLT에 명시된 표준화된 프로토콜에 기초하여 로그 및 추적 인터페이스를 제공한다. 차량 내부의 많은 ECU 및 전자장비에서 사용하기위해 시작되었지만 기타 응용 프로그램 프로젝트에서 로깅 프레임 워크로 사용할 수 있다.
https://github.com/GENIVI
DLT는 기본적으로 크게 3 가지 구성 요소로 구성된다.
DLT Library:
DLT 사용자 응용 프로그램에 대한 DLT 로깅을 활성화하고 데몬을 사용할 수없는 경우 로그 메시지의 임시 저장소를 활성화한다.
DLT Daemon:
DLT 사용자 응용 프로그램에서 로그 메시지 수신 및 로그 메시지를 DLT 클라이언트로 전송하고 제어 메시지에 응답한다.
DLT Client:
DLT 데몬에서 로그 메시지를 수신하여 하나의 단일 추적 파일로 저장하고 제어 메시지를 보낼 수 있다. DLT Viewer가 DLT Client 정도로 생각하면 되겠다. TCP나 시리얼 통신을 통해 원격에서 로그를 필터링, 추적하고 진단할 수 있다.
▲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 라이센스 정책에 따라 사용할 수 있으며 다양한 프로젝트에서 실제로 유용하게 사용될 수 있다.
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
16 | 라즈베리파이4에서 openFrameworks 예제 실행 | makersweb | 2020.12.13 | 851 |
15 | Dear ImGui, 경량의 C++ 용 GUI 및 Widget 라이브러리 | makersweb | 2020.11.28 | 9650 |
» | GENIVI DLT(Diagnostic Log and Trace) 활용 | makersweb | 2020.11.19 | 9820 |
13 | 윈도우에서 안드로이드 flutter 프로그래밍 개발환경 구축(with Visual Studio Code) | makersweb | 2020.09.16 | 1087 |
12 | 가볍고 쉬운 임베디드용 그래픽 라이브러리 - LVGL | makersweb | 2020.09.16 | 3898 |
11 | Qt와 GStreamer 로 작성한 flac 오디오 재생 예제 | makersweb | 2020.09.05 | 1355 |
10 | ZeroMQ 비동기 클라이언트/서버 패턴 | makersweb | 2020.08.13 | 2131 |
9 | ZeroMQ의 기본 메세지 패턴들 | makersweb | 2020.07.31 | 9058 |
8 | [SDL2 와 OpenGL]윈도우 생성과 2D그래픽 | makersweb | 2020.04.11 | 3394 |
7 | Pluma(C++ Plug-in Management Framework) 튜토리얼 | makersweb | 2019.12.07 | 14276 |
6 | 도커(docker)설치 및 기본 명령어 | makersweb | 2019.12.02 | 702 |
5 | webOS소개 및 Raspberry Pi 3 에서 실행 | makersweb | 2019.10.13 | 4169 |
4 | 리눅스에서 SDL2 최신버전 컴파일과 Qt Creator로 개발환경 구성 | makersweb | 2019.10.06 | 3325 |
3 | 텔레그램(Telegram) Bot 개발 | makersweb | 2019.07.21 | 6062 |
2 | GDBus 튜토리얼(GDBus tutorial) | makersweb | 2019.06.30 | 11046 |
1 | Wayland IVI Extension 간단 리뷰 | makersweb | 2019.05.12 | 2535 |