1. 程式人生 > >STM32學習筆記--hex檔案格式

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

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


用記事本開啟hex檔案如下:
:020000040801F1
:1000000018050020050401087D0201087F0201088F
:100010008102010883020108850201080000000036
:10002000000000000000000000000000870201083E
:1000300089020108000000008B0201088D020108FE
:100040001F0401081F0401081F0401081F04010800
:100050001F0401081F0401081F0401081F040108F0
:100060001F0401081F0401081F0401081F040108E0
:100070001F0401081F0401081F0401081F040108D0
:100080001F0401081F0401081F0401081F040108C0
:100090001F0401081F0401081F0401081F040108B0
:1000A0001F0401081F0401081F0401081F040108A0
:1000B0001F0401081F0401081F0401081F04010890


1、“:”:每條記錄的開頭都使用冒號來表示一條記錄的開始;
2、“aa”:表示這條記錄的實際資料的長度(16進製表示),即[dd...]中的資料長度;
3、“bbbb”:表示這條記錄中的資料寫到FLASH中的起始地址;
4、“cc”:表示這條記錄的型別,各個型別表示如下:
    00:資料記錄
    01:本檔案結束記錄
    02:擴充套件地址記錄
    04:擴充套件線性地址記錄(表示後面的記錄按這個地址遞增)
    05:表示一個線性地址記錄的起始地址(只適用於ARM)
5、"[dd...]":表示一個位元組的資料,一條記錄中有多少個位元組資料 ,aa表示它有多少個位元組的資料
6、"ee":表示本條記錄的校驗和,它是前面所有16進位制資料(除冒號以外,兩個數字為一個位元組)和對256取模運算的結果的補碼

例如:
1、在上面的第一行hex資料中
02:表示這條記錄實際資料的長度是2個位元組;
0000:表示這條記錄要儲存到的地址;
04:表示這是一條擴充套件線性地址記錄;
0801:因為這是一條擴充套件線性地址記錄,所以這部分表示地址的高16位,與前面的“0000”結合在一起,表示要擴充套件的線性地址為“ 0x08010000”,這是STM32內部FLASH設定的偏移地址地址;
F1:表示校驗和,它的值為(0x02+0x00+0x00+0x04+0x08+0x01)%256的值再取補碼。

2、在上面的第二行hex資料中:
10:表示這條記錄資料區的長度為16位元組;
0000:表示這條記錄所在的地址,與前面的擴充套件記錄結合,表示這條記錄要儲存的FLASH首地址為(0x08010000+0x0000);
00:表示這是一條資料記錄,資料區的是地址;
18050020050401087D0201087F020108:這是要按地址儲存的資料;
8F:校驗和