www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 嵌入式云IOT技術(shù)圈
[導(dǎo)讀]HEX文件格式詳解 如圖,其中第一行020000040002f8中,可以看做是0x02 0x00 0x00 0x04 0x02 0x02 0xf8,其前四個(gè)字節(jié)和最后一個(gè)字節(jié)有特殊含義。中間為數(shù)據(jù) 第一個(gè)0×02表示該行數(shù)據(jù)中有兩個(gè)數(shù)據(jù) 第二個(gè),第三個(gè)0x00 0x00表示本行數(shù)據(jù)的起始地址位 第四個(gè)字節(jié)

HEX文件格式詳解

如圖,其中第一行020000040002f8中,可以看做是0x02 0x00 0x00 0x04 0x02 0x02 0xf8,其前四個(gè)字節(jié)和最后一個(gè)字節(jié)有特殊含義。中間為數(shù)據(jù)

第一個(gè)0×02表示該行數(shù)據(jù)中有兩個(gè)數(shù)據(jù)

第二個(gè),第三個(gè)0x00 0x00表示本行數(shù)據(jù)的起始地址位

第四個(gè)字節(jié)有0x00 0x01 0x02 0x03 0x04 0x05,分別有以下含義

'00'Data Rrecord:用來(lái)記錄數(shù)據(jù),HEX文件的大部分記錄都是數(shù)據(jù)記錄

'01'文件結(jié)束記錄:用來(lái)標(biāo)識(shí)文件結(jié)束,放在文件的最后,標(biāo)識(shí)HEX文件的結(jié)尾

'02'擴(kuò)展段地址記錄:用來(lái)標(biāo)識(shí)擴(kuò)展段地址的記錄

'03'開始段地址記錄:開始段地址記錄

'04'擴(kuò)展線性地址記錄:用來(lái)標(biāo)識(shí)擴(kuò)展線性地址的記錄

'05'開始線性地址記錄:開始線性地址記錄

最后一個(gè)字節(jié)0xf8為校驗(yàn)和。校驗(yàn)和= 0x100 - 累加和。在nodepad++中,如果該校驗(yàn)和不是綠色,則表示該校驗(yàn)和是錯(cuò)的。

注意,0×04標(biāo)識(shí)擴(kuò)展線性地址的記錄,所以如上圖中的020000040002f8中,拓展地址是0002。那么第二行數(shù)據(jù)的起始地址就是0002c000,即0x0002c000開始

補(bǔ)充內(nèi)容開始:
前面記錄的比較簡(jiǎn)單,但看起來(lái)還是不好理解,下面是詳細(xì)通俗易懂版本的hex文件說(shuō)明,應(yīng)該能滿足大部分同學(xué)的需要。

第一字節(jié)表示該行的數(shù)據(jù)字節(jié)數(shù);如第1行只有 0x08 0x00 兩個(gè)字節(jié)的數(shù)據(jù),類型是 04 ,即該行記錄的是一個(gè)拓展地址(0x08 0x00 是地址信息,用法是將該地址(0x0800<<16) 后作為基地址。并且表示在下一個(gè)04類型行出現(xiàn)之前都要使用該地址.

例如第2行的地址信息是 0x0000,則表示該行數(shù)據(jù)從0x08000000( (0x0800<<16) | 0x0000 )開始記錄。

第3行則從 0x08000010 ( (0x0800<<16) | 0x0010 )開始記錄。

另外最后一個(gè)字節(jié)的校驗(yàn)和 0xBA = 0xff & ( 0x100- (0x10+4*(0x00)+0x5F+0x00+...+0x00+0x08) ) = 0xff & (0x100-0x246);

沒(méi)錯(cuò),就是從每行的第一個(gè)字節(jié)開始計(jì)算。

小技巧: 在nodepad++中,如果校驗(yàn)和不是綠色,則表示校驗(yàn)和錯(cuò)誤,如上圖中的第6行.正確的應(yīng)該是 BA

16行位置只有四個(gè)數(shù)據(jù),但是 標(biāo)注類型是 05, 即他是一個(gè) “開始線性地址記錄”。
說(shuō)那么多,什么是開始線性地址記錄呢?其實(shí)他就是函數(shù)入口地址
例如我的 .map 文件中可以看到以下信息

Memory Map of the image

Image Entry point : 0x08020189
....
__Vectors_End 0x08020188 Data 0 ......
__main 0x08020189 Thumb Code 0 entry.o(.ARM.Collect
00000000)
_main_stk 0x08020189 Thumb Code 0 entry2.o(.ARM.Collect
00000001)
_main_scatterload 0x0802018d Thumb Code 0 entry5.o(.ARM.Collect
00000004)

這一行就是類型是 0x01, 表示文件結(jié)束.

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉
關(guān)閉