hex格式文件學(xué)習(xí)筆記.doc

hex格式文件學(xué)習(xí)筆記.doc

ID:50985223

大?。?8.52 KB

頁(yè)數(shù):4頁(yè)

時(shí)間:2020-03-08

hex格式文件學(xué)習(xí)筆記.doc_第1頁(yè)
hex格式文件學(xué)習(xí)筆記.doc_第2頁(yè)
hex格式文件學(xué)習(xí)筆記.doc_第3頁(yè)
hex格式文件學(xué)習(xí)筆記.doc_第4頁(yè)
資源描述:

《hex格式文件學(xué)習(xí)筆記.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)

1、前兩天做s3c2440的nandfalsh實(shí)驗(yàn)時(shí),有些問(wèn)題(函數(shù)的指定地址存放)沒(méi)有弄懂,今天花了一天的時(shí)間,算是把這個(gè)問(wèn)題給解決掉了,為了更加深入的了解以及以后的復(fù)習(xí)之用,決定把他總結(jié)以下。首先,先認(rèn)識(shí)一個(gè)問(wèn)題,就是為什么能夠指定地址存放?這個(gè)就涉及到生成hex鏡像文件(不是bin文件),hex文件中包含了下載的地址(后面會(huì)詳細(xì)解釋?zhuān)?,?dāng)下載軟件如j-link,j-tag或是usb下載會(huì)根據(jù)hex文件中的地址信息將代碼下到指定的地址單元中去。這里需要注意的是由于nandflash是不參與cpu編址的,它的地址是相對(duì)自己而言,所以如果要在nandflash中下載到指定地址,需要通

2、過(guò)u-boot來(lái)實(shí)現(xiàn)。并且u-boot必須支持這個(gè)功能,而其他的存儲(chǔ)器是沒(méi)這個(gè)問(wèn)題,因?yàn)樗鼈儏⑴ccpu的統(tǒng)一編址。好,現(xiàn)在問(wèn)題來(lái)了,hex中的地址怎么來(lái)的呢?這個(gè)就是adslink器功勞了,我們指導(dǎo)ads連接器在配置的時(shí)候有三種模式,第一種模式很少用,一般我們是使用第二種而第三種,第二種是用的最多的,是生成簡(jiǎn)單的鏈接文件,不能對(duì)函數(shù)實(shí)現(xiàn)指定地址存放,第三種是生成復(fù)雜的鏈接文件,可以實(shí)現(xiàn)函數(shù)的指定地址存放,這是通過(guò)scatter文件實(shí)現(xiàn)的(后面會(huì)詳細(xì)介紹)下面就看一下hex文件全稱(chēng)IntelHEXntelHEX文件是由一行行符合IntelHEX文件格式的文本所構(gòu)成的ASCII文本文

3、件。在IntelHEX文件中,每一行包含一個(gè)HEX記錄。這些記錄由對(duì)應(yīng)機(jī)器語(yǔ)言碼和/或常量數(shù)據(jù)的十六進(jìn)制編碼數(shù)字組成。IntelHEX文件通常用于傳輸將被存于ROM或者EPROM中的程序和數(shù)據(jù)。大多數(shù)EPROM編程器或模擬器使用IntelHEX文件。  記錄格式  IntelHEX由任意數(shù)量的十六進(jìn)制記錄組成。每個(gè)記錄包含5個(gè)域,它們按以下格式排列:  :llaaaatt[dd...]cc  每一組字母對(duì)應(yīng)一個(gè)不同的域,每一個(gè)字母對(duì)應(yīng)一個(gè)十六進(jìn)制編碼的數(shù)字。每一個(gè)域由至少兩個(gè)十六進(jìn)制編碼數(shù)字組成,它們構(gòu)成一個(gè)字節(jié),就像以下描述的那樣:  :每個(gè)IntelHEX記錄都由冒號(hào)開(kāi)頭. 

