快速了解嵌入式Linux開(kāi)機啟動(dòng)流程
關(guān)于嵌入式Linux的開(kāi)機啟動(dòng)流程網(wǎng)上有很多資料,這里我們僅進(jìn)行一個(gè)簡(jiǎn)單的介紹,旨在讓人能快速了解整個(gè)啟動(dòng)流程。
本文引用地址:http://dyxdggzs.com/article/201805/380283.htm整個(gè)開(kāi)機流程可以歸結為以下幾點(diǎn):

首先分個(gè)介紹:
ROM Code(芯片內固化好的一段代碼),起最初的引導功能,包括初始化時(shí)鐘、片內RAM、相關(guān)外設等,讀取引腳配置信息等;
U-Boot(Universal Boot Loader),初始化相關(guān)硬件設備,引導系統加載內核鏡像的一段程序;
Kernel,負責存儲器、文件、外設等的管理,以及進(jìn)程通信、調度等;
文件系統,負責文件的管理;
應用,就是各個(gè)應用程序。
為形象點(diǎn)說(shuō)明,我們將整個(gè)流程比作開(kāi)一輛車(chē)子,我們把上面那幅圖進(jìn)行更改:

上電后CPU執行內部固化好的一段代碼(ROM Code),初始化相關(guān)外設,根據外部引腳的信息,選擇從哪個(gè)存儲設備讀取U-Boot(emmc、TF卡......),然后將U-Boot加載到內存上運行,U-Boot完成相關(guān)外設配置后,將Kernel加載到內存上,至此,由Kernel負責剩下的任務(wù)。
這里ROM Code是上電后最先執行的動(dòng)作,就相當一個(gè)啟動(dòng)引導的過(guò)程;U-Boot除了初始外設外,還有很重要的一點(diǎn)就是為Kernel初始化相關(guān)內存空間,為其加載做準備,這其實(shí)就相當于要使發(fā)動(dòng)機發(fā)動(dòng),要先為它提供能源;有了發(fā)動(dòng)機沒(méi)設備,空有動(dòng)力也做不了什么實(shí)質(zhì)的事,相反,沒(méi)有發(fā)動(dòng)機提供動(dòng)力,設備動(dòng)不起來(lái),這里其實(shí)就揭示著(zhù)Kernel和文件系統密不可分的關(guān)系;當一切準備就緒后,我們就可以在上面編寫(xiě)、運行應用相關(guān)的程序(開(kāi)車(chē))。
評論