작성
·
32
0
혹시 Transfer Data service ($36)에서 ECU단에서 CAN missing packet이 발생할 경우 해당 block sequence counter 를 재전송하는 recovery mechanism을 UDS에 있나요?
아그리고 padding byte의 경우에는 만약 ISOTP의 경우에는 FF가 아니라 0xCC로 해야하는 것인가요? 아니면 UDS에서 0xFF로 padding 을 권유하는 것인가요?
답변 2
0
안녕하세요, 강의를 수강해주셔서 감사합니다.
recovery mechanism?
우선 따로 recovery를 어떻게 해라 라는 말이 따로 기재되어 있지 않습니다. 하지만, TIER 1 제조업체에서는 NRC를 받고 ECU가 데이터를 제대로 수신받지 못하였을 때, 따로 recovery mechanism을 수행하는 것으로 알고 있습니다. ( 예를 들어, 특정 블록을 받지 못하여 NRC를 내보냈을 때, 해당 블록을 다시 보냄 )
padding?
ISO-TP를 기반으로 0xFF의 패딩 값을 사용합니다. 0xCC는 보지 못하였습니다.
궁금하신 점 있으시면 편하게 물어봐주세요. 감사합니다 !
0
안녕하세요, 인프런 AI 인턴입니다. 박성진님께서 UDS의 Transfer Data 서비스와 관련된 두 가지 질문을 주셨습니다. 아래에서 각각의 질문에 대한 답변을 드리겠습니다.
UDS 표준에서는 CAN 버스에서 데이터 전송 중 패킷 손실이 발생했을 때의 오류 처리 및 재전송 메커니즘을 명시적으로 정의하고 있지는 않습니다. 그러나 일반적으로 사용되는 방법 중 하나는 “단편화 및 재전송 관리”를 ISO-15765-2(ISO-TP) 프로토콜을 통해 구현하는 것입니다. 이는 N_PDU를 사용하여 손실된 데이터의 종료와 재전송을 처리합니다. 각 데이터 블록에 대한 순서번호(counter)를 사용하여 송신 측과 수신 측이 데이터를 동기화하는 방법입니다. 따라서, 직접적인 UDS 정의라기보다는 하위 프로토콜의 기능을 사용하여 구현됩니다. 유사한 질문 내용이 있는 Transfer Data 관련 질문 링크를 참고해 보세요.
일반적으로 UDS와 ISO-TP에서는 패딩 바이트로 0xFF를 사용하는 것이 일반적입니다. 이는 데이터 프레임 내의 여유 공간을 채우는 목적으로 사용됩니다. 0xCC를 사용해야 하는 상황이나 권장사항은 표준에서는 제공되지 않습니다. 다만, 특정한 시스템 구현이나 ECU의 요구사항에 따라 다르게 지정될 수 있으므로, 해당 시스템의 명세서 또는 ECU 제조사의 가이드를 참조하는 것이 좋습니다. 하지만, 일반적인 경우 0xFF 패딩을 따르는 것이 표준 관행입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
UDS 상위 제어기를 어떻게 설계하느냐에 달렸네요. 물론 하위 제어기를 어떻게 UDS 를 추가로 해당 기능을 추가하는 지도 봐야할 것 같지만....
block sequence counter 가 +1 씩 증가하는 룰이 있을 때, 만약 transfer data 도중에 하나의 CAN missing packet이 발생하여서 ISOTP reassembly가 실패하고, 그리고 그 block sequence 가 1씩 증가하지 않았을 때, 2개의 상황이 발생하겠네요. 1) response가 없을 시, block 하나를 건너뛰고 다음 block을 진행하게끔 설계되거나,
2) 상위 제어기가 계속 missing packet으로 인해 하위 제어기로 부터 response를 받지 못해 기다리고 있는 경우, 특정 타임아웃을 발생시켜서 transfer data 현황을 받아서 재전송시키거나.
기존에 있는 UDS를 이용해서 로직을 꾸며야겠네요.
아 그리고 padding은 ISOTP 권장 padding 이 0xcc로 알고 있어서, 혹시 UDS에서 따로 권장하는 padding byte가 혹시 있는 것이 있는 지 궁금해서 문의드린것이에요. 그냥 회사 내부 protocol을 따르면 될것 같네요.