日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Intel Hex格式说明

發布時間:2025/6/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Intel Hex格式说明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.什么是Intel Hex文件

Intel HEX文件時遵循Intel HEX文件格式的ASCII文本文件。在Intel HEX文件的每一行都包含了 一個HEX記錄。這些記錄是由一些代表機器語言代碼和常量的16進制數據組成的。Intel HEX文件常用來傳輸要存儲在ROM 或者 EPROM中的程序和數據。大部分的EPROM編程器能使用Intel HEX文件。


2.Intel HEX文件組成

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


Start Code 每個Intel HEX記錄都由冒號開頭。

Byte count 是數據長度域,它代表記錄當中數據字節的數量。

Address 是地址域,它代表記錄當中數據的起始地址。

Record type是代表HEX記錄類型的域,它可能是以下數據當中的一個:

00-數據記錄

01-文件結束記錄

02-擴展段地址記錄

03-開始段地址記錄

04-擴展線性地址記錄

05-開始線性地址記錄


3.內容分析

(00)數據記錄

Intel HEX文件由若干個數據記錄組成,一個數據記錄以一個回車和一個換行結束<回車為0x0d換行為0x0a>。
比如下面的一條數據記錄

:10246200464C5549442050524F46494C4500464C3

10 ???? 是此行記錄數據的字節數目
2462 ?? ?是數據在內存<將要燒寫的eprom地址>中的起始地址
00 ???? 是記錄類型00(是一個數據記錄)
46到4C? ? 是數據

33 ???? 是此行記錄的效驗和

(01)文件結束記錄(EOF)

一個Intel HEX文件必須有一個文件結束記錄,這個記錄的類型域必須是01,
一個EOF記錄總是這樣:

:00000001FF

00???? 是記錄中數據字節的數目
0000?? ?這個地址對于EOF記錄來說無任何意義
01???? 記錄類型是01(文件結束記錄標示)
FF???? 是效驗和計算如下

01h + NOT(00h + 00h + 00h + 01h).

(02)擴展段地址記錄 (HEX86)

擴展段地址記錄也被稱為?HEX86記錄, 包含 4-19位的數據地址段,這個擴展段地址記錄總是有兩字節數據,如下:

:020000021200EA

02? ? ? ?是記錄中的數據字節數目
0000? ? ? 是地址域(在擴展段地址記錄中,這個域總是0000
02? ? ? ?是記錄類型02(擴展段地址的標示)
1200 ?? ? 是該段的地址

EA? ? ? ?是效驗和計算如下:
01h + NOT(02h + 00h + 00h + 02h + 12h + 00h).


當擴展段地址記錄被讀后,擴展段地址將被存儲并應用到以后從Intel HEX文件讀出的記錄,這個段地址一直有效直到讀到下一個擴展段地址記錄

絕對內存地址 = 數據記錄中的地址 + 移位后的擴展段地址(這個需要左移8位)

下面舉例說明這個過程:
從數據記錄的地址域得到地址 :? ? ?2 4 6 2
從擴展段地址記錄的地址域得到地址: ?1 2 0 0
絕對內存地址: ?????????? ?0 0 0 1 4 4 6 2

(03)開始段地址記錄

對于80x86處理器,他指定CS:IP寄存器的初始內容,地址域為0000,數據數目為04,前2個位CS值,后面兩個為IP值。


(04)擴展線性地址記錄(HEX386)

擴展線性地址記錄也可稱為?32位地址記錄?和?HEX386記錄,這個紀錄包含高16(16-31位)位數據地址,這種擴展的線性記錄總是有兩個字節數據,像下面這樣:

:02000004FFFFFC
02 ???? 是記錄的數據字節數目
0000 ?? ?是地址域(在擴展地址記錄中總是0000
04 ???? 是記錄類型04(擴展地址記錄)
FFFF ?? ?是高16位地址
FC ???? 是記錄效驗和,計算方法如下:
01h + NOT(02h + 00h + 00h + 04h + FFh + FFh)

當一個擴展線性地址記錄被讀到后,擴展線性地址記錄的數據區域將被保存并應用到后面從Intel HEX文件中讀出的記錄,這個擴展線性記錄一直有效,直到讀到下一個擴展線性記錄.

絕對內存地址 = 數據記錄中的地址 + 移位后的擴展線性地址(這個需要左移16位)

示例如下:

從數據記錄的地址域得到地址:?????? 2462
從擴展線性地址記錄的地址域得到地址:? ?FFFF
則絕對內存地址為: ???????????FFFF2462

(05)開始線性地址記錄

地址域為0000,數據個數為04,4位數據描述的是裝載進80386或者更高cpu EIP寄存器的32bit值。


完整的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))





《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Intel Hex格式说明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。