본문 바로가기
IT와 인터넷

인텔 Hex (Intel-Hex) file format

by I!i어★떤☆날★에Ι!i 2022. 3. 2.
반응형

Intel-Hex는 바이너리 파일을 전송하기 위한 파일 포맷으로, 16진수 ASCII (아스키) 코드로 되어 있다. 보통 Flash memory, EEPROM 등에 데이터를 전송하기 위해서 S-Record와 함께 가장 많이 사용된다.

 

 

S-레코드 포맷 : Motorola S-record file format

S-Record는 모토로라가 1970년대 개발한 파일 포맷으로, 16진수 ASCII (아스키) 코드로 되어 있다. 보통 Flash memory, EEPROM 등에 데이터를 전송하기 위해서 Intel-Hex 포맷과 함께 많이 사용된다. 이 파일 포

www.metacode9.com

 

이 파일 포맷은  Intex hex format으로 불리며, 확장자는 HEX다. 보기 쉽고 간단하게 되어 있어 많이 이용되고 있다.

 

* Intel-Hex 파일 포맷

 

파일의 기본형식은 다음과 같다.

Intex HEX format
Intex HEX format

 

Intel Hex포맷은 Start code, Byte count, Address, Record type, Data, Checksum, end character로 구성되어 있다.

 

인텔-Hex도 SRecord와 동일하게 헤더를 제외한 모든 포맷은 ASCII(아스키)로 표현하고 있다.

헤더는 처음 ':' 문자가 가장 앞에 고정값으로 들어간다. ':'문자는 ASCII로 0x3A이다.

':' 이외의 문자는 모두 ASCII 포맷이다. 예를 들어, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F로 표현되며 ASCII로 봤을 때, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46으로 표현될 수 있다.

 

다음의 Intel-HEX 파일 예를 보자.

Intel-Hex format
인텔Hex 형식

ASCII로 보면 0x3A 0x30 0x30 ~ 와 같이 ASCII로 표현하고 있다. 이는 S-Record 포맷과도 매우 유사하다.

 

 

반응형

 

* Intel-Hex 상세

이제 인텔 Hex를 상세하게 다루어 보겠다.

 

< Start code >

Start code는 콜론( : ) 한 문자를 사용한다. 고정된 문자이다.

 

< Byte count >

Byte count는 Data 영역의바이트 수이다. 1바이트 값이 ASCII 2바이트로 표현된다. Intel-Hex 파일은 주로 16 또는 32 값을 사용한다.

 

< Address >

16 bytes로 표현되는 주소정보 이다. Address에 대한 Offset 값으로 사용한다. 

만약 이 파일이 0x1000 0000 주소에 쓰는 파일일 경우, 0x1000 0000 주소부터 Address만큼 offset 하여 사용한다.

 

< Record type >

파일의 헤더 타입은 00 ~ 05 까지 6종류의 타입이 있다.

00 (Data. 데이터)
실제 데이터를 갖고 있는 데이터 타입이다. 16비트의 주소 + 데이터 형식으로 구성된다.
16 or 20 or 30 비트 주소 형식에 사용될 수 있다.

01 (End of File. 파일의 끝)
파일의 마지막 줄에 꼭 있어야 한다. 데이터 필드는 없다. 따라서 바이트 개수는 00이고, 주소 필드도 보통 0000이다.
16 or 20 or 30 비트 주소 형식에 사용될 수 있다.

02 (Extended Segmemt Address. 확장된 세그먼트 주소)
최대 1M의 주소를 지원하기 위한 타입이다.
주소 필드는 무시된다(보통 0000 사용)
20 비트 주소 형식에만 사용된다.

03 (Start Segmemt Address. 시작 세그먼트 주소)
주소 필드는 무시된다(보통 0000 사용)
CS:IP
20 비트 주소 형식에만 사용된다.

04 (Extended Linear Address. 확장된 선형 주소)
최대 4기가 바이트 주소를 지원하기 위한 타입이다.
주소 필드는 무시된다(보통 0000 사용)
20 비트 주소 형식에만 사용된다.

05 (Start Linear Address. 시작 선형 주소)
주소 필드는 무시된다(보통 0000 사용)
20 비트 주소 형식에만 사용된다.

 

< Data >

Data실제 데이터를 ASCII로 표현한다. 예를 들어 Hex값 0x19는 ASCII값 1과 9로 표현한다.

 

< Checksum >

Checksum은 전체 데이터 count + address + record type + data의 2의 보수이다. 예를 들어 다음과 같은 데이터가 있다고 가정하자.

:100102000102030405060708090AFFFFFFFFFFFFBF

0x10 + 0x01 + 0x02 + 0x00 + 0x01 + 0x02 + 0x03 + 0x04 + 0x05 + 0x06 + 0x07 + 0x08  + 0x09 + 0x0A + 0xFF + 0xFF + 0xFF + 0xFF + 0xFF + 0xFF = 0x641이다. 이를 2의 보수로 계산하면, 0x100 - 0x41 = 0xBF 로 계산할 수 있다.

 

< Last character >

0x0D, 0x0A

Last마지막 문자는 마지막 문자로 많이 사용되는 '\r\n'이다.  Carrriage Return + Line Feed이다.

Hex값으로는 0x0D 0x0A 이다. 일반 문자는 아니기 때문에, HEX파일을 메모장 등으로 보면 보이지 않는다. 

 

 

반응형

댓글