진단 통신: UDS로 고장 코드 읽고 업데이트하기
정비소 진단기가 ECU와 대화하는 표준 UDS. 서비스 ID, 고장 코드(DTC), 세션과 보안 접근, 펌웨어 플래싱.
UDS (ISO 14229)
진단기가 요청을 보내고 ECU가 응답합니다. 요청의 첫 바이트가 서비스 ID입니다.
| SID | 서비스 | 용도 |
|---|---|---|
| 0x10 | 진단 세션 제어 | 기본 / 확장 / 프로그래밍 세션 전환 |
| 0x11 | ECU 리셋 | |
| 0x14 | DTC 지우기 | |
| 0x19 | DTC 읽기 | 고장 코드와 발생 조건 |
| 0x22 / 0x2E | 데이터 읽기 / 쓰기 (DID) | 버전, VIN, 보정값 |
| 0x27 | 보안 접근 | 시드-키 인증 |
| 0x31 | 루틴 제어 | 자가 진단, 메모리 지우기 |
| 0x34 / 0x36 / 0x37 | 다운로드 요청 / 전송 / 종료 | 펌웨어 플래싱 |
긍정 응답은 SID + 0x40(예: 0x22 → 0x62), 부정 응답은 0x7F + SID + 이유 코드입니다.
전송 계층
UDS 메시지는 CAN 8바이트보다 길 수 있어서 ISO-TP(ISO 15765-2)가 여러 프레임으로 나누고 흐름을 제어합니다. 이더넷에서는 DoIP를 씁니다.
무료 전자책이 주제를 한 권으로 이어 읽기 (PDF 3권)→DTC
ECU가 고장을 감지하면 고장 코드(P0xxx 등)와 함께 발생 당시 조건(프리즈 프레임)을 비휘발성 메모리에 저장합니다. 고장 감지 조건, 확정 조건, 해제 조건을 정의하는 것이 진단 기능 개발의 핵심입니다.
플래싱 순서
프로그래밍 세션 진입 → 보안 접근 → 메모리 지우기 루틴 → 다운로드 → 검증 루틴 → 리셋. 부트로더가 이 시퀀스를 처리합니다.
영상으로 이어 보기통신 시리즈 13편UART 통신 완벽정리 | 전기전자, 전자과, 임베디드 개발자 필수 시청FREE PDF무료 전자책 3권 받기이 주제를 한 권으로 이어서 읽고 싶다면. BLDC 모터 제어, 직렬통신, 센서를 책 분량으로 묶었습니다. 이메일만 남기면 바로 받습니다.무료로 받기 →