개발

jackryu 2009. 6. 10. 10:08

 

 

 

8051로 프로그램을 개발하다보면 많이 접하게 되는 intel hex format.

keil uvision으로 컴파일시 주로 intel hex type 으로 이미지를 생성하게 된다.

 

 

 

 

intel hex format

intel hex file의 예.

:10008000AF5F67F0602703E0322CFA92007780C361

:1000900089001C6B7EA7CA9200FE10D2AA00477D81

:0B00A00080FA92006F3600C3A00076CB

:00000001FF

위를 살펴보면

  • 첫번째 character (:) record start를 의미한다
  • 다음의 2 character record의 길이(length)를 말한다. 여기서는 0x10(16byte hex == 32 byte ascii hex)
  • 다음의 4 character load되는 번지를 말한다. 여기서는 0x0080
  • 다음의 2 character record type을 말한다. (아래를 참조)
  • 다음의 32 character record length에서 가리킨 data를 말함
  • 마지막 2 character checksum을 말함(sum of all bytes + checksum = 00).

Record types:

  • 00 - Data record
  • 01 - End of file record
  • 02 - Extended segment address record
  • 03 - Start segment address record
  • 04 - Extended linear address record
  • 05 - Start linear address record

 

* Extended linear address record(0x04)

 

)

 :0200000400609A
 :10000000B800008ED08ED88EC0BC00C0B864668E9A

 

여기서 ULBA Upper Linear Base Address란 말의 줄임말이다.

16bit 초과한 32bit 까지의 addressing에 대한 표현을 ULBA를 통해서 한다

 

위의 예에서 실제 hex값의 번지는

  0x0060 (upper address) + 0x0000( lower address) , 0x600000 부터의 값을 의미한다.

 

나머지것들에 대한 설명은 다음 기회에^^