新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM 鏈接地址和燒寫地址

        ARM 鏈接地址和燒寫地址

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


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 博罗县| 永清县| 嘉荫县| 汉川市| 兴业县| 广河县| 南丹县| 通州市| 县级市| 清流县| 隆安县| 宜良县| 鄯善县| 马公市| 米脂县| 连州市| 双桥区| 崇仁县| 晋宁县| 社旗县| 乌兰察布市| 宝清县| 邢台县| 泽库县| 长岛县| 民和| 凭祥市| 微山县| 安西县| 珠海市| 汪清县| 犍为县| 乌审旗| 兴国县| 柏乡县| 七台河市| 宁陵县| 米易县| 玛沁县| 扎囊县| 肃南|