4、 ll是數(shù)據(jù)長(zhǎng)度域,它代表記錄當(dāng)中數(shù)據(jù)字節(jié)(dd)的數(shù)量.  aaaa是地址域,它代表記錄當(dāng)中數(shù)據(jù)的起始地址.  tt是代表HEX記錄類(lèi)型的域,它可能是以下數(shù)據(jù)當(dāng)中的一個(gè):  00–數(shù)據(jù)記錄  01–文件結(jié)束記錄  02–擴(kuò)展段地址記錄  04–擴(kuò)展線性地址記錄??????05?-?開(kāi)始線性地址記錄后面則是真正的數(shù)據(jù)記錄  dd是數(shù)據(jù)域,它代表一個(gè)字節(jié)的數(shù)據(jù).一個(gè)記錄可以有許多數(shù)據(jù)字節(jié).記錄當(dāng)中數(shù)據(jù)字節(jié)的數(shù)量必須和數(shù)據(jù)長(zhǎng)度域(ll)中指定的數(shù)字相符.  cc是校驗(yàn)和域,它表示這個(gè)記錄的校驗(yàn)和.校驗(yàn)和的計(jì)算是通過(guò)將記錄當(dāng)中所有十六進(jìn)制編碼數(shù)字對(duì)的值相加,以256為模進(jìn)行以下補(bǔ)足. 

5、 數(shù)據(jù)記錄  IntelHEX文件由任意數(shù)量以回車(chē)換行符結(jié)束的數(shù)據(jù)記錄組成.數(shù)據(jù)記錄外觀如下:  :10246200464C5549442050524F46494C4500464C33  其中:  10是這個(gè)記錄當(dāng)中數(shù)據(jù)字節(jié)的數(shù)量.  2462是數(shù)據(jù)將被下載到存儲(chǔ)器當(dāng)中的地址.  00是記錄類(lèi)型(數(shù)據(jù)記錄)  464C…464C是數(shù)據(jù).  33是這個(gè)記錄的校驗(yàn)和.  擴(kuò)展線性地址記錄(HEX386)  擴(kuò)展線性地址記錄也叫作32位地址記錄或HEX386記錄.這些記錄包含數(shù)據(jù)地址的高16位.擴(kuò)展線性地址記錄總是有兩個(gè)數(shù)據(jù)字節(jié),外觀如下:  :02000004FFFFFC  其中: 

6、 02是這個(gè)記錄當(dāng)中數(shù)據(jù)字節(jié)的數(shù)量.  0000是地址域,對(duì)于擴(kuò)展線性地址記錄,這個(gè)域總是0000.  04是記錄類(lèi)型04(擴(kuò)展線性地址記錄)  FFFF是地址的高16位.  FC是這個(gè)記錄的校驗(yàn)和,計(jì)算方法如下:  01h+NOT(02h+00h+00h+04h+FFh+FFh).  當(dāng)一個(gè)擴(kuò)展線性地址記錄被讀取,存儲(chǔ)于數(shù)據(jù)域的擴(kuò)展線性地址被保存,它被應(yīng)用于從IntelHEX文件讀取來(lái)的隨后的記錄.線性地址保持有效,直到它被另外一個(gè)擴(kuò)展地址記錄所改變.  通過(guò)把記錄當(dāng)中的地址域與被移位的來(lái)自擴(kuò)展線性地址記錄的地址數(shù)據(jù)相加獲得數(shù)據(jù)記錄的絕對(duì)存儲(chǔ)器地址.  以下的例子演示了這個(gè)過(guò)程

7、..  來(lái)自數(shù)據(jù)記錄地址域的地址2462  擴(kuò)展線性地址記錄的數(shù)據(jù)域+FFFF  ------------  絕對(duì)存儲(chǔ)器地址FFFF2462  擴(kuò)展段地址記錄(HEX86)  擴(kuò)展段地址記錄也叫HEX86記錄,它包括4-19位數(shù)據(jù)地址段.擴(kuò)展段地址記錄總是有兩個(gè)數(shù)據(jù)字節(jié),外觀如下:  :020000021200EA  其中:  02是記錄當(dāng)中數(shù)據(jù)字節(jié)的數(shù)量.  0000是地址域.對(duì)于擴(kuò)展段地址記錄,這個(gè)域總是0000.  02是記錄類(lèi)型02(擴(kuò)展段地址記錄)  1200是地址段.

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。