Intel HEX格式說明.doc_第1頁
Intel HEX格式說明.doc_第2頁
Intel HEX格式說明.doc_第3頁
Intel HEX格式說明.doc_第4頁
Intel HEX格式說明.doc_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Intel HEX格式說明Intel HEX文件是記錄文本行的ASCII文本文件。后綴為.hex在Intel HEX文件中,每一行是一個HEX記錄,它由十六進(jìn)制數(shù)組成的機(jī)器碼或者數(shù)據(jù)常量。Intel HEX文件經(jīng)常被用于將程序或數(shù)據(jù)傳輸存儲到ROM,EPROM。大多數(shù)編程器和模擬器使用Intel HEX文件。1.記錄詳解Intel HEX文件由若干個數(shù)據(jù)記錄組成,每個字符都是ASCII字符表示。每一條數(shù)據(jù)記錄以冒號開始,ASCII碼為0x3A,以一個回車和一個換行結(jié)束,回車的ASCII碼為0x0d,換行的ASCII碼為0x0a 。一個Intel HEX文件可以包含任意多的十六進(jìn)制記錄,每一行為一條記錄。每條記錄有六個區(qū)域。通常記錄的格式如下圖所示:記錄的一般結(jié)構(gòu)下面是一個記錄的格式。:llaaaattdd.cc字符:llaaaattddcc英文描述RECORDMARKLOADRECLENOFFSETRECTYPINFOorDATACHKSUM區(qū)域冒號為起始標(biāo)志長度域length地址域address類型域type數(shù)據(jù)域data校驗(yàn)和域check sum字節(jié)長度1 byte1 byte2 bytes1 byteN bytes1 byte每一組字母是獨(dú)立的一個域,每一個字母是一個十六進(jìn)制數(shù)字,每一域至少由兩個十六進(jìn)制數(shù)字組成,下面是字節(jié)的描述: : 冒號是每一條Intel HEX記錄開始的標(biāo)志 ll 是這條記錄的長度域,它表示INFO or DATA域dd的字節(jié)bytes個數(shù) aaaa 是地址域,它表示數(shù)據(jù)的起始地址 tt 表示這條HEX記錄的類型,有6種類型00 -數(shù)據(jù)記錄 Data Record (8-, 16-, or 32-bit formats)01 -文件結(jié)束記錄 End of File Record(8-, 16-, or 32-bit formats)02 -擴(kuò)展段地址記錄 Extended Segment Address Record(16- or 32-bit formats)03-起始段地址記錄 Start Segment Address Record(16- or 32-bit formats)04-擴(kuò)展線性地址記錄 Extended Linear Address Record(32-bit format only)05-起始線性地址記錄 Start Linear Address Record(32-bit format only) dd 是數(shù)據(jù)域,表示一個字節(jié)的數(shù)據(jù),一個記錄可能有多個數(shù)據(jù)字節(jié),長度域ll域的數(shù)值大小說明了數(shù)據(jù)域字節(jié)數(shù)。 cc 是效驗(yàn)和域,表示記錄的效驗(yàn)和。計算方法是將本條記錄冒號開始后的所有字母對(不包括本效驗(yàn)字本身和冒號)所表示的十六進(jìn)制數(shù)字都加起來然后模除256得到余數(shù),最后求出余數(shù)的補(bǔ)碼即是本效驗(yàn)字節(jié)cc.必須注意的是,此處的補(bǔ)碼是將余數(shù)的8bit二進(jìn)制數(shù)所有位取反,然后加1。也就是最高位不管是0還是1,都要取反。某一條記錄的校驗(yàn)和計算過程:第一步,求該行各字節(jié)數(shù)字的和(不包括冒號,不包括最后一個字節(jié)即校驗(yàn)和本身)第二步,模除256第三步,各位取反第四步,加1即得到校驗(yàn)和例如: 一條記錄為 :0300000002005E9D校驗(yàn)和cc=0x01+NOT(0x03+0x00+0x00+0x00+0x02+0x00+0x5E) % 0x100)=0x01+NOT(0x63 % 0x100)=0x01+NOT(0x63)=8b1+8b1001_1100=8b1001_1101=8h9D3.1.數(shù)據(jù)記錄00 (8-, 16-, or 32-bit formats)字符:llaaaattddcc英文描述RECORDMARKRECLENLOADOFFSETRECTYP00DATACHKSUM區(qū)域冒號為起始標(biāo)志長度域length地址域address類型域type數(shù)據(jù)域data校驗(yàn)和域check sumASCII:固定為0016進(jìn)制3A3030字節(jié)長度1 byte1 byte2 bytes1 byteN bytes1 byteRECORD MARK該區(qū)域?yàn)椋旱腁SCII編碼,其16進(jìn)制數(shù)為8h3A。RECLEN該區(qū)域使用2個ASCII編碼的16進(jìn)制數(shù)字來表示數(shù)據(jù)域的字節(jié)個數(shù)。最大值為0xFF或 H 4646 (十進(jìn)制255)。LOAD OFFSET該區(qū)域使用4個ASCII編碼的16進(jìn)制數(shù)字來表示數(shù)據(jù)域的第一個數(shù)據(jù)存放的偏移地址。RECTYPASCII編碼字符為00,其16進(jìn)制編碼為H3030,它指示該文件記錄類型為數(shù)據(jù)記錄。CHKSUM 校驗(yàn)和為RECLEN, LOAD OFFSET, RECTYP, 和 DATA 區(qū)域以字節(jié)為單位,求和,模除256,取反,加1。比如下面的一條數(shù)據(jù)記錄:0C032400787FE4F6D8FD75813402036B8D0C LOAD RECLEN是此行記錄數(shù)據(jù)的字節(jié)數(shù)目,表示記錄的數(shù)據(jù)域有12個字節(jié)的INFO或者DATA。最大為0xFF或者2550324 是本條記錄的數(shù)據(jù)在內(nèi)存中的起始地址. OFFSET只用于數(shù)據(jù)記錄。其他類型的記錄中,不使用這個域,應(yīng)該被編碼為4個ASICC碼0000或者030303030H。00 是記錄類型,00表示是一個數(shù)據(jù)記錄787F 到 036B 是數(shù)據(jù)域8D 是此條記錄的效驗(yàn)和校驗(yàn)和計算過程:第一步,求各字節(jié)的和(不包括冒號,不包括最后一個字節(jié)即校驗(yàn)和本身) 0C+03+24+00+78+7F+E4+F6+D8+FD+75+81+34+02+03+6B = 11h673第二步,模除256 11h673 mod 9h100 = 8h73第三步,各位取反 not (8h73) = not(8b0111_0011) = 8h1000_1100 = 8h8C第四步,加1即得到校驗(yàn)和 8h8C + 1 = 8h8D3.2.文件結(jié)束記錄01(8-, 16-, or 32-bit formats)一個Intel HEX文件必須有且僅有一條文件結(jié)束記錄,其類型域必須是01。沒有數(shù)據(jù)即長度域?yàn)?0,數(shù)據(jù)域沒有。該記錄必須是文件的最后一行,每個文件有且僅有一條文件結(jié)束記錄。通常一條文件結(jié)束記錄除了類型域(01),校驗(yàn)和域,其他域都為0,例如 :00000001FF00是記錄中數(shù)據(jù)字節(jié)的數(shù)目0000這個地址對于EOF記錄來說無任何意義01記錄類型是01(文件結(jié)束記錄標(biāo)示)FF是效驗(yàn)和計算如下01h + NOT( (00h + 00h + 00h + 01h) mod 100h).字符:llaaaattcc英文描述RECORDMARKRECLEN00LOADOFFSET0000RECTYP01CHKSUM區(qū)域冒號為起始標(biāo)志長度域length地址域address類型域type校驗(yàn)和域check sumASCII:固定為00固定為0000固定為01FF16進(jìn)制3A30303030303030314646字節(jié)長度1 byte1 byte2 bytes1 byte1 byteRECORD MARK該區(qū)域?yàn)椋旱腁SCII編碼,其16進(jìn)制數(shù)為H3A。RECLEN由于文件結(jié)束記錄不包含任何INFO或DATA,ASCII編碼字符為00,其16進(jìn)制編碼為H 3030。LOAD OFFSET由于文件結(jié)束記錄不使用該區(qū)域,ASCII編碼字符為0000,其16進(jìn)制編碼為030303030HRECTYPASCII編碼字符為01,其16進(jìn)制編碼為H3031,它指示該文件記錄類型為文件結(jié)束記錄。CHKSUM校驗(yàn)和為RECLEN, LOAD OFFSET, 和 RECTYP 區(qū)域以字節(jié)為單位,求和,模除256,取反,加1。由于文件結(jié)束記錄各域都是靜止不變的,所以CHKSUM可以靜態(tài)計算出來,為HFF。3.3.Extended Segment Address Record02 (16- or 32-bit formats)字符:llaaaattddcc區(qū)域冒號為起始標(biāo)志長度域length地址域address類型域type數(shù)據(jù)域data校驗(yàn)和域check sumASCII:0200000216進(jìn)制3A3032303030303032字節(jié)長度1 byte1 byte2 bytes1 byteN bytes1 byteRECORD MARK該區(qū)域?yàn)椋旱腁SCII編碼,其16進(jìn)制數(shù)為H3A。RECLEN該區(qū)域使用2個ASCII編碼的16進(jìn)制數(shù)字來表示數(shù)據(jù)域的字節(jié)個數(shù)。最大值為0xFF或 4646H (十進(jìn)制255)。LOAD OFFSET由于擴(kuò)展段地址記錄不使用該區(qū)域,ASCII編碼字符為0000,其16進(jìn)制編碼為030303030HRECTYPASCII編碼字符為02,其16進(jìn)制編碼為H3032,它指示該文件記錄類型為擴(kuò)展段地址記錄。CHKSUM 校驗(yàn)和為RECLEN, LOAD OFFSET, RECTYP, 和USBA區(qū)域以字節(jié)為單位,求和,模除256,取反,加1。3.4.擴(kuò)展線性地址記錄(HEX386)04擴(kuò)展線性地址記錄也可稱為 32位地址記錄 和 HEX386記錄,這個紀(jì)錄包含高16(16-31位)位數(shù)據(jù)地址,這種擴(kuò)展的線性記錄總是有兩個字節(jié)數(shù)據(jù),像下面這樣:02000004FFFFFC02 是記錄的數(shù)據(jù)字節(jié)數(shù)目0000 是地址域這在擴(kuò)展地址記錄中總是000004 是記錄類型04(擴(kuò)展地址記錄)FFFF 是高16位地址FC 是記錄效驗(yàn)和,計算方法如下: 01h + NOT(02h + 00h + 00h + 04h + FFh + FFh)當(dāng)一個擴(kuò)展線性地址記錄被讀到后,擴(kuò)展線性地址記錄的數(shù)據(jù)區(qū)域?qū)⒈槐4娌?yīng)用到后面從Intel HEX文件中讀出的記錄,這個擴(kuò)展線性記錄一直有效,直到讀到下一個擴(kuò)展線性記錄.絕對內(nèi)存地址 = 數(shù)據(jù)記錄中的地址 + 移位后的擴(kuò)展線性地址下面舉例說明這個過程從數(shù)據(jù)記錄的地址域得到地址 2462從擴(kuò)展線性地址記錄的地址域得到地址 FFFF絕對內(nèi)存地址 FFFF24623.5.擴(kuò)展段地址記錄 (HEX86)02擴(kuò)展段地址記錄也被稱為 HEX86記錄, 包含 4-19位的數(shù)據(jù)地址段,這個擴(kuò)展段地址記錄總是有兩字節(jié)數(shù)據(jù),如下:020000021200EA02 是 記錄中的數(shù)據(jù)字節(jié)數(shù)目0000 是地址域,在擴(kuò)展段地址記錄中,這個域總是000002 是記錄類型02(擴(kuò)展段地址的標(biāo)示)1200 是該段的地址EA 是效驗(yàn)和計算如下:01h + NOT(02h +

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論