• 正文
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

飛凌嵌入式ElfBoard ELF 1板卡-Linux內(nèi)核移植之內(nèi)核啟動流程

01/06 09:50
1252
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

關(guān)于內(nèi)核啟動流程涉及內(nèi)容較多而且復(fù)雜,過度的分析意義不大,因此,這里不做詳細(xì)講解,只做一個大概的介紹。初學(xué)者只做了解,有一定基礎(chǔ)的可以深入理解。

內(nèi)核鏡像被uboot加載到內(nèi)存空間之后,獲得控制權(quán),內(nèi)核啟動流程開始。在前面章節(jié)講解zImage生成過程的時候說過內(nèi)核鏡像image是被壓縮進zImage之中的。所以,內(nèi)核獲得控制權(quán)之后,第一件事,是解壓縮內(nèi)核鏡像。解壓縮工作由arch/arm/boot/compressed/head.S完成,head.S在解壓完zImage之后將生成的image鏡像重定位到內(nèi)核入口地址0X80008000,并跳轉(zhuǎn)到此處執(zhí)行image。

打開arch/arm/kernel/vmlinux.lds可以找到內(nèi)核入口ENTRY(stext):

而stext存在于arch/arm/kernel/head.S中:

在stext下有一個__mmap_switched函數(shù):

該函數(shù)存在于arch/arm/kernel/head-common.S,其中有一句跳轉(zhuǎn)指令:b start_kernel

從start_kernel函數(shù)開始,內(nèi)核進入C語言部分,完成內(nèi)核的大部分初始化工作。start_kernel函數(shù)存在于init/Main.c中:

函數(shù)在最后調(diào)用rest_init函數(shù):

此函數(shù)中調(diào)用了kernel_init函數(shù),kernel_init函數(shù)完成了設(shè)備驅(qū)動程序的初始化,并啟動了用戶進程:

飛凌嵌入式

飛凌嵌入式

保定飛凌嵌入式技術(shù)有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計和生產(chǎn)的高新技術(shù)企業(yè),是國內(nèi)較早專業(yè)從事嵌入式技術(shù)的企業(yè)之一。 經(jīng)過十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團隊,在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設(shè)有華東、華南技術(shù)服務(wù)中心,并在北美、歐洲以及亞太等其他國家和地區(qū)擁有國際業(yè)務(wù)網(wǎng)絡(luò)。公司研發(fā)的智能設(shè)備核心平臺廣泛應(yīng)用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機器人、環(huán)境監(jiān)測等諸多領(lǐng)域。

保定飛凌嵌入式技術(shù)有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計和生產(chǎn)的高新技術(shù)企業(yè),是國內(nèi)較早專業(yè)從事嵌入式技術(shù)的企業(yè)之一。 經(jīng)過十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團隊,在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設(shè)有華東、華南技術(shù)服務(wù)中心,并在北美、歐洲以及亞太等其他國家和地區(qū)擁有國際業(yè)務(wù)網(wǎng)絡(luò)。公司研發(fā)的智能設(shè)備核心平臺廣泛應(yīng)用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機器人、環(huán)境監(jiān)測等諸多領(lǐng)域。收起

查看更多

相關(guān)推薦