FIELD NOTE · CRC
CRC는 비트 수와 polynomial만으로 정의되지 않습니다. 초기값, 입력·출력 반사, 최종 XOR, 바이트 순서가 모두 일치해야 펌웨어와 장비가 같은 결과를 만듭니다.
poly는 나눗셈 다항식, init은 시작 레지스터, refin/refout은 비트 처리 방향, xorout은 최종 XOR입니다. CRC-16/MODBUS와 CRC-16/CCITT는 16비트라도 이 조건이 다릅니다.
많은 CRC 규격은 ASCII 123456789의 check 값을 제공합니다. 구현을 검증할 때 먼저 이 문자열을 넣고 알려진 check 값과 비교한 뒤, 실제 패킷의 CRC 바이트 저장 순서를 확인합니다.
표시값이 byte swap되어 보이나요? CRC 값과 wire order가 다를 수 있습니다.
SUM8도 CRC인가요? 단순 합계 체크섬이며 오류 검출 성능이 다릅니다.
공백은 데이터인가요? HEX 모드에서는 구분자로 처리되지만 문자열 모드에서는 실제 문자일 수 있습니다.
FIELD NOTE · CRC
Width and polynomial are not enough. Initial value, reflection, final XOR, and byte order must all match.
poly, init, refin/refout, and xorout jointly define the variant. MODBUS and CCITT differ despite both being CRC-16.
Use ASCII 123456789 and compare its published check value before testing real frames. Then verify the transmitted byte order.
Byte-swapped? The numeric CRC and transmission order can differ.
Is SUM8 a CRC? No, it is a simpler checksum.