Posts
All the articles I've posted.
-
DoIP Firmware Download에서 갑자기 문제가 터지는 이유
DoIP firmware download에서는 작은 진단 요청 때 보이지 않던 TCP stream 처리, large payload, timeout, flash latency 문제가 한꺼번에 드러난다. TransferData 흐름과 parser 안정성 관점에서 정리한다.
-
DoIP Negative Acknowledge, UDS 에러랑은 다르다
DoIP Negative Acknowledge와 UDS Negative Response는 완전히 다른 레이어의 신호다. DoIP NACK는 transport/protocol 문제이고, UDS 0x7F는 diagnostic application 문제라는 점을 로그와 파서 관점에서 정리한다.
-
lwIP pbuf가 가끔 터진다: PBUF_REF/POOL/RAM 수명주기와 zero-copy 함정
lwIP에서 네트워크가 '가끔만' 죽는 이슈는 pbuf 수명주기 문제인 경우가 많다. 특히 PBUF_REF/zero-copy를 섞으면 버퍼 재사용 타이밍이 한 번만 어긋나도 랜덤 크래시가 난다. pbuf 타입별 수명주기와 실무에서 자주 터지는 함정을 짧게 정리한다.
-
-
DoIP에서 ACK를 받았는데 UDS 응답이 없다: Diagnostic ACK/NACK를 제대로 쓰는 법
DoIP에서 Diagnostic ACK를 봤는데 UDS 응답이 없으면 보통 'ACK를 UDS 응답으로 착각'한 경우가 많다. DoIP ACK/NACK는 DoIP 레벨 신호고, UDS 응답(Positive/Negative/NRC)은 별개다. ACK/NACK를 디버깅 힌트로 쓰는 관점을 정리한다.
-
DoIP Functional Address는 왜 응답이 이상하게 보일까
DoIP functional request는 특정 ECU 하나를 대상으로 하는 physical request와 다르다. 하나의 요청에 여러 ECU가 응답할 수 있고, 응답 순서도 보장되지 않는다. 그래서 response collection, source tracking, timeout policy가 중요하다.
-
lwIP에서 ISR에서 바로 보내면 가끔 터진다: tcpip_thread로 넘기는 패턴 정리
이더넷 IRQ에서 패킷 받자마자 lwIP API를 호출하면, 어떤 보드에서는 잘 돌아가고 어떤 보드에서는 랜덤하게 죽는다. 원인은 대부분 컨텍스트/락 문제다. ISR에서 할 일과 tcpip_thread로 넘길 일을 분리하는 패턴을 짧게 정리한다.
-
DoIP 통신이 가끔 끊긴다: Alive Check / TCP Keepalive / Tester Present를 분리해서 보자
DoIP는 TCP라서 붙기만 하면 끝인 줄 아는데, 실무에서는 가만히 두면 어느 순간 세션이 끊기는 경우가 많다. Alive Check, TCP Keepalive, UDS Tester Present는 목적이 다르다. 끊김을 줄이려면 이 셋을 분리해서 설계해야 한다.
-
DoIP에서 Tester Present 왜 계속 보내는 걸까
DoIP 디버깅하다 보면 은근 자주 보이는 패킷이 하나 있다. 처음 보면 좀 이상하다. 특별한 데이터도 없음 ECU 제어도 아님 읽는 것도 아님 근데 계속 주기적으로 날아간다. 이게 바로: Tester Present Session 유지 메시지 다. 오
-
DoIP에서 Session Control 먼저 이해해야 하는 이유
DoIP 붙이고 나서 많이 하는 착각이 하나 있다. “연결됐으면 이제 다 되는 거 아닌가?” 근데 실제 ECU는 그렇지 않다. TCP 연결 성공 Routing Activation 성공 UDS 요청도 감 근데 중요한 기능은 안 된다. 왜냐면 아직 ECU
-
DoIP Security Access, 여기서부터 ECU 성격이 확 달라진다
DoIP로 기본 통신까지 붙고 나면 다음에 거의 반드시 만나게 되는 게 있다. 바로: Security Access Seed / Key Unlock 절차 이쪽이다. 처음에는 그냥 인증 정도로 보이는데, 실제로 들어가 보면 ECU마다 구현 차이도 크고 디