新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ARM 鏈接地址和燒寫地址

ARM 鏈接地址和燒寫地址

作者: 時間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
ARM設(shè)計中,一般會涉及都一個鏈接地址,這個鏈接地址和燒寫地址很容易混淆,會認(rèn)為鏈接地址就是燒寫地址,這個是錯的,下面說的是個人的一些認(rèn)識,可能會有一些錯誤,說的也可能不專業(yè),但是對于初學(xué)者,可以幫助理解。
首先鏈接地址和燒寫地址是兩個范疇的東西,幾乎是沒有關(guān)系的,燒寫地址,可以認(rèn)為是物理地址,而鏈接地址可以認(rèn)為是虛擬地址,對于程序員來說,看到的是虛擬地址,一般虛擬地址經(jīng)過MMU映射成具體的物理地址,進(jìn)而再去訪問實(shí)際的物理地址。
鏈接地址也可以理解成是一個符號,因?yàn)橐粋€可執(zhí)行程序,一般要經(jīng)過預(yù)編譯,編譯,匯編,鏈接三個過程,最后一個過程是鏈接,就是把前三部分產(chǎn)生的所有.o文件,串起來,形成一個整體的程序,所以每個.o文件上都有一些的函數(shù)或者子程序,通過給定鏈接地址,相當(dāng)于是從全局出發(fā),給所有的文件中的函數(shù),統(tǒng)一編號,起了一個“名字”,名字的范圍是0x00000000--0xFFFFFFFF,那么這個名字其實(shí)就是鏈接地址。如果MMU未打開,則鏈接地址就是物理地址,反之,則鏈接地址是映射的物理地址。
那么問題就來了,當(dāng)程序開始執(zhí)行時,CPU是通過鏈接地址進(jìn)行訪問具體的函數(shù)的,如果這個函數(shù)沒有存到鏈接地址映射到的物理地址那會怎么辦呢?答案是很簡單的,那就是程序會跑飛,打個比喻吧,CPU要訪問38號房間的客人,但是客人卻沒有移駕到38號,CPU又很呆,它只能亂啦,這里38號就是鏈接地址,客人就是具體的函數(shù)名。所以在使用鏈接地址時,如果未打開mmu,那么需要將程序復(fù)制到對應(yīng)的物理地址處,若使用了MMU則需要將程序復(fù)制到映射對應(yīng)的物理地址處。
燒寫地址就是實(shí)際的物理地址,這個是通過存儲控制器進(jìn)行訪問的,而且一般的燒寫軟件可以實(shí)現(xiàn)指定地址處燒寫。
綜上,燒寫地址與鏈接地址有關(guān)系,但是關(guān)系不是特別明顯,對于程序員來說,用的是鏈接地址,但是需要設(shè)置濾清好鏈接地址與燒寫地址的映射關(guān)系。


關(guān)鍵詞: ARM鏈接地址燒寫地

評論


技術(shù)專區(qū)

關(guān)閉