讀懂 Intel Hex 文件


1、問題描述

在生成Atmega128的固件程序時,常指定格式為"intel-extended",如下:

今天要生成一版新的含Boot的程序,這就涉及到hex的拼接工作。

那首先要搞清楚的問題就是intel hex的具體格式是什么?

 

2、 intel hex 的具體格式

Intel Hex文件是遵循Intel Hex文件格式的ASCII文本文件。
在Intel Hex 文件的每一行中都包含了一個hex記錄。這些記錄是由一些代表機器語言代碼和常量的16進制數據組成。

Intel Hex文件常用來傳輸要存儲在ROM、EPROM或者Flash中的程序和數據。大部分的EPROM編程器都能使用Intel Hex文件。

Intel Hex由任意數量的十六進制記錄組成。每個記錄包含6個域,它們按以下格式排列。

Start Code(冒號): 每個 Intel HEX 記錄都由冒號開頭
Byte count(本行數據長度):是數據長度域,它代表記錄當中數據字節的數量
Address(本行數據的起始地址):是地址域,它代表記錄當中數據的起始地址
Record type(數據類型): 是代表HEX記錄類型的域,它可能是以下數據當中的一個:
  00-數據記錄
  01-文件結束記錄
  02-擴展段地址記錄
  03-開始段地址記錄
  04-擴展線性地址記錄
  05-開始線性地址記錄
Data(數據): 是數據域,一個記錄可以有許多數據字節.記錄當中數據字節的數量必須和數據長度域中指定的數字相符
Checksum(校驗碼): 是校驗和域,它表示這個記錄的校驗和.校驗和的計算是通過將記錄當中所有十六進制編碼數字對
的值相加,以256為模進行補足。

注:目前我看到的hex文件末尾都以以下內容結束。
:00000001FF

 

3、關於擴展段地址記錄

第一行中的021000 ,其中的02表示擴展段地址記錄,擴展段的地址為1000。
第二行至以下行中的所有地址如,E000 其實際地址為0xE000 + 0x10000 = 0x1E000


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM