hex檔案分析
用文字隨便開啟一個檔案都可以看到hex檔案的內容。例如:
:020000040800F2
:1000000080040020690100087101000873010008E4
:1000100000000000000000000000000000000000E0
:100020000000000000000000000000007501000852
:1000300000000000000000007701000879010008BE
“““““
“““““
“““““
:1005E0002001000800000000006CDC020000000098
:1005F00000000000010203040607080900000000D3
:04000005080000C12E
:00000001FF
上面就是一個hex檔案內容首尾的一部分資料,從內容中很明顯可以看出這不是二進位制資料。Hex檔案是用ASCII來表示二進位制的數值,十六進位制陣列成的指令或者資料,每一行就是一個hex記錄。由於微控制器執行的只能是二進位制指令和資料,而hex檔案是十六進位制數,所以燒錄器的工作必然有一個進位制轉換機制。具體機制怎麼實現暫時可以不管,知道是燒錄器處理的就行了。從這裡可以找出第二問題的答案。
hex檔案的每一行資料記錄都是以行為單位,每行從“:”(0x3a)開始,這從檔案內容可以看出。以Enter鍵結束(0x0d,0x0a),每行以換行結束。每行的資料都是由兩個字元表示一個16進位制位元組,例如第一行,:020000040800F2中的“02”表示數為0x02,“F2”就表示為0xF2。如果資料位地址時,地址高位在前低位在後。
以上面內容的第二行資料為例,進行詳細解析:
:1000000080040020690100087101000873010008E4
1、“:”表示一行的開始;
2、第1、2個字元1和0,即“0x10”表示本行包含的資料長度為16個;
3、第3、4、5、6個字元,固定這4位表示地址,即“0000”表示資料儲存的起始地址,表示在0x0000地址開始存放本行包含的16個資料。
4、第7、8個字元,固定這2位表示本行包含資料資料的型別,即“00”表示本行包含的資料為實際燒寫的資料。而資料的型別有如下幾種:
“00”表示實際資料記錄
“01”表示檔案結束記錄
“02”表示擴充套件段地址記錄
“04”表示擴充套件線性地址記錄
5、由前兩個字元“10”可知本行的資料長度位16個位元組,所有往後的32個字元就是本行包含的資料,每兩個字元表示一個位元組資料,總共有16個位元組資料。跟最前兩個字元決定的長度一致。但是這個資料的長度不是固定的,例如最後一行00000001FF,這行包含的資料長度0,沒有資料。
6、最後兩個字元為本行的校驗碼。
通過上面的幾點分析可以總結出hex檔案的每一行的格式:
<0x3a>[資料長度1Byte][資料地址2Byte][資料型別1Byte][資料nByte]
[驗證碼1Byte]<0x0d><0x0a>
校驗的演算法:
計算從(0x3a)以後的所有各位元組的和模256的餘。即各位元組二進位制算術和,不計超過256的溢位值,然後用0x100減去這個算數累加和,得出的值就是此行校驗碼。舉一個簡單的例子,如第一行020000040800F2
0x02+0x00+0x00+0x00+0x04+0x08+0x00 = 0x0E
0x100 – 0x0E = 0xF2.
相關文章
- 【Hex】什麼是英特爾 HEX 檔案格式
- 痞子衡嵌入式:ARM Cortex-M檔案那些事(8)- 映象檔案(.bin/.hex/.s19)
- APK 檔案分析APK
- 如何在keil中生成hex檔案,並下載到51微控制器中
- ELF檔案逆向分析
- 如何分析SQLServerTrace檔案SQLServer
- LDS檔案格式分析
- hdfs小檔案分析
- 分析Mach-O檔案Mac
- wsdl檔案結構分析
- 資料檔案internal分析
- 【Blazor】1-Blazor專案檔案分析Blazor
- VB控制元件21Hex DockIt註冊演算法分析控制元件演算法
- Oracle引數檔案解析——引數檔案分析獲取Oracle
- vue原始碼分析系列之入口檔案分析Vue原始碼
- MQTT接收HEX(2/2)MQQT
- REdis AOF檔案結構分析Redis
- 標頭檔案的作用分析
- quartus ii工程檔案的分析
- Java的WAR包檔案分析Java
- Webpack原理-輸出檔案分析Web
- linux /proc/cpuinfo檔案分析LinuxUI
- ecshop init.php檔案分析PHP
- ASM檔案別名的分析ASM
- Huffman編碼m檔案分析
- 分析alert檔案的指令碼指令碼
- tkprof: 分析ORACLE跟蹤檔案Oracle
- ThinkPHP3.1.3原始碼分析(一) 入口檔案分析PHP原始碼
- Apache Tomcat檔案包含漏洞分析ApacheTomcat
- Gixy–分析Nginx配置檔案的工具Nginx
- tempdb資料檔案暴增分析
- tempdb日誌檔案暴增分析
- VFS檔案系統結構分析
- mach-o 檔案分析(解析類)Mac
- 使用 Tkprof 分析 ORACLE 跟蹤檔案Oracle
- 跟蹤session 與 trace檔案分析Session
- PHP上傳檔案設計分析PHP
- 深入分析Oracle日誌檔案Oracle