一圖勝千言!看圖:
上圖是嵌入式系統(tǒng)啟動(dòng)流程圖,圖中紅色的數(shù)字圓點(diǎn)表示啟動(dòng)的先后順序。主要分為 4 個(gè)階段,分別是:第一階段 bootloader,第二階段uboot,第三階段內(nèi)核啟動(dòng),第四階段 app 啟動(dòng)。
第一:bootloader階段
主要完成第一階段系統(tǒng)的引導(dǎo)和初始化工作,包括序號(hào)1~3。
系統(tǒng)上電后,首先是cpu開始工作,此時(shí)引導(dǎo)程序(通常是匯編代碼)從ROM被加載到RAM 中,對(duì) cpu 的寄存器進(jìn)行初始化,啟動(dòng)核 0,如果是核1或者其他核則處于休眠狀態(tài),等待核 0 在內(nèi)核啟動(dòng)正常后通過中斷或者事件將其喚醒(圖中10的位置)。
接下來就是完成 flash 和 ddr 初始化,為后面從 flash 加載 bin 文件,在 DDR 中運(yùn)行程序提供基本環(huán)境,一般情況下都是從flash為0的位置,將flash中的bootloader 鏡像文件加載到 RAM 或 DDR 中,該引導(dǎo)程序最終將uboot從flash 復(fù)制到 DDR 中,然后交接給 uboot 進(jìn)行下一步處理。
第二:uboot 階段
首先對(duì) dram,flash,串口進(jìn)行檢查,保障 uboot 的運(yùn)行環(huán)境是 ok 的,同時(shí)為 linux分配內(nèi)存空間;接下來初始化網(wǎng)絡(luò)配置,包括mac地址的設(shè)置、通信端口的工作模式設(shè)置,可以讓用戶通過網(wǎng)絡(luò)加載程序;最后將linux從flash中復(fù)制到內(nèi)存中。
linux 鏡像文件中包含內(nèi)核、文件系統(tǒng)和設(shè)備管理樹 (FDT) 三個(gè)基本組件,uboot 會(huì)根據(jù)設(shè)備管理樹定義的信息進(jìn)行檢查,然后依次加載到內(nèi)存中 。包括序號(hào)4~5,這個(gè)階段最后將 linux 加載后,就可以交接給內(nèi)核進(jìn)行操作。
第三:內(nèi)核啟動(dòng)階段
主要負(fù)責(zé)創(chuàng)建進(jìn)程、綁定進(jìn)程、劃分內(nèi)存、喚醒核1、加載文件系統(tǒng)等基本工作,包括序號(hào)6~13。
首先,會(huì)生成一個(gè)初始進(jìn)程init0,后續(xù)創(chuàng)建的所有進(jìn)程都是從該進(jìn)程中產(chǎn)生,該進(jìn)程還負(fù)責(zé)對(duì)內(nèi)存和虛擬內(nèi)存進(jìn)行劃分。
然后 vfork 出一個(gè)主核進(jìn)程,綁定到核 0 上,接下來由 cpu 主核(核0)喚醒其他的核,從 init 進(jìn)程 vfork 出副核進(jìn)程,并將該進(jìn)程綁定到核1上。
最后是基于設(shè)備管理樹完成對(duì)系統(tǒng)中其他設(shè)備的初始化。
第四:app啟動(dòng)階段
這一階段主要對(duì)各類 app 應(yīng)用進(jìn)行初始化,如文中以通信設(shè)備為例,此處主要完成對(duì)轉(zhuǎn)發(fā)芯片的初始化,會(huì)涉及一些基礎(chǔ)轉(zhuǎn)發(fā)表項(xiàng)的初始配置,端口和各種通信總線的初始化。
接下來會(huì)初始化中間件,中間件是作為應(yīng)用程序和操作系統(tǒng)之間的橋梁,向下屏蔽操作系統(tǒng)的差異,向上為應(yīng)用程序提供平臺(tái)化的技術(shù)支持;最后就是各種應(yīng)用程序的初始化了,包括各種特性的初始化,心跳信息,單板信息,版本信息等等。
日常工作中,最容易出問題的地方其實(shí)都是在 app 的啟動(dòng)階段,這部分才是最應(yīng)該做一個(gè)詳盡的圖出來,后續(xù)筆者有了具體的項(xiàng)目案例后將會(huì)補(bǔ)充該圖例。
-
寄存器
+關(guān)注
關(guān)注
31文章
5357瀏覽量
120685 -
嵌入式系統(tǒng)
+關(guān)注
關(guān)注
41文章
3605瀏覽量
129568 -
RAM
+關(guān)注
關(guān)注
8文章
1369瀏覽量
114778
原文標(biāo)題:一張圖秒懂嵌入式系統(tǒng)的啟動(dòng)流程
文章出處:【微信號(hào):嵌入式開發(fā)愛好者,微信公眾號(hào):嵌入式開發(fā)愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論