以下僅為個人了解,若有不足之處,望指正。
連結位址,實體位址,虛拟位址這三者位址都有各自的差別,這也是我開發學習過程中,自己琢磨出來領悟的,網上搜尋的都講的很專業化,不太好了解,了解起來感覺有些吃力。是以我想以個人了解的角度,通俗點去講講這三者的功能作用。
實體位址
比較簡單,就是存儲器内(SRAM,SDRAM)配置設定的真實位址,2440的SRAM前4KB的實體位址是:0x00000000~0x00400000。SDRAM的起始實體位址是0x30000000。
有彙編基礎的知道,程式運作流程受PC指針控制,PC指針指向哪個位址,程式就會去這個位址執行。
通常情況,沒有虛拟位址存在情況,這個PC通路的位址就是實體位址,PC直接指向這個實體位址,在存儲器内執行相關代碼指令,控制寄存器等動作。
虛拟位址
連結位址
arm-linux-ld -Ttext 0x3000000 -g -o led_on_elf crt0.o led_lighton.o