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비트 주소 |
주요 장점 | 간단하고 표준화되어 있음 | 세그먼트와 오프셋 주소로 메모리를 표현할 수 있음 |
주요 단점 | 선형 주소만 지원하기 때문에 대용량 메모리에는 부적합 | 일부 시스템에서는 세그먼트와 오프셋 주소를 사용하기 어려울 수 있음 |
'File (Bin, Hex, batch)' 카테고리의 다른 글
윈도우 IP 설정 (batch) (0) | 2024.08.29 |
---|---|
빅엔디안(Big-endian) vs 리틀엔디(Little-endian) (0) | 2024.03.25 |
Teraterm 실행하기 (batch) (0) | 2024.03.22 |
Xmodem 데이터 전송 (Frame) (1) | 2024.03.17 |
Xmodem 데이터 전송 (Protocol) (0) | 2024.03.17 |