Intel Hex概述
什么是Intel Hex文件
Intel HEX文件時遵循Intel HEX文件格式的ASCII文本文件。在Intel HEX文件的每一行都包含了 一個HEX記錄。這些記錄是由一些代表機器語言代碼和常量的16進制數據組成的。Intel HEX文件常用來傳輸要存儲在ROM 或者 EPROM中的程序和數據。大部分的EPROM編程器能使用Intel HEX文件。
Intel HEX文件組成
Intel HEX由任意數量的十六進制記錄組成。每個記錄包含5個域,它們按以下格式排列:
Start Code 每個Intel HEX記錄都由冒號開頭。
Byte count 是數據長度域,它代表記錄當中數據字節的數量。
Address 是地址域,它代表記錄當中數據的起始地址。
Record type是代表HEX記錄類型的域,它可能是以下數據當中的一個:
00-數據記錄
01-文件結束記錄
02-擴展段地址記錄
03-開始段地址記錄
04-擴展線性地址記錄
05-開始線性地址記錄
Data 是數據域,一個記錄可以有許多數據字節。記錄當中數據字節的數量必須和數據長度域中指定的數字相符。
Checksum是校驗和域,它表示這個記錄的校驗和。校驗和的計算是通過將記錄當中所有十六進制編碼數字對的值相加,以256為模進行以下補足。
完整的hex文件一般有頭行,數據行,結束行。
舉個例子:
:020000042A00D0
:10000000D1DC4B843410D7730D000000FFFFFFFFDD
:10001000FFFFFFFF500000005000002AD8CB000077
:
:
:040000052A000000CD
:00000001FF
第一行(頭行):
1) 02代表數據域長度為0x02,即2A 00兩個字節都為數據域
2)?0000代表地址,對于擴展線性地址而言,這個值一直為0000
3) 04代表擴展線性地址
4)?2A 00代表基址值為0x2A 00
5) D0代表校驗值
當擴展線性地址被讀取時,擴展線性地址值將會被保存,并且作用于后面從intel hex文件讀取的子記錄,同時擴展線性地址將一直發揮作用直到下一次擴展性線性地址讀取。
第二行(數據行):
1) 10代表數據域長度為0x10,即D1 DC 4B 84 34 10 D7 73 0D 00 00 00 FF FF FF FF 16個字節都為數據域
2)?0000代表地址偏移為0000
3) 00代表數據域
4)?D1 DC 4B 84 34 10 D7 73 0D 00 00 00 FF FF FF FF?代表數據值
5) 77代表校驗值
絕對地址記錄是擴展線性基址加上地址偏移所決定的,這第二行的數據絕對地址計算如下:
? ? ? ? ? 0000 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?地址偏移
2A00 擴展線性地址
-------------------
2A00 0000 絕對地址
倒數第二行(最后的數據行):
1) 04代表數據域長度為0x04,即2A 00 00 00 4個字節都為數據域
2)?0000代表地址偏移為0000
3) 05代表開始線性地址并且后面才是真正數據記錄。而真正的數據記錄個人理解為后面讀取的mbn數據。
4)?2A 00 00 00?代表真正數據記錄的基址
5) CD代表校驗值
最后行(結束行):
1) 00代表數據域長度為0
2)?0000代表地址將放入到內存的位置
3) 01代表文件結束
4)FF校驗值(01h + NOT(00h + 00h + 00h +01h))
總結
以上是生活随笔為你收集整理的Intel Hex概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自动搜索数据增强方法分享——fast-a
- 下一篇: Modbus协议栈应用实例之二:Modb