그라운드 임베디드 EN 유튜브 구독

노트 / 자동차 소프트웨어

진단 통신: UDS로 고장 코드 읽고 업데이트하기

정비소 진단기가 ECU와 대화하는 표준 UDS. 서비스 ID, 고장 코드(DTC), 세션과 보안 접근, 펌웨어 플래싱.

GROUND EMBEDDED · 정리 노트자동차 SW 04진단 통신SID서비스용도0x10진단 세션 제어기본 / 확장 / 프로그…0x11ECU 리셋

UDS (ISO 14229)

요청 0x22데이터 읽기DIDF1 90응답 0x620x22 + 0x40DIDF1 90데이터
UDS 요청과 응답. 긍정 응답의 첫 바이트는 요청의 서비스 번호에 0x40을 더한 값입니다.

진단기가 요청을 보내고 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 모터 제어, 직렬통신, 센서를 책 분량으로 묶었습니다. 이메일만 남기면 바로 받습니다.무료로 받기 →