我們先看一下入口地址的確定,同一文件。
SECTIONS
{
/*
* XXX: The linker does not define how output sections are
* assigned to input sections when there are multiple statements
* matching the same input section name. There is no documented
* order of matching.
*
* unwind exit sections must be discarded before the rest of the
* unwind sections get included.
*/
/DISCARD/ : {
*(.ARM.exidx.exit.text)
*(.ARM.extab.exit.text)
ARM_CPU_DISCARD(*(.ARM.exidx.cpuexit.text))
ARM_CPU_DISCARD(*(.ARM.extab.cpuexit.text))
ARM_EXIT_DISCARD(EXIT_TEXT)
ARM_EXIT_DISCARD(EXIT_DATA)
EXIT_CALL
#ifndef CONFIG_MMU
*(.text.fixup)
*(__ex_table)
#endif
#ifndef CONFIG_SMP_ON_UP
*(.alt.smp.init)
#endif
*(.discard)
*(.discard.*)
}
. = PAGE_OFFSET + TEXT_OFFSET;
.head.text : {
_text = .;
HEAD_TEXT
}
這個 SECTIONS 比較長,只放一部分。在這里有個比較重要的東西:
. = PAGE_OFFSET + TEXT_OFFSET;
這一句表示了 Linux 系統(tǒng)真正的啟動地址。
PAGE_OFFSET 是 Linux 內核空間的虛擬起始地址,定義在:
linux4.14/arch/arm64/include/asm/memory.h
注意,這里的地址都很重要,很多地方會用到。當然,這里的地址可能會隨著 Linux 內核版本的不同和硬件的不同,會變化。這里沒有一個具體的數,因為 VA_BITS 中的數字是可選的,大家可以根據自己的平臺算一下。
TEXT_OFFSET 定義在:
linux4.14/arch/arm/Makefile 中:
這個值一般是 0x00008000 ,算出 PAGE_OFFSET 后加上這個值就是 Linux 內核的起始地址。
修改這個偏移量就可以使Linux內核拷貝到不同的地址,自己修改注意內存對齊。
-
ARM
+關注
關注
134文章
9180瀏覽量
369467 -
內核
+關注
關注
3文章
1384瀏覽量
40442 -
Linux
+關注
關注
87文章
11351瀏覽量
210512 -
地址
+關注
關注
1文章
32瀏覽量
10837
發(fā)布評論請先 登錄
相關推薦
Linux內核自解壓過程分析
![<b class='flag-5'>Linux</b><b class='flag-5'>內核</b>自解壓過程分析](https://file1.elecfans.com/web2/M00/B3/45/wKgaomVysVSAas31AAAXBrUD8nI125.png)
Linux內核地址映射模型與Linux內核高端內存詳解
![<b class='flag-5'>Linux</b><b class='flag-5'>內核</b><b class='flag-5'>地址</b>映射模型與<b class='flag-5'>Linux</b><b class='flag-5'>內核</b>高端內存詳解](https://file1.elecfans.com//web2/M00/A7/46/wKgZomUMQ36ANQMWAAATFoFa5Ok330.png)
Linux的內核教程
如何知道m(xù)ac地址 怎么查看IP地址
![如何知道m(xù)ac<b class='flag-5'>地址</b> 怎么<b class='flag-5'>查看</b>IP<b class='flag-5'>地址</b>](https://file1.elecfans.com//web2/M00/A4/A6/wKgZomUMNR2AF5aIAADmJXSEk9o998.jpg)
怎么查看物理地址
![怎么<b class='flag-5'>查看</b>物理<b class='flag-5'>地址</b>](https://file1.elecfans.com//web2/M00/A5/41/wKgZomUMN5uAc5VLAAA5fADqD8w749.jpg)
如何查看Linux中的ip地址
![如何<b class='flag-5'>查看</b><b class='flag-5'>Linux</b>中的ip<b class='flag-5'>地址</b>](https://file.elecfans.com/web1/M00/BD/64/pIYBAF7LIFKARLNHAAAKoUQnYu8995.jpg)
Linux虛擬地址空間和物理地址空間的關系
![<b class='flag-5'>Linux</b>虛擬<b class='flag-5'>地址</b>空間和物理<b class='flag-5'>地址</b>空間的關系](https://file1.elecfans.com/web2/M00/A8/F1/wKgZomUiIxGAByqJAACYPI9U_z8159.jpg)
評論