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