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(資料型別):
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