DLT는 Diagnostic Log and Trace의 약자로 차량용 표준을 제공하는 AUTOSAR 표준 4.0에 정의된 표준화된 프로토콜입니다. DLT에 대해서 어디서 정의하고 있는지 어디서 찾아볼 수 있는지 설명합니다.
오늘날 자동차는 단순한 이동 수단을 넘어 수많은 전자제어장치(ECU)와 복잡한 소프트웨어로 구동되는 '첨단 기술 집약체'입니다. 이러한 시스템의 안정성과 신뢰성을 확보하기 위해, 개발 및 진단 과정에서 발생하는 다양한 정보를 효율적으로 기록하고 추적하는 기술이 필수적입니다. 그 핵심에 바로 **DLT(Diagnostic Log and Trace)**가 있습니다.
1. DLT란 무엇인가? (Understanding DLT)
DLT는 Diagnostic Log and Trace의 약자로, AUTOSAR(AUTomotive Open System ARchitecture) 표준에서 정의된 차량용 로깅 및 추적 프로토콜입니다. 쉽게 말해, 차량 내 다양한 소프트웨어 구성 요소들이 "지금 어떤 작업을 수행하고 있고, 시스템 상태는 어떠한가?"를 표준화된 방식으로 알리는 메시지 시스템이라고 생각할 수 있습니다.
- 목적: ECU 및 소프트웨어의 동작 상태, 오류 정보, 성능 데이터 등을 실시간으로 기록하고 전송하여, 문제 발생 시 원인을 신속하게 파악하고 시스템을 디버깅하는 데 사용됩니다.
- 표준화의 이점: AUTOSAR 표준을 따르므로, 다양한 제조사와 부품 공급업체(Tier) 간의 시스템 통합 및 데이터 호환성을 높입니다.
- 홈페이지 : https://www.autosar.org
AUTOSAR (Automotive Open System Architecture)
The realization of the AUTOSAR industry standard will provide significant benefits for OEMs, leading suppliers as well as for tool providers and new market entrants. Involve yourself in the development of AUTOSAR through the following types of partnership:
www.autosar.org
소프트웨어 통합 플랫폼, '오토사'란 무엇인가?
global-autonews.com
2. DLT가 왜 중요한가? (The Importance of DLT)
복잡성이 증가하는 차량 시스템에서 DLT의 역할은 아무리 강조해도 지나치지 않습니다.
- 신속한 오류 진단 및 해결: 예상치 못한 시스템 오류나 오작동 발생 시, DLT 로그는 마치 '블랙박스'처럼 문제의 단서를 제공하여 개발 및 유지보수 시간을 획기적으로 단축합니다.
- 개발 효율성 향상: 소프트웨어 개발 초기 단계부터 DLT를 활용하여 각 모듈의 동작을 검증하고, 통합 과정에서의 문제를 조기에 발견하여 디버깅 효율을 높입니다.
- 시스템 안정성 및 품질 확보: 지속적인 로깅과 모니터링을 통해 잠재적인 결함을 사전에 감지하고, 시스템의 전반적인 안정성과 품질을 향상시키는 데 기여합니다.
- 원격 진단 및 업데이트 지원: 차량이 서비스 센터에 직접 방문하지 않더라도 DLT 로그를 원격으로 전송받아 분석함으로써, OTA(Over-The-Air) 업데이트 후 발생할 수 있는 문제 등을 원격으로 진단하고 지원하는 기반이 됩니다.
- 기능 안전 표준 준수: ISO 26262와 같은 자동차 기능 안전 표준에서 요구하는 시스템 동작의 추적성(Traceability) 및 검증 요구사항을 충족하는 데 중요한 역할을 합니다.
3. DLT의 핵심 구성요소 및 작동 원리 (Core Components and How DLT Works)
DLT 시스템은 주로 로그를 생성하는 부분과 이를 수집하여 보여주는 부분으로 구성됩니다.
- DLT-enabled Application (DLT 적용 애플리케이션): 차량 ECU에서 실행되는 실제 소프트웨어입니다. 이 애플리케이션은 DLT 라이브러리(API)를 사용하여 정해진 형식에 따라 로그 메시지를 생성합니다.
- DLT-Daemon (DLT 데몬): 각 ECU 또는 특정 시스템 단위에서 실행되는 백그라운드 서비스(프로세스)입니다. 애플리케이션으로부터 DLT 메시지를 수신하여, 이를 네트워크(주로 이더넷)를 통해 외부로 전송하거나 내부 저장매체(예: 플래시 메모리)에 기록하는 역할을 합니다. 또한, 설정에 따라 메시지 필터링, 버퍼링, 라우팅 등의 기능도 수행합니다.
- DLT-Viewer (DLT 뷰어): 주로 개발자나 진단 엔지니어의 PC에서 실행되는 분석 도구입니다. DLT-Daemon으로부터 전송된 DLT 메시지를 수신하여 사용자에게 실시간으로 보여주고, 다양한 필터링, 검색, 저장, 분석 기능을 제공합니다. (예: GENIVI DLT Viewer, Vector vLogger 등)
간단한 작동 흐름:
- ECU 내 애플리케이션이 특정 이벤트(예: 함수 호출, 오류 발생, 상태 변경) 발생 시 DLT 라이브러리를 통해 로그 메시지를 생성합니다.
- 생성된 로그 메시지는 해당 ECU의 DLT-Daemon으로 전달됩니다.
- DLT-Daemon은 수신된 메시지를 설정된 규칙(예: 로그 레벨, 애플리케이션 ID)에 따라 필터링한 후, TCP/IP 또는 UDP 프로토콜을 사용하여 이더넷 네트워크를 통해 전송합니다.
- 개발자의 PC에 설치된 DLT-Viewer가 네트워크를 통해 DLT 메시지를 수신합니다.
- DLT-Viewer는 수신된 바이너리 형태의 DLT 메시지를 파싱(해석)하여 사람이 읽을 수 있는 형태로 변환하고, 다양한 분석 기능을 통해 사용자에게 제공합니다.
- AUTOSAR Documents : Diagnostic Log and Trace .
- Protocol Specification : Log and Trace Protocol Specification .
4. DLT 메시지의 구조 (Deep Dive into DLT Message Structure)
DLT 메시지는 효율적인 정보 전달을 위해 표준화된 구조를 가집니다. 주요 구성 요소는 다음과 같습니다.
- Standard Header (표준 헤더):
- Message Length: 전체 DLT 메시지의 길이.
- ECU ID: 메시지를 생성한 ECU의 식별자.
- Session ID: DLT 세션의 식별자.
- Timestamp: 메시지가 생성된 시간 (매우 중요).
- Message Counter: 메시지의 순서 번호.
- Extended Header (확장 헤더 - 선택 사항):
- Message Type (MTIN): 메시지의 종류 (예: Log, Trace, Network Message 등)와 Verbosity/Log Level(심각도: Fatal, Error, Warn, Info, Debug, Verbose)을 정의.
- Application ID (APID): 메시지를 생성한 애플리케이션의 식별자.
- Context ID (CTID): 동일 애플리케이션 내에서 메시지가 발생한 특정 컨텍스트(예: 모듈, 함수)의 식별자.
- Payload (페이로드):
- 실제 로그 데이터가 담기는 부분입니다. 다양한 데이터 타입(Boolean, Signed/Unsigned Integers, Float, String, Raw Data 등)을 지원하며, 여러 인자(Argument)를 포함할 수 있습니다.
이러한 구조 덕분에 DLT-Viewer는 수많은 로그 중에서 특정 ECU, 특정 애플리케이션, 특정 시간대의 로그를 정확하게 필터링하고 분석할 수 있습니다.
5. DLT 활용 시 고려사항 및 모범 사례 (Considerations and Best Practices)
DLT를 효과적으로 활용하기 위해서는 몇 가지 중요한 사항들을 고려해야 합니다.
- 적절한 로그 레벨(Log Level) 정의 및 사용:
- 너무 많은 Verbose 또는 Debug 레벨의 로그는 시스템 성능에 부담을 주고 분석을 어렵게 만듭니다. 반대로, 필요한 정보가 누락되면 문제 해결이 어려워집니다.
- 개발 단계, 테스트 단계, 양산 단계 등 상황에 맞는 로그 레벨 정책을 수립하고, DLT-Daemon에서 동적으로 로그 레벨을 변경하여 필요한 정보만 수집하는 것이 중요합니다.
- 로그 메시지의 명확성 및 일관성:
- 로그 메시지는 누가 보더라도 이해하기 쉽고, 문제 상황을 명확히 알 수 있도록 구체적으로 작성해야 합니다. (예: "Error occurred" 보다는 "Sensor_A_Read_Timeout: No response within 500ms")
- 프로젝트 또는 팀 내에서 로그 메시지 형식에 대한 가이드라인을 정하고 일관성 있게 작성합니다.
- 성능 영향 최소화:
- 로깅 자체는 시스템 리소스(CPU, 메모리, 네트워크 대역폭)를 소모합니다. 특히 실시간성이 중요한 제어 시스템에서는 로깅으로 인한 오버헤드를 최소화해야 합니다.
- DLT-Daemon의 필터링 기능을 적극 활용하고, 필요시에만 특정 로그를 활성화하는 방안을 고려합니다.
- 데이터 보안 및 개인 정보 보호:
- DLT 로그에는 민감한 정보(예: 시스템 내부 변수 값, 사용자 관련 정보)가 포함될 수 있습니다. 데이터 저장, 전송, 접근에 대한 보안 정책을 수립하고, 필요한 경우 암호화 또는 익명화 조치를 취해야 합니다.
- 저장 공간 관리:
- 장기간 로깅 시 저장 공간 부족 문제가 발생하지 않도록 로그 파일의 크기, 개수, 보관 주기 등을 관리하는 전략이 필요합니다. (예: 오래된 로그 자동 삭제, 순환 버퍼 사용)
- 타임스탬프 동기화:
- 분산된 여러 ECU에서 발생하는 로그를 시간 순서대로 정확히 분석하기 위해서는 모든 ECU의 타임스탬프가 동기화되어야 합니다. (예: NTP, PTP 프로토콜 활용)
6. DLT의 미래와 발전 방향 (The Future and Evolution of DLT)
차량의 전동화, 자율주행 기술의 발전, 커넥티드 기능의 확대에 따라 DLT의 중요성은 더욱 커지고 있습니다.
- 대용량 데이터 처리: 고성능 컴퓨팅 플랫폼과 이더넷 기반의 차량 내 네트워크가 보편화되면서 DLT가 처리해야 할 데이터의 양도 급증하고 있습니다. 이에 따라 보다 효율적인 데이터 압축, 전송, 분석 기술이 요구됩니다.
- 인공지능(AI) 및 머신러닝과의 결합: 수집된 방대한 DLT 로그를 AI 및 머신러닝 알고리즘으로 분석하여, 고장 예지(Predictive Maintenance), 이상 패턴 감지, 운전자 행동 분석 등 새로운 부가가치를 창출하려는 시도가 늘고 있습니다.
- 클라우드 기반 로깅 및 분석: DLT 로그를 클라우드 플랫폼으로 전송하여 저장하고, 클라우드의 강력한 컴퓨팅 파워를 활용해 심층 분석을 수행하는 솔루션이 확대될 것입니다.
- 표준의 지속적인 발전: AUTOSAR 표준은 계속해서 진화하고 있으며, DLT 역시 새로운 요구사항(예: 보안 강화, 동적 설정 기능 확대)을 반영하여 업데이트될 것입니다.
7. DLT를 시스템에 적용하자
- 시스템에 DLT-daemon을 설치하고, App에서 DLT-daemon으로 로그를 출력하면, 외부에서 DLT-Viewer로 로그를 받을 수 있게 됩니다.
- Ubuntu DLT-daemon Manual : https://manpages.ubuntu.com/manpages/jammy/en/man1/dlt-daemon.1.html
- DLT-daemon은 설치해본 적이 없어서 설명이 어렵네요.
Ubuntu Manpage: dlt-daemon - Diagnostic Log and Trace daemon
Powered by the Ubuntu Manpage Repository, file bugs in Launchpad © 2019 Canonical Ltd. Ubuntu and Canonical are registered trademarks of Canonical Ltd.
manpages.ubuntu.com
8. DLT-Viewer 사용 방법
- 표준화된 DLT 프로토콜을 사용하는 기기 (차량이나 기타 기기)에서 출력하는 DLT 에 대해서 사용자가 로그를 보고, 필터링하고 검색할 수 있는 Viewer로 Open Source로 제공되고 있습니다.
- 즉, 표준을 따르는 Viewer이므로 DLT를 지원하는 모든 기기에서 방출하는 DLT를 볼 수 있다는 것입니다.
- 차량용 SW를 개발하고 있고, 로그를 DLT로 확인한다면, DLT-Viewer를 사용할 수 밖에 없습니다.
- 이 DLT-Viewer는 GitHub에 공개되어 있어서, 다운 받아서 컴파일하면 최신 버전을 사용할 수 있습니다.
- 소스가 공개되어 있으므로, 필요한 기능을 추가할 수도 있습니다.
- BMW그룹에서 만들어서 배포하고 있습니다.
- 사이트 : https://github.com/COVESA/dlt-viewer
- Appstore : https://apps.apple.com/us/app/dltviewer/id6648796931?mt=12
GitHub - COVESA/dlt-viewer: Diagnostic Log and Trace viewing program
Diagnostic Log and Trace viewing program. Contribute to COVESA/dlt-viewer development by creating an account on GitHub.
github.com
DLTViewer
The Diagnostic Log and Trace Viewer is an application that can send and receive control messages to the DLT daemon, e.g. to set individual log levels of applications and contexts or get the list of applications and contexts registered in the DLT daemon.
apps.apple.com
(Apple 앱스토어에도 등록되어 있군요.)
다음글에서 DLT-Viewer를 받아서, 컴파일하고 동작시켜서, 사용하는 기능들을 알아보겠습니다.
'SW Developer > DLT-Viewer' 카테고리의 다른 글
DLT-Viewer의 메시지 항목에 Context 메뉴 추가하기 (0) | 2025.03.10 |
---|---|
DLT-Viewer에서 필터 사용하기 (0) | 2025.03.09 |
DLT-Viewer 받아서 컴파일하고 실행하자 (0) | 2025.03.09 |