arm芯片配合Linux系統(tǒng)使用的過程
時間:2025-01-03 來源:華清遠見
一 芯片上電與Boot ROM啟動
1.硬件復(fù)位:芯片上電,arm系統(tǒng)硬件復(fù)位后,CPU會從BootROM(只讀寄存器)中啟動,這個BootROM通常是廠商定制的,負責最初的硬件初始化,如時鐘,內(nèi)存,外設(shè)配置等。這里的硬件初始化是為了BootROM將引導(dǎo)程序加載在內(nèi)存中做的準備。追求快,簡單(就是只初始化了一部分,這一部分可以讓BootROM工作)。
2.引導(dǎo)程序加載:Boot ROM將引導(dǎo)程序(Bootloader)加載到內(nèi)存中,
二 Bootloader引導(dǎo)
Bootloader是系統(tǒng)加電運行的第一段代碼,在嵌入式系統(tǒng)中相當于PC機中的BIOS。
Bootloader通常分為兩個階段:第一階段(FSBL)和第二階段(如U-Boot)。1. 第一階段引導(dǎo)(FSBL):
a. 硬件初始化:對硬件進行基本的初始化,包括初始化RAM(內(nèi)存控制器配置),處理器(CPU,時鐘,外設(shè)等)以及設(shè)置引導(dǎo)介質(zhì)(如NAND Flash,eMMC,SD卡等。這里的硬件初始化是從新開始把所有的硬件都初始化了。
b. 加載第二階段引導(dǎo)程序:將第二階段引導(dǎo)程序(如U-Boot)加載到內(nèi)存。
2.第二階段引導(dǎo)(U-Boot):
c. 進一步硬件初始化:包括更多外設(shè)和I/O的初始化。
d. 加載Linux內(nèi)核映像:從存儲設(shè)備(如eMMC,NAND Flash,SD卡)中讀取Linux內(nèi)核映像,并將其加載到內(nèi)存。
e. 配置設(shè)備樹:為內(nèi)核提供硬件信息。
f. 配置啟動參數(shù):如根文件系統(tǒng),內(nèi)核命令行等。
g. 啟動Linux內(nèi)核:在配置完成后,啟動Linux內(nèi)核。
注意:如果不是做系統(tǒng)移植,這個第二階段引導(dǎo)(U-Boot)里面的配置參數(shù)步驟,就可以不用配置。使用默認的即可。
三 內(nèi)核加載與初始化
1.內(nèi)核加載:Bootloader將Linux內(nèi)核映像加載到內(nèi)存,并傳遞必要的啟動參數(shù)。
2.內(nèi)核初始化:Linux內(nèi)核啟動后,進行硬件檢測和初始化,包括內(nèi)存,CPU,設(shè)備樹等。內(nèi)核會設(shè)置系統(tǒng)環(huán)境,為后續(xù)的用戶空間程序運行做準備。
四 用戶空間啟動
1.啟動init進程:內(nèi)核初始化完成后,會啟動init進程,init進程是系統(tǒng)的第一個用戶空間進程,負責初始化系統(tǒng)環(huán)境,啟動必要的服務(wù)和應(yīng)用程序。
2.服務(wù)和應(yīng)用程序運行:在init進程啟動后,用戶空間的所有服務(wù)和應(yīng)用程序開始運行,這些程序可以是系統(tǒng)自帶的,也可以是用戶自行安裝的。例如:自己在arm開發(fā)板上寫了亮燈程序,就可以運行了。
一文讀懂硬實時和軟實時
arm芯片配合Linux系統(tǒng)使用的過程
如何利用機器學習構(gòu)建個性化推薦系統(tǒng)
嵌入式系統(tǒng)從上電到操作系統(tǒng)運行的完整啟動流程
如何在不同工作場景下優(yōu)化嵌入式系統(tǒng)的電源消耗
硬件抽象層(HAL)的設(shè)計如何提高代碼的可移植性
批量歸一化在深度學習訓練中的作用和實現(xiàn)方法
物聯(lián)網(wǎng)項目中設(shè)計嵌入式系統(tǒng)時的關(guān)鍵技術(shù)和考慮因素
通過自然語言處理技術(shù)理解文本的深層含義
如何基于RISC-V架構(gòu)設(shè)計高效能的嵌入式系統(tǒng)
