본문 바로가기
File (Bin, Hex, batch)

Hex 파일 (Intel vs Motorola)

by rlawnsghtest 2024. 3. 25.

HEX 구조는 주로 플래시 메모리나 다른 장치에 프로그램이나 데이터를 업로드하거나 다운로드할 때 사용되는 파일 형식입니다. 이 형식은 텍스트 기반의 포맷이며, 메모리 영역의 주소와 해당 주소에 저장된 데이터를 표현합니다. Intel HEX와 Motorola S-Record(hex)은 모두 프로그램이나 데이터를 텍스트 형식으로 표현하기 위한 형식이지만, 사용되는 주소 표현 방식과 특정 시스템에 대한 호환성에서 차이가 있습니다. 선택하는 것은 주로 사용하는 시스템 및 도구의 지원과 편의성에 따라 다를 수 있습니다.

  • Intel Hex

Intel HEX 파일은 레코드(record)로 구성되어 있습니다. 각 레코드는 콜론으로 시작하며, 주소, 길이, 유형, 데이터, 그리고 체크섬(검사합)으로 이루어져 있습니다. 주소와 데이터는 16진수로 표현됩니다.

 

아래는 Intel HEX 파일의 기본적인 구조를 보여줍니다:

:BBAAAATTDDDDDDDDDDDDDDDDDDDDDDDDDDCC

 

여기서 각 부분은 다음을 나타냅니다:

  • :: 레코드의 시작을 나타내는 마커
  • BB: 바이트 수 (레코드의 데이터 부분의 길이를 바이트 단위로 표시)
  • AAAA: 주소 (메모리 영역의 시작 주소)
  • TT: 레코드 유형 (00은 데이터 레코드, 01은 종료 레코드 등)
  • DD...DD: 데이터 (실제로 저장된 데이터)
  • CC: 체크섬 (레코드의 오류를 감지하기 위한 검사 합)

예를 들어, 아래와 같은 Intel HEX 레코드가 있다고 가정해봅시다.

:10010000214601360121470136007EFE09D2190140

 

이 레코드는 다음을 의미합니다.

  • 바이트 수: 10 (16바이트)
  • 주소: 0100
  • 레코드 유형: 00 (데이터 레코드)
  • 데이터: 214601360121470136007EFE09D21901
  • 체크섬: 40

Intel HEX 파일은 여러 레코드로 이루어질 수 있으며, 각 레코드는 메모리의 다른 영역을 나타냅니다. 이 형식은 여러 편리한 편집기 및 프로그래밍 도구에서 지원되며, 주로 마이크로컨트롤러나 임베디드 시스템과 같은 작은 시스템의 프로그래밍에 사용됩니다.

  • Motorola S-Record Hex

Intel HEX와 유사하지만 약간의 차이가 있습니다. Motorola S-Record 형식의 예시를 살펴보겠습니다.

S31500000000214601360121470136007EFE09D2190140
S70500000000FA

 

여기서 각 라인은 다음과 같은 의미를 가집니다:

  • S: 레코드 타입을 나타냅니다.
  • 3: 데이터 레코드를 의미합니다. 이 숫자는 데이터의 길이를 나타냅니다.
  • 15: 주소의 바이트 수를 나타냅니다. Motorola S-Record는 16비트 주소를 사용하는 것이 일반적이므로 주소가 16비트일 때는 3이고, 32비트일 때는 7이 됩니다.
  • 000000: 데이터의 시작 주소를 나타냅니다.
  • 21 46 01 36 01 21 47 01 36 00 7E FE 09 D2 19 01: 실제 데이터입니다.
  • 40: 체크섬 값입니다.

마지막 라인은 종료 레코드를 나타내며, 이는 파일의 끝을 표시합니다.

Motorola S-Record와 Intel HEX의 차이점 중 하나는 주소 표현 방식입니다. Intel HEX는 선형 주소를 사용하는 반면, Motorola S-Record는 세그먼트와 오프셋 주소를 사용합니다. 또한 레코드 타입 및 데이터 표현 방식에도 약간의 차이가 있습니다.

 

다음은 Intel HEX와 Motorola S-Record(hex) 방식의 주요 차이점을 비교한 표입니다.

특성 Intel HEX Motorola S-Record (hex)
주소 표현 방식 선형 주소 (Linear Address) 세그먼트와 오프셋 주소 (Segment and Offset Address)
레코드 타입 데이터 레코드, 종료 레코드 등 데이터 레코드, 종료 레코드 등
데이터 길이 표현 데이터 길이 바이트 수를 직접 표현 데이터 길이 바이트 수를 직접 표현
주소 표현 길이 16비트 주소를 가정 16비트 또는 32비트 주소
주요 장점 간단하고 표준화되어 있음 세그먼트와 오프셋 주소로 메모리를 표현할 수 있음
주요 단점 선형 주소만 지원하기 때문에 대용량 메모리에는 부적합 일부 시스템에서는 세그먼트와 오프셋 주소를 사용하기 어려울 수 있음