ABOUT ME

-

  • DoIP (Diagnostic over Internet Protocol) - 하드웨어 설정
    diagnostic 2025. 4. 7. 22:14

    시작하기 전에

     

    나는 환경, 에너지, 자동차, SDV, 통신, 사이버 보안, ai 코딩에 관심이 있다. 나는 이전 글들에서 SDV (Software Defined Vehicle)를 한두 번 언급한 적이 있다. 나는 아래 생각을 갖고 있다. 

     

    2025년 자동차 산업은 SDV (Software Defined Vehicle)로 패러다임 전환을 진행 중이다. “나이든 개에게는 새 재주를 가르칠 수 없다. (You cannot teach an old dog new tricks.)” 라는 서양 속담이 있다. (맞는 비유는 아니지만 강조를 위해 이를 차용하자면) 지난 시대의 자동차는 처음부터 늙은 개와 같다. 주인과 함께 하는 동안 새 재주를 배우지 못한다. (이런 것이 나쁘다고 말하려는 의도가 아니다. 그냥 그렇다는 것이다.) SDV 시대의 차는 어린 개다. 새로운 재주를 배운다. 스마트폰은 SDX (Software Defined Anything) 시대를 열었고 이번에는 Vehicle 차례다.   

     

    내가 차량 내부 통신에 관심이 있고, 이에 대해서 블로깅을 하는 이유는 아래와 같다.


    차는 소프트웨어 업그레이드로 새 재주를 배운다. 새 재주를 개발하는 것은 누구의 몫인가? 현실적으로, 자동차사와 협력사에 근무하는 연구원들의 몫이다. 이제 자동차 산업에 들어온 지 몇 년 되지 않은 신입 엔지니어들은 향후 짧아도 10년은 SDV라는 구간을 통과할 것이다. 수험생들에게 국영수가 있다면 이들에게 국영수에 해당하는 것은 무엇일까? 
    영은 외국어라고 생각한다. 대한민국 자동차 산업은 그간의 노력으로 상당한 지식과 경험을 보유하고 있다. 하지만 외국과의 교류는 여전히 필요하다. 더 많이 필요하다고 주장해도 안전할 것이다. 
    국은? 자동차 시스템들에 관한 지식과 통신을 다룰 줄 아는 “스킬”이라고 생각한다. 수는? 코딩 “스킬”이라고 생각한다. 여기서 말하는 코딩은 인공 지능의 도움을 받는 ‘ai 코딩’이다. 선반의 작동 원리와 사용법을 이해하는 것이 지식이라면, 선반으로 재료를 가공해서 부품을 만들어 낼 수 있는 능력을 나는 스킬이라고 표현했다. SDV 시대에 자동차 산업 신입 엔지니어들은 자동차 시스템들과 통신에 관한 이해, ai 코딩 스킬이 필요하다. (매니저들은 삶의 중요한 일부인 모빌리티에 대한 이해와 사람에 대한 애정을 갖고 사람과 환경을 위한 모빌리티를 기술로 어떻게 만들어 낼 지를 고민해야 한다고 생각한다. 감히 말하자면 :-)

    내 설명이 이 스킬들을 개발하려는 사람들에게 조금이라도 시간과 노력을 아껴줄 수 있기를 바라는 마음이다.

     

    DoIP는 이전에 설명한 UDS와 연결된다. 이전 UDS 설명에서 진단 통신 메시지들은 CAN 통신으로 송수신 되었다. DoIP에서 진단 통신 메시지들은 이더넷으로 송수신 된다. 

    • CAN 메시지는 헤더(header)와 페이로드(payload)로 구분된다. CAN 메시지의 페이로드는 "UDS 진단 통신 메시지"이다.
    • CAN은 단층  구조이다. 이더넷은 다층 구조이다.
    • 이더넷 메시지도 헤더와 페이로드로 구분된다. 이더넷 층 위에는 IP 층이 있다. 이더넷 메시지의 페이로드는 IP 메시지이다.  (메시지가 아니라 별도 용어가 있다. 내 설명에서는 새 용어 도입의 이점이 없다고 생각하여 메시지라고 한다. CAN과 비교를 위해서다.)
    • IP 메시지도 헤더와 페이로드로 구분된다. IP 층 위에는 TCP 층이 있다. IP 메시지의 페이로드는 TCP 메시지이다.
    • TCP 메시지도 헤더와 페이로드로 구분된다. TCP 메시지의 페이로드는 "UDS 진단 통신 메시지"이다.
    • 이를 그림으로 표현하면 아래와 같다.

    CAN 메시지의 페이로드는 UDS 진단 통신 메시지다.

     

    이더넷 메시지의 페이로드는 IP 메시지이다. IP 메시지의 페이로드는 TCP 메시지이다. TCP 메시지의 페이로드가 UDS 진단 통신 메시지이다.

     

     

    CAN 통신의 경우, TP (Transport Layer) 설정에서 CAN 메시지 헤더에 해당하는 설정을 했다. 그리고 UDS 서비스들을 설정했다. 이 설정들을 바탕으로 진단 서비스 요청 메시지를 전송하고 응답 메시지를(들을) 수신하여 해석하였다. 서비스들을 묶어 서비스 플로우라는 것을 만들어서 프로그래밍 같은 복합 서비스 작업을 자동화 하였다. 

     

    DoIP의 경우, 역시 TP 설정에서 이더넷 메시지 헤더, IP 메시지 헤더, TCP 메시지 헤더 설정을 한다. UDS 서비스들의 설정, 진단 서비스 요청/ 응답, 진단 플로우 구성과 실행은 CAN의 경우와 동일하다. (이더넷이라고 해서 CAN에서 사용하던 UDS를 버리고 진단 통신을 다시 개발하지 않도록 하는 것이 당연히 DoIP스펙 개발의 목적들 중에 하나이었지 않았겠는가?)

     

    이더넷이 도입된 이유를 설명하려고 SDV를 끄집어냈는데 ... 지금 그 설명을 하면 서론이 너무 길어질 것 같다. 그 이야기는 다음에 써야겠다. 

     

    이번 포스팅에서는 DoIP를 위한 하드웨어 설정을 설명한다. 다음 포스팅에서 DoIP의 TP 설정을 설명한다.

     

     

    개요

    • 채널 선택
    • 하드웨어 종류
    • 네트워크 하드웨어 설정

     

     

    채널 선택

    • 하드웨어를 이더넷 케이블과 PC의 USB 포트에 연결한다. 나는 자동차 이더넷으로 연결할 제어기가 없어서 RJ45 포트에 인터넷 이더넷 케이블을 연결하였다. 이더넷 케이블을 연결하지 않은 상태에서도 하드웨어 설정이 가능했다.

    • 메인 메뉴/ Hardware/ Channel Selection 버튼을 선택하여 Channel Selection(채널 선택) 창을 연다.

    • (CAN 하드웨어의 채널 선택과 같은 방식이다. )
    • 채널 선택 창에서 Ethernet을 선택한다. 
    • 채널 카운트를 설정한다. 
    • Hardware Channel Selection에서 드롭-다운 리스트를 클릭하여 PC에 연결된 하드웨어를 선택한다.

     

     

    하드웨어 종류

    • 자동차 이더넷은 일반 이더넷과 물리적으로 다르다.
      • 일반 이더넷은 속도와 전원 공급 여부에 따라 2쌍 (4) 와이어나 4쌍 (8) 와이어로 되어있다.
      • 자동차 이더넷은 (CAN과 마찬가지로) 1쌍 (2) 와이어로 되어있다. 그래서 자동차 이더넷은 100BaseT1 처럼 표현한다. 마지막에 1은 1쌍의 와이어를 의미한다.
      • CAN과 마찬가지로 1쌍의 꼬인(twisted) 와이어를 사용한다. 일반 이더넷의 와이어들도 1쌍씩 꼬여있다. 
    • 자동차 이더넷에는 두 종류의 물리 계층이 있다. MATEnet과 H-MTD(a.k.a 로젠버그)이다. 둘은 서로 호환되지 않는다. 즉, 연결하려는 자동차 이더넷의 형식을 알아야 한다.
    • 자동차용 이더넷을 일반 이더넷으로 변환해주는 장치를 미디어 컨버터라고 한다. 이는 단순히 일반 이더넷과 자동차 이더넷을 연결해 준다. 
    • 차량 이더넷 통신을 PC에서 보려면 (미디어 컨버터가 아닌) 인터페이스 장치가 필요하다. 내가 사용하는 토선의 TE1051은 PC와 USB로 연결된다. 이 장치는 PC와 자동차 이더넷을 연결하거나, PC와 일반 이더넷을 연결한다. 

     

    네트워크 하드웨어 설정

    • 메인 메뉴/ Hardware/ Network Hardware 버튼을 클릭하여 네트워크 하드웨어 설정 창을 연다.

     

    • 하드웨어 설정 창의 왼쪽 영역에서 앞에서 설정한 Ethernet 채널을 선택한다.

     

    • Physic Type을 선택한다. 100Base-Tx/ 1000Base-T는 RJ45 커넥터로 연결되는 일반 이더넷이다. 100/1000Base-T1은 자동차용 이더넷이다. 둘 중에 하나만 선택 가능하다.

    • Master/ Slave 여부를 선택한다. TSMaster가 진단기 역할을 하는 경우 (대부분), Master를 선택한다.

    • Speed를 설정한다. 속도를 자동으로 설정하도록 하려면 Auto Negotiation을 체크한다. 속도를 알면 속도를 선택한다.

     

    • 나머지 설정은 정확히 모르겠다. 변경하지 않고 사용한다.

    • Enable Promiscuous Mode는 필터 설정과 무관하게 모든 메시지들을 PC로 통과시킬 때 체크한다.

     

    TP 설정은 다음  블로그에서 설명한다. DoIP (Diagnostic over Internet Protocol) - TP 설정 :: hsl's tsmaster 사용기