我們先看一下入口地址的確定,同一文件。
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 內(nèi)核空間的虛擬起始地址,定義在:
linux4.14/arch/arm64/include/asm/memory.h

注意,這里的地址都很重要,很多地方會用到。當(dāng)然,這里的地址可能會隨著 Linux 內(nèi)核版本的不同和硬件的不同,會變化。這里沒有一個具體的數(shù),因?yàn)?VA_BITS 中的數(shù)字是可選的,大家可以根據(jù)自己的平臺算一下。
TEXT_OFFSET 定義在:
linux4.14/arch/arm/Makefile 中:


這個值一般是 0x00008000 ,算出 PAGE_OFFSET 后加上這個值就是 Linux 內(nèi)核的起始地址。
修改這個偏移量就可以使Linux內(nèi)核拷貝到不同的地址,自己修改注意內(nèi)存對齊。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報(bào)投訴
-
ARM
+關(guān)注
關(guān)注
135文章
9561瀏覽量
392190 -
內(nèi)核
+關(guān)注
關(guān)注
4文章
1470瀏覽量
42904 -
Linux
+關(guān)注
關(guān)注
88文章
11770瀏覽量
219110 -
地址
+關(guān)注
關(guān)注
1文章
32瀏覽量
11216
發(fā)布評論請先 登錄
相關(guān)推薦
熱點(diǎn)推薦
Linux內(nèi)核自解壓過程分析
uboot完成系統(tǒng)引導(dǎo)以后,執(zhí)行環(huán)境變量bootm中的命令;即,將Linux內(nèi)核調(diào)入內(nèi)存中并調(diào)用do_bootm函數(shù)啟動內(nèi)核,跳轉(zhuǎn)至kernel的起始位置。
Linux內(nèi)核地址映射模型與Linux內(nèi)核高端內(nèi)存詳解
的數(shù)據(jù)可能不在內(nèi)存中。 Linux內(nèi)核地址映射模型 x86 CPU采用了段頁式地址映射模型。進(jìn)程代碼中的地址為邏輯
發(fā)表于 05-08 10:33
?3815次閱讀
Linux的內(nèi)核教程
本章學(xué)習(xí)目標(biāo)掌握LINUX內(nèi)核版本的含義理解并掌握進(jìn)程的概念掌握管道的概念及實(shí)現(xiàn)了解內(nèi)核的數(shù)據(jù)結(jié)構(gòu)了解LINUX內(nèi)核的算法掌握
發(fā)表于 04-10 16:59
?0次下載
如何知道m(xù)ac地址 怎么查看IP地址
如何知道m(xù)ac地址 怎么查看IP地址
步驟如下:
1 在“運(yùn)行”中輸入 cmd
2 在打開的命令提示符界面中輸入 ipconfig/all
3 里面的rnet NIC里有你
發(fā)表于 03-21 12:08
?5.4w次閱讀
怎么查看物理地址
怎么查看物理地址
點(diǎn)“開始”---“運(yùn)行”-----輸入--"cmd"" --回車---輸入--"ipconfig /all"
如下圖:
發(fā)表于 09-11 17:24
?6103次閱讀
如何查看Linux中的ip地址
在排除網(wǎng)絡(luò)問題,設(shè)置新連接或配置防火墻時,了解設(shè)備的 IP 地址非常重要。下面我們就來看看Linux中查看ip地址的方法吧!
發(fā)表于 05-25 09:35
?3296次閱讀
Linux虛擬地址空間和物理地址空間的關(guān)系
過程,這其實(shí)也是MMU的工作原理。 我們知道,在Linux中,每個進(jìn)程都有自己獨(dú)立的地址空間,且互不干擾。每個進(jìn)程的地址空間又分為用戶空間和內(nèi)核空間,但這些
linux系統(tǒng)查看ip地址命令
在Linux系統(tǒng)中,可以使用ifconfig命令來查看IP地址。ifconfig命令被用于配置和顯示網(wǎng)絡(luò)接口的網(wǎng)絡(luò)參數(shù),包括IP地址。執(zhí)行以下命令可以
linux系統(tǒng)查看物理地址
在Linux系統(tǒng)中,訪問和查看物理地址是一個非常重要的任務(wù),因?yàn)樗峁┝藢τ布O(shè)備的直接訪問。本文將詳細(xì)介紹如何在Linux系統(tǒng)中查看物理
linux 查看網(wǎng)卡狀態(tài)是否開啟
如何查看 Linux 網(wǎng)卡狀態(tài)是否開啟 在 Linux 系統(tǒng)中,我們可以使用一些命令來查看網(wǎng)卡狀態(tài)是否開啟。本文將詳細(xì)介紹如何使用這些命令來查看
linux查看網(wǎng)卡是down還是up
在Linux系統(tǒng)上,可以通過多種方式來查看網(wǎng)卡的狀態(tài)是否為down或up。下面將詳細(xì)介紹這些方法,并給出具體的步驟和示例。 ifconfig命令 ifconfig命令是Linux系統(tǒng)上最常用的
linux怎么查看網(wǎng)卡的收光功率?
linux怎么查看網(wǎng)卡的收光功率? 在Linux系統(tǒng)中,可以使用一些命令和工具來查看網(wǎng)卡的收光功率。本文將介紹如何使用這些命令和工具來查看和
在Linux中查看IP地址的方法
ifconfig是一個網(wǎng)絡(luò)管理工具,用于配置、控制和查詢網(wǎng)絡(luò)接口。在許多舊的Linux發(fā)行版中,ifconfig是查看和配置網(wǎng)絡(luò)接口的主要工具。
Linux內(nèi)核的起始地址查看
評論