Embedded

[C 언어] [Embedded] Endian mode

Teodore 2023. 1. 14. 15:42
728x90

PC를 기반으로 C 언어를 사용하는 사람은 크게 상관 없지만 Embedded를 하는 사람이라면 반드시 알고 있어야 하는

Endian mode라는 것에 대해 오늘 알아보고자 한다. 

 

1. Endian mode

이것은 데이터가 어떻게 메모리에 저장되는지를 나타내는 방식이다. 

쉽게 생각해서 메모리를 기차라고 비유한다면 

 

위 그림처럼 사람들을 기차에 어떤 방향으로 순서대로 태울지에 관한 정의라고 보면 된다. 

대부분의 시스템에서는 Little endian mode를 사용하지만 대표적으로 모토롤라의 경우 Big endian mode를 사용한다. 

 

2. Endian mode를 왜 신경써야 하는가?

Endian mode를 신경써야 하는 이유는 위그림을 기준으로 설명해보자면, A~D까지의 사람이 T1이라는 기차에 탄 것은 동일하다. 그러나 C라는 사람을 저격한다고 가정했을 때 스나이퍼는 2번째 칸을 노려야 할지 3번째 칸을 노려야 할지 모른다는 것이 문제다. 이것을 정확하게 알기 위해 Endian mode를 신경쓰는 것이다. 

 

code 개념으로 돌아가서 아래 코드를 보면 

우리는 흔히 1byte 4개짜리 프레임 데이터가 있다고 가정했을 때 이 데이터를 carr의 형태로 저장하고 관리하게 된다. 

이것을 조금 더 간단하게 표현해보고자 int형 자료로 한번에 저장한다고 했을 때 위 처럼 carr[0]에는 0xCC가 들어가야 한다. 그러나 Big endian mode에서는 carr[0]에는 0xFF가 들어가 있을 것이다. 

 

따라서 코드 개발을 할때에는 반드시 어떠한 Endian mode에서도 동작할 수 있도록 호환성 있는 코드를 짜는 것이 중요하다. 

 

728x90