1. 程式人生 > >intel-extended格式的hex檔案分析

intel-extended格式的hex檔案分析

參考內容:

http://blog.163.com/jx_lxh/blog/static/2248247120070991939114

http://www.cnblogs.com/starspace/archive/2009/01/15/1376280.html

http://www.cnblogs.com/aqing1987/p/4185362.html

一、intel hex的具體格式

Intel Hex檔案是遵循Intel Hex檔案根式的ASCII文字檔案。在Intel Hex檔案的每一行中都包含了一個hex記錄。這些記錄是由一些代表機器語言程式碼和常量的16進位制資料組成。Intel Hex檔案常用來傳輸要儲存在ROM、EPROM或者Flash中的程式和資料。大部分的EPROM程式設計器都能使用Intel Hex檔案。

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

| MARK | RECLEN | OFFSET | RECTYP | DATA | CHKSUM |

| MARK | -> (1Byte)Start Code(冒號): 每個 Intel HEX 記錄都由冒號開頭
| RECLEN | -> (1Byte)Byte count(本行資料長度):是資料長度域,它代表記錄當中資料位元組的數量
| OFFSET | -> (2 Byte)Address(本行資料的起始地址):是地址域,它代表記錄當中資料的起始地址
| RECTYP | -> (1 Byte)Record type(資料型別):

 是代表HEX記錄型別的域,它可能是以下資料當中的一個:
  00-資料記錄
  01-檔案結束記錄
  02-擴充套件段地址記錄
  03-開始段地址記錄
  04-擴充套件線性地址記錄
  05-開始線性地址記錄
| DATA | -> (n Byte)Data(資料): 是資料域,一個記錄可以有許多資料位元組.記錄當中資料位元組的數量必須和資料長度域中指定的數字相符
| CHKSUM | -> (1 Byte)Checksum(校驗碼): 是校驗和域,它表示這個記錄的校驗和.校驗和的計算是通過將記錄當中所有十六進位制編碼數字對
的值相加,以256為模進行補足。

二、擴充套件線性地址記錄(32 bit)

| MARK | RECLEN | OFFSET | RECTYP | ULBA | CHKSUM |

| : | 02 | 0000 | 04 | ULBA | CHKSUM |

32位的擴充套件線性地址記錄用在LBA(Linear Base Address)的16-31bit,也被當作ULBA(Upper Linear Base Address),其LBA的0-15bit都是0,即該記錄定義了資料存放的基地址(ULBA << 16);

示例

1、:020000040800F2//(: 02 0000 04  0800 F2)

可見ULBA為0800,即基地址為0x0800 << 16,即等於0x08000000。

三、擴充套件段地址記錄(16 bit/32 bit)

| MARK | RECLEN | OFFSET | RECTYP | USBA | CHKSUM |

| : | 02 | 0000 | 02 | USBA | CHKSUM |

16位的擴充套件段地址記錄用於SBA(segment Base Address)的4-19bit,也被當作USBA(Upper Segment Base Address),其SBA的0-3bit為0,即該記錄定義了資料存放的基地址(USBA << 4);

四、資料記錄(8 bit/ 16 bit/ 32 bit)

| MARK | RECLEN | OFFSET | RECTYP | DATA | CHKSUM |

| : | RECLEN | OFFSET | 00 | DATA | CHKSUM |

OFFSET是相對LBA或者SBA而言,資料的第一個位元組的偏移地址;

LBA的資料存放地址計算 (LBA + DRLO + DRI) MOD 4G

SBA的資料存放地址計算 (SBA + [DRLO + DRI] MOD 64K)

其中,DRLO: OFFSET的值,DRI:資料記錄中的資料的索引。

示例:

1、

:020000040800F2//(: 02 0000 04 0800 F2)基地址為0x08000000
:104800009004002055940008599200085B9200081B//(: 10 4800 00 09004002055940008599200085B920008 1B)資料存放地址為0x08000000+0x4800,資料長度為0x10,資料內容為:09004002055940008599200085B920008
:104810005D9200085F9200086192000800000000AD//(: 10 4810 00 05D9200085F9200086192000800000000 AD)資料存放地址為0x08000000+0x4810,資料長度為0x10,資料內容為:05D9200085F9200086192000800000000
:104820000000000000000000000000006592000889//(: 10 4820 00 000000000000000000000000065920008 89)資料存放地址為0x08000000+0x4820,資料長度為0x10,資料內容為:000000000000000000000000065920008

