一、硬件上電
二、一級啟動(dòng):bootROM
Boot ROM是廠商都無法進(jìn)行更改,固化在芯片內(nèi)部的ROM;
作用:
確定用于啟動(dòng)的設(shè)備;
從啟動(dòng)的設(shè)備的位置搬移一小段代碼(4k/8k/16k)到RAM中運(yùn)行,即SPL;
三、二級啟動(dòng):SPL+uboot
1.SPL: Secondary Program Loader:
作用:
初始化DDR;
從啟動(dòng)的設(shè)備搬移第二段代碼到RAM中,加載uboot;
(有些SoC是將bootloader復(fù)制到RAM后,再進(jìn)行DDR初始化;)
2.uboot: Universal boot loader:
U-Boot從啟動(dòng)設(shè)備上面讀取、分析環(huán)境變量獲得kernel和rootfs存儲位置,以及所需的kernel command line;
自動(dòng)檢測系統(tǒng)RAM和eMMC/Nand Flash容量和參數(shù);
設(shè)置以太網(wǎng)口MAC地址,并配置好硬件準(zhǔn)備加載Linux kernel;
加載Linux kernel到RAM,至此系統(tǒng)控制權(quán)則轉(zhuǎn)移到kernel來處理;
四、Linux Kernel
系統(tǒng)Kernel初始化Linux,加載rootfs,最后啟動(dòng)’init’來初始化Linux user space
五、不同的OS
Android、Yocto、ubuntu、fedora
補(bǔ)充:
一個(gè)嵌入式Linux系統(tǒng)從軟件的角度看通??梢苑譃樗膫€(gè)層次:
1、 引導(dǎo)加載程序。包括固化在固件(firmware)中的boot代碼(可選),和BootLoader兩大部分。(bootROM,uboot)
2、Linux內(nèi)核。特定于嵌入式板子的定制內(nèi)核以及內(nèi)核的啟動(dòng)參數(shù)。(linux kernel)
3、 文件系統(tǒng)。包括根文件系統(tǒng)和建立于Flash內(nèi)存設(shè)備之上文件系統(tǒng)。通常用ramdisk來作為rootfs。
4、 用戶應(yīng)用程序。特定于用戶的應(yīng)用程序。有時(shí)在用戶應(yīng)用程序和內(nèi)核層之間可能還會包括一個(gè)嵌入式圖形用戶界面。常用的嵌入式GUI有:MicroWindows和MiniGUI等。
BootLoader是一段小程序,主要功能是引導(dǎo)操作系統(tǒng)啟動(dòng)??梢园阉胂蟪蒔C機(jī)Linux上的GRUB/LILO引導(dǎo)程序,只不過在嵌入式linux中,沒有BIOS,而是直接從flash中運(yùn)行,來裝載內(nèi)核。它可以初始化硬件設(shè)備,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)做好準(zhǔn)備