当有了mmu之后cpu使用的就是已经过MMU映射的虚拟地址,而没有MMU的就是使用的物理的地址,对于CPU来说虚拟地址和实际地址是没有区别的,但是有了虚拟地址之后,同时运行的不同的程序中的变量就可能由相同的地址
写程序的时候连接地址也是没有虚拟地址和物理地址的概念的,就是一个单独的地址;
SECTIONS {
. = 0x30000000;
.text : { *(.text) }
.rodata ALIGN(4) : {*(.rodata)}
.data ALIGN(4) : { *(.data) }
.bss ALIGN(4) : { *(.bss) *(COMMON) }
}
位置无关码:
. = 0x30000000;这个程序应该放到 0x30000000位置,说的是SDRAM的地址
SECTIONS {
. = 0x30000000;
.text : { *(.text) }
.rodata ALIGN(4) : {*(.rodata)}
.data ALIGN(4) : { *(.data) }
.bss ALIGN(4) : { *(.bss) *(COMMON) }
}