2、

:020000040800F2 //(: 02 0000 04 0800 F2)基地址為0x08000000
:1000000028040020B1170008991700089B17000862//(: 10 0000 00 28040020B1170008991700089B170008 62)資料存放地址為0x08000000+0x0000,資料長度為0x10,資料內容為:28040020B1170008991700089B170008 
:100010009F170008A3170008A7170008000000009A//(: 10 0010 00 9F170008A3170008A717000800000000 9A)資料存放地址為0x08000000+0x0010,資料長度為0x10,資料內容為:9F170008A3170008A717000800000000 
:100020000000000000000000000000002F0C00088D//(: 10 0020 00 0000000000000000000000002F0C0008 8D)資料存放地址為0x08000000+0x0020,資料長度為0x10,資料內容為:0000000000000000000000002F0C0008

五、開始線性地址記錄(32 bit)

| MARK | RECLEN | OFFSET | RECTYP | EIP | CHKSUM |

| : | 04 | 0000 | 05 | EIP | CHKSUM |

指定目標檔案的執行開始地址。

示例:

1、

:0400000508009465F6//(: 04 0000 05 08009465 F6)程式從0x08009465開始執行

2、

:04000005080017C117//(: 04 0000 05 080017C1 17)程式從0x080017C1開始執行

六、開始段地址記錄(16 bit/ 32 bit)

| MARK | RECLEN | OFFSET | RECTYP | CS/IP | CHKSUM |

| : | 04 | 0000 | 03 | CS/IP | CHKSUM |

指定目標檔案的執行開始地址

七、檔案結束記錄(8 bit/ 16 bit/ 32 bit)

| MARK | RECLEN | OFFSET | RECTYP | EIP | CHKSUM |

| : | 00 | 0000 | 01 | CHKSUM |

用於表示hex檔案的結束

示例:

1、

:00000001FF//(: 00 0000 01 FF)

相關推薦

intel-extended格式hex檔案分析

參考內容: http://blog.163.com/jx_lxh/blog/static/2248247120070991939114 http://www.cnblogs.com/starspace/archive/2009/01/15/1376280.html http

Intel Hex檔案格式說明

Intel HEX檔案是記錄文字行的ASCII文字檔案,在Intel HEX檔案中,每一行是一個HEX記錄由十六進位制陣列成的機器碼或者資料常量,Intel HEX檔案經常被用於將程式或資料傳輸儲存到ROM.EPROM,大多數程式設計器和模擬器使用Intel HEX檔案. 記

各種格式圖片檔案頭標識分析

http://hi.baidu.com/_through/item/a4d84f0baae7756ad45a1109 圖片的格式很多,一個圖片檔案的字尾名並不能說明這個圖片的真正格式什麼,那麼如何獲取圖片的格式呢?我想到了幾個簡單但有效的方法,那就是讀取圖

python 計算Intel HEX檔案 HEX記錄校驗和

簡單的說: 英特爾HEX檔案由任意數量的資料記錄組成,這些資料記錄以回車符和換行符結束。 例如資料記錄如下:10246200464C5549442050524F46494C4500464C33 該記錄解碼如下: 10是記錄中的資料位元組數。 2462是資料在儲

hex檔案格式學習記錄

.hex檔案 .hex檔案是什麼 .hex檔案的資料結構 按照記錄型別具體分析 Mermaid Flowchart .hex檔案是什麼 它是由一行行符合Intel HEX 檔案格式的文字所構成的ASCII

STM32學習筆記--hex檔案格式

    hex 是 Intel 公司制定的一種使用 ASCII 文字記錄機器碼或常量資料的檔案格式,它可以燒錄到MCU中,被MCU執行的一種檔案格式。一個hex檔案由多條記錄組成,而每條記錄由5個部分組成,     格式如下:     “:

Hex檔案格式及其校驗演算法

hex   檔案記錄格式如下:  :AABBBBCCDD......DDEE  其中:   表示行起始標誌AA:表示本條記錄中的資料位元組數BBBB:本條記錄中的資料在儲存區中的起始地址         CC:記錄型別,含義如下:            '00' Data

