본문 바로가기
자동차 임베디드 SW/Classic Autosar_이슈들

E2E CRC Initial value, Xor Value 의미

by 존버매니아.임베디드 개발자 2024. 7. 17.
반응형

※ CRC 계산값 참고하기 좋은 사이트 링크.

Sunshine's Homepage - Online CRC Calculator Javascript (sunshine2k.de)

 


오토사의 E2E 문서를 보면 E2E Profile 별로 어떤 CRC 알고리즘을 사용하는지가 적혀있다.

근데 Polynomial은 CRC 계산에서 원래 당연히 사용되는거니까 뭔지 이해가 되는데,
Initial Value, Xor Value라는게 보이는데 이게 뭔지 도통 이해가 안됐다.

위 표에서 폴리노미얼이 1D인데,
이것을 다항식으로 고치면
X^8 + X4 + X3 + X2 + 1 이다.
CRC 8이니까 제일 앞에 X^8은 자동으로 붙고
1D를 2진수로 바꾸면 0001 1101 이니까 이걸 X형태로 바꾸면 X4 + X3 + X2 + 1 이 된다.

그러면, Initial Value란 무엇인가?

이것은 어떻게 적용하는거냐면.

내가 계산하려는 input data가 있다면 제일 앞 최상단의 1바이트(MSB쪽) 값을 Initial value랑 XOR 연산을 한 후. 그 뒤에 지정된 폴리노미얼로 CRC를 구한다.

그렇게 구해진 최종적인  CRC결과값에 마지막으로 다시한번  XOR Value와  Xor연산을 한다.

그러면 그 결과값이 바로 SAE J1850의 연산결과이다.


예를 들어서,
내가 CRC를 계산하려는 Input data가 2바이트.   0x11 0x22 라고 하자.

이 데이터에 대해 SAE-J1850 CRC 연산을 하면 그 결과값이 0xFB 이다. ( 계산기 사용해서 구한 결과)

 

근데

SAE-J1850이 아니라, Initial value와 XOR Value 없이 그냥 Polynomial 값만 0x1D 인 CRC-8 알고리즘으로

SAE-J1850과 같은 연산결과를 얻으려면 다음과 같이 작업하면 된다.

 

1.  0x11 0x22 데이터중에 가장 최상단 바이트인 0x11 에 대해서 Init value인 0xFF와 Xor 연산을 수행한다.

  0x11 ^ 0xFF   -> 0xEE

 

2. 원래 Input Data가 0x11 0x22 였는데,  앞의 연산결과를 적용해서 Input Data를 0xEE 0x22로 바꾼다.

 

3. 0xEE 0x22 에 대해서 CRC 값을 구한다(Polynomial 0x1D 적용)  ->  0x4

 

4. 결과값 0x4를 xor value인 0xFF와 다시 xor 연산한다.

0x4 ^ 0xFF  ->  0xFB

 

SAE-J1850 과 동일한 결과값을 얻음을 알 수 있다.

반응형

'자동차 임베디드 SW > Classic Autosar_이슈들' 카테고리의 다른 글

Dem Healing개념  (3) 2023.10.18
Dem Aging 개념.  (1) 2023.10.17
DTC status mask 및 DEM  (0) 2023.09.26
진단관련 DEM,DCM 함수들  (0) 2023.09.12
Autosar DEM. Event Memory 개요  (0) 2023.08.02