Table of contents

     

     

    이번에는 XCP로 수행하고자 하는 기능들 무엇인지 알아보겠습니다.

     

    XCP 자료들을 살펴보면, 자세한 설명들이 있지만, 결국 아래와 같이 4가지 역할을 위해 XCP 활용합니다.

     

    - PGM : 리프로그래밍

    - CAL : Calibration

    - DAQ : 측정

    - STIM : DAQ 유사한 절차로 동작하는 Calibration

     

     

     

     

     

    PGM(Flash Programming)

     

    #블록도상에서의 PGM ASAM 문서에서는 Flash Programming이라 명명되어 있습니다.

     

    XCP 아니더라도, 프로그램을 다운 받기 위해서는 메모리 주소, 프로그램 크기 등의 정보가 필요합니다.

     

    XCP에서는 이를 SECTOR 구분하고, SECTOR SECTOR_NUMBER에서 참조됩니다.

     

    Flash 프로그래밍에 활용되는 주요 CMD 아래와 같습니다.

     

      # CMD CTO내의 분류입니다.

     

    - PROGRAM_START

    - PROGRAM_CLEAR

    - PROGRAM_FORMAT

    - PROGRAM(반복)

    - PROGRAM_VERIFY

    - PROGRAM_RESET

     

     

     

     

    CAL(Online Calibration)

     

    #블록도상에서의 CAL ASAM 문서에서는 Online Calibration이라 명명되어 있습니다.

     

    CAL 기능에서는 메모리의 영역을 Sector, Segment, Page 구분하고 있습니다.

     

    Sector 물리적 레이아웃을 구분할 활용되고,

    Segment 논리적 레이아웃을 구분할 활용됩니다.

    Page Segment 내에 여러 존재할 있습니다.

     

    그리고 Page 동시에 하나의 Page에만 접근하도록 표준화되어 있습니다.

     

     

     

     

     

    DAQ(Synchronous data acquisition)

     

    #블록도상에서의 DAQ ASAM 문서에서는 Synchronous data acquisition 이라 명명되어 있습니다.

     

    DAQ XCP Master XCP Slave로부터 데이터를 획득하는 기능입니다.

     

    DAQ 데이터라는 것을 구분하기 위해, PID 범위는 아래와 같이 활용됩니다.

     

    0x00 <= PID <= 0xFB

     

     

     

     

    DAQ 기능을 수행하도록 하기 위해

    Event Channel, DAQ List, ODT, ODT Entry 등의 구조적 개념을 도입했습니다.

     

     

     

     

     

     

     

    STIM(Synchronous data stimulation)

     

    #블록도상에서의 DAQ ASAM 문서에서는 Synchronous data stimulation 이라 명명되어 있습니다.

     

    STIM XCP Master XCP Slave에게 데이터를 전달하는 기능입니다.

     

    ASAM 문서에서는 DAQ하고 전송 방향이 반대인 것이 핵심이라고 설명되어 있네요.

     

    XCP Master XCP Slave에게 데이터를 전달하고, 이것을 활용하는 매커니즘으로 보면, CAL 기능이 유사합니다.

     

    다만, 데이터 전송을 위한 논리적인 구조에서 차이가 있는 것으로 보여집니다.

     

    STIM 데이터라고 구분하기 위해, 활용되는 PID 범위는 아래와 같습니다.

     

    0x00 <= PID <= 0xBF

     

    #DAQ 활용되는 PID 범위가 다르므로 주의해야 합니다.

     

     

     

     

    DAQ 경우, 모니터링 하기 위해 사용된다는 것을 쉽게 이해할 있습니다.

    그런데, STIM 언제 사용하는 걸까요?

     

    Vector사는 Vector에서 발행한 XCP Reference book 이유를 설명해 두었습니다.

     

    - 특정 ECU(XCP Slave) XCP Master에게 데이터를 송신

    - XCP Master 획득한 데이터를 이용하거나 가공하여 다시 ECU(XCP Slave)에게 전달

    - ECU 전달받은 데이터를 자신의 알고리즘 Sequence 맞게 다음 절차를 수행

     

    , XCP Master 가상의 ECU처럼 활용할 쓰이는 것으로 보여지네요.

     

     

     

    참고사항

    • DAQ PID 범위 : 0x00 <= PID <= 0xFB
    • STIM PID 범위 : 0x00 <= PID <= 0xBF
    • MAX_DAQ, MAX_ODT, MAX_ODT_ENTRIES, MTU, MSS 등의 크기를 고려해야함