Hex檔案格式解析

  第一行,是Extended Linear Address Record,裡面的資料,也就是基地址是0x0004,第二行是Data Record,裡面的地址值是0x0000。那麼資料18F09FE518F09FE518F09FE518F09FE5要寫入FLASH中的地址為 (0x0004 <<

mysql 的binlog format格式種類及分析

mysql 的binlog format格式種類及分析一.Mysql Binlog格式介紹 Mysql binlog日誌有三種格式,分別為Statement,MiXED,以及ROW!1.Statement:每一條會修改數據的sql都會記錄在binlog中。優點:不需要記錄每一行的變化,減少了binlog日誌量

Mysql Binlog三種格式介紹及分析【轉】

delete -s 字符 ID color fine alt lte pan 一.Mysql Binlog格式介紹 Mysql binlog日誌有三種格式,分別為Statement,MiXED,以及ROW! 1.Statement:每一條會修改數據的sql

PGM格式影象檔案讀寫

        private int mWidth;         private int mLength;         private int mColor;

Python將某資料夾及其子資料夾下某種格式檔案移動到另一個指定的檔案

import shutil,os new_path='/root/python_test/data/gp_fz' for derName, subfolders, filenames in os.walk('/root/python_test/data/gp'): print(derName

【經驗分享】:如何將PDF格式檔案進行翻譯

在我們平常工作中,如果在處理PDF這種格式檔案的時候,發現檔案中的內容多數為外語(比如英語),大家是怎麼解決的呢?可能大部分人會選擇將檔案裡面的內容複製到翻譯軟體中,那樣未免太麻煩了吧。在這裡小編將教大家一種比較方便的方法,想要了解的可以繼續往下看。 1、可以在自己的電腦上安裝一款軟體,可以進入到百度瀏覽器

織夢獲取自定義欄位附件型別檔案格式型別檔案大小上傳日期

內容頁顯示效果 實現步驟 1、\templets\system\channel_addon.htm 裡面要清空,只留~link~   (注意:前後不能留有一個空格) 2、/include/extend.func.php  最下面加入方法 function GetFileInfo

NS2 trace檔案分析指令碼(適合無線trace)

絡上有不少awk程式是講如何分析網路效能的(主要是時延,吞吐量,丟包率和時延抖動),但是都沒有詳細的說明,我在此作一些示例,添加了一些必要的說明註釋。 以下的內容是針對NS2模擬的結果trace檔案進行網路效能分析,看本篇前需要先行了解的的內容有:awk語言的基礎,包括語法和結構等;在Linux下

PDF檔案轉DWG格式檔案要如何進行轉換?

PDF檔案轉DWG格式的檔案要如何進行轉換?小夥伴們都知道,在CAD行業中,我們最常見的就是dwg格式的檔案,但是要交給你的客戶的時候dwg格式的檔案不方便進行檢視,就需要將檔案轉換成PDF,但又在檢視過程中發現編輯錯誤的地方,就需要進行修改,只能在CAD編輯器中進行修改檔案內容,編輯器中只能開啟dwg格式的

讀取檔案,並按原格式輸出檔案內容的三種方式

1 filename = 'Car.py' 2 3 #讀取整個檔案 4 with open(filename) as file_object: 5 lines = file_object.read() 6 print(lines) 7 8 9 #遍歷檔案物件 10

awk檔案分析

awk是行處理器: 相比較螢幕處理的優點,在處理龐大檔案時不會出現記憶體溢位或是處理緩慢的問題,通常用來格式化文字資訊 awk處理過程: 依次對每一行進行處理,然後輸出 awk命令形式: awk [-F|-f|-v] ‘BEGIN{} //{command1; command2

PHP的parse_ini_file()函式,解釋結構型別php.ini格式檔案

直接讀取,返回一維陣列 如,"test.ini" 的內容: [names] me = Robert you = Peter [urls] first = "http://www.example.com" second = "http://www.w3school.com.cn" 程式

golang如何匯出csv格式檔案

import( "fmt" "github.com/xormplus/xorm" "golang.org/x/text/transform" "golang.org/x/text/encoding/simplifiedchinese" "io/io