XCP 프로토콜의 기초에 대해 설명 전 필요한 배경 메모리 지식은 아래와 같다.
- 메모리 종류
- RAM
- 특징
- 전원공급이 될 동안만 정보를 가질 수 있다. – 휘발성.
- 계산한 데이터나, 임시적인 정보를 잠시 저장하는 데 사용된다.
- 읽기/ 쓰기 액세스가 언제든 가능하다. – 더 쉽다.
- 특징
- Flash Memory
- 특징
- 코드 및 데이터를 전원공급 없이 장기적으로 저장하기 위함.
- 개별 바이트에 대한 읽기/쓰기 액세스가 언제든 가능하다. (쓰기 액세스에 대해서는, 블록단위 소거가 수반 될 수 있다)
- 새로운 내용을 쓸 때에 블록 단위로만 가능하다.
- 수명이 제한적이다. (소거 사이클의 최대 수로 계산한다. ) (소거 사이클 ; 메모리 셀에서 1을 지워주는 작업)
- 1의 기록법
- 전자는 터널 다이오드를 통해 펌핑 된다.
- 전자가 전기적으로 절연된 레이어를 거쳐 메모리 위치로 전송된다.
- 절연 레이어 뒤에 전자가 존재하게 되면, 전기장이 발생 이를 1로 읽게 된다. → 절연 레이어 뒤에 전자가 없으면 0으로 읽힌다.
- 0의 기록법
- 1과는 다르게, 별도 소거루틴을 이용한다.(1을 소거하는 것)
- 절연 레이어 뒤에있는 전자가 방전된다.
- 소거 루틴의 반복시 절연 레이어에 손상 발생 – 1의 소실이 발생할 수 있다. → ECU에서는 허용 가능한 플래시 사이클 수가 극히 제한되어 있다. (ECU 양산시 한자리수로 지정하기도 함.) – 플래싱 횟수 제한.
- 특징
- EEPROM – 추후 작성
- RAM
XCP 프로토콜 기초
ASAM 인터페이스 모델의 Interface 1 에서는 슬레이브와 마스터 간에 명령어 및 데이터 송수신에 대해 설명하고 있다.
특정 물리적 전송 레이어로부터 독립성을 유지하기 위해 XCP는 프로토콜 레이어와 전송 레이어 (Transport Layer) 를 구분하고 있다.
전송 레이어에 따른 분류 : XCP on CAN, XCP on FlexRay, XCP on Ethernet 등
새로운 전송 레이어로 확장할 수 있다. -> Transport Layer 에 다양한 통신방식 지원
XCP 프로토콜의 설계 원칙
XCP 프로토콜의 설계 원칙은 다음과 같다.
- ECU 내 최소자원 사용
- 효율적 통신
- 심플한 슬레이브(ECU 혹은 Runtime) 구현
- 소수의 파라미터만으로 플러그 앤 플레이 구성
- 확장성
XCP 의 주요 기능
XCP 의 핵심 기능은 슬레이브 (ECU 혹은 Runtime)의 메모리에 읽기/쓰기 접근이 가능하다는 점이다.
Read Access 를 통한 측정(Measurement)
사용자는 읽기 접근을 통해, ECU 내부 파라미터의 응답시간을 측정 할 수 있다.
ECU 는 독립적인 Cycle Time 을 갖는 시스템으로, 파라미터는 특정 시간 간격에서만 변경 될 수 있다.
※ Cycle Time : 프로세서가 값을 계산해서 RAM 에 Update 하는데 걸리는 시간
XCP 의 최대 강점중 하나는 ECU 내에서 프로세스의 흐름, 이벤트, 동시적으로 변하는 RAM에서 측정값을 구할 수 있다는 점이다.
Event-Synchronous measurement;이벤트-동기화 측정 : ECU에서 시간 의존적인 프로세스의 흐름과 변화하는 값의 직접적 관계를 평가할 수 있다. – 시간에 따른 프로세스 흐름, 그에 따른 값을 판단.
Write Access 를 통한 캘리브레이션 (Calibration)
사용자는 쓰기 접근을 통해 슬레이브 (ECU 혹은 Runtime) 에서 알고리즘의 파라미터를 최적화 시킬 수 있다.
Write Access 는 주소를 기반으로 한다.
XCP 마스터와 슬레이브 간 통신에는 메모리에 있는 주소를 참고로 한다.
파라미터의 측정은 기본적으로 마스터가 슬레이브에 다음과 같이 요청함으로서 구현된다.
-> Master 요청 : Memory address 0x1234 의 값을 보내라
특정 파라미터의 캘리브레이션, 슬레이브에 대한 쓰기 접근시에는 슬레이브가 다음과 같이 요청한다.-> Slave 요청 : Memory address 0x9876 에 있는 값을 5 로 설정해라
ECU 에서 XCP 슬레이브를 반드시 사용할 필요는 없다.
- 모델기반의 개발환경이나, HIL/ SIL환경 또는 JTAG, NEXUS, DAP와 같은 인터페이스를 디버깅 해 ECU 메모리에 액세스하는데 사용하는 하드웨어 인터페이스 등과 같은 다른 환경에서 구현할 수 도 있다.
Runtime 에서 파라미터를 수정해야 하는 경우, 이 파라미터는 RAM 에 있어야 한다.
// x : 센서 값.
// y : 센서값에 factor(a) 인수와 offset(b) 값을 통해 계산 된 값.
a = 5;
b = 2;
y = a * x + b;
Description
- x : 센서값에 해당, 어떤 시점에서 Application은 센서값을 폴링해야 하며, 이 값은 x 파라미터에 할당된 메모리 위치에 저장된다. Runtime에서 변경될 수 있으므로, RAM에 위치한다.
- y : a, b (각각, factor, offset), x(센서값)을 통해 계산한 값. x에 따라 y도 변화(재 계산됨)하므로, RAM에 위치한다.
- a : 인수(factor) Runtime에서 변화하지 않는 상수값. Flash Memory에 위치한다.
- b : 오프셋(offset) Runtime에서 변화하지 않는 상수값. Flash Memory에 위치한다.
x, y, a, b의 위치(주소값)는 컴파일러 / 링커를 통해 설정한다. – unique address 가 할당된다.
컴파일과 링킹을 마치면, 링커 맵(Linker-map) 파일이 생성되는데 각 파라미터에 대한 객체명, 데이터 유형(data type), 주소값(address)을 기록한다. – 링커맵 파일의 포멧은 다양하게 존재하며, 필수적인 것은 객체명과 주소이다.
Summary
- 메모리 내용에 대한 읽기/쓰기 액세스는 XCP 프로토콜의 매커니즘을 이용하면 가능하다.
- 읽기/쓰기 액세스는 주소 기반으로 동작한다.
- 읽기 액세스는 RAM에서 파라미터를 측정할 수 있도록 한다.
- 쓰기 액세스는 RAM의 파라미터를 캘리브레이션 할 수 있도록 한다.
- XCP는 ECU에서 측정을 이벤트에 동기화 시켜 실행할 수 있도록 한다.
- 측정값들은 서로 연관성을 갖게 된다.
- 측정을 재 시작 할 때마다 측정할 신호를 임의로 선택할 수 있다.
- 쓰기 액세스에서 캘리브레이션이 필요한 파라미터는 RAM에 저장되어야 한다.
Reference
Andreas Patzer, Rainer Zaiser, XCP-ECU 개발을 위한 표준 프로토콜 - 프로토콜 기초와 응용분야 (Vector, 2014)
'기타 > XCP (파라미터 측정 및 캘리브레이션)' 카테고리의 다른 글
06. XCP 전송 레이어 (0) | 2022.01.04 |
---|---|
05. DTO 교환 - 동기화 데이터 교환 (0) | 2022.01.04 |
04. CTO 교환 (0) | 2022.01.03 |
03. XCP 프로토콜 레이어 (1) | 2022.01.02 |
01. XCP 개요 (0) | 2021.12.31 |