繼《最全教程來啦!在RISC-V星光板上創(chuàng)建Debian系統(tǒng)鏡像》之后,這一期來聊聊RISC-V星光板的啟動流程。
如何更直觀理解VisionFive的啟動流程呢?小編用一張圖摹擬整個過程。
通電開機(jī)加載BootROM后,有兩種方法去啟動Bootloader(在嵌入式系統(tǒng)中,通常沒有像BIOS那樣的固件程序,因此整個系統(tǒng)的加載啟動任務(wù)完全由Bootloader來完成)。
第一種是通過UART,即通過簡單輸入一條命令,加載一個固定大小的二進(jìn)制文件到芯片的內(nèi)存中并執(zhí)行它,這種模式主要用于固件更新;
第二種是通過QSPI(Quad SPI),即BootROM將32k大小的Bootloader從QSPI讀取到SRAM區(qū)并開始執(zhí)行。不難看出,QSPI更為方便,官方也推薦這個方式。
通過QSPI模式,BootROM把32k的bootloader從QSPI讀取到主芯片內(nèi)部的SRAM區(qū)并啟動。大家可以看到上圖淺藍(lán)色區(qū)域,這個區(qū)域的文件都是在開發(fā)板出廠時,刷寫好到QSPI閃存芯片里的內(nèi)容,包括了secondboot,ddrinit,OpenSBI和U-Boot。
secondboot是一個只有9KB左右的bin文件,它去讀取閃存中ddrinit,跳轉(zhuǎn)過去后初始化內(nèi)存并引導(dǎo)閃存上的fw_payload.bin.out文件,而這個fw_payload.bin.out包含了 OpenSBI和Uboot的頭和文件信息,于是直接跳轉(zhuǎn)到OpenSBI了。
什么是OpenSBI呢?
OpenSBI的全稱是Open SupervisorBinary Interface ,即“開放的操作系統(tǒng)二進(jìn)制接口”,大家可以將OpenSBI 理解成固件。其特點(diǎn)有二,第一,以 M 模式和啟動器來定義的平臺固件,可以作為一個管理程序或者是通用操作系統(tǒng)執(zhí)行,并且進(jìn)入S或者HS模式;第二,以HS模式和啟動器的管理程序,或者一個通用的操作系統(tǒng),可以執(zhí)行并進(jìn)入VS模式。
M模式即Machine-Mode,可以理解為固件特權(quán)級;S模式即Supervisor-Mode,可以理解為操作系統(tǒng)內(nèi)核特權(quán)級。在啟動流程中,OpenSBI作用就是讓開發(fā)板從M運(yùn)行模式引導(dǎo)操作系統(tǒng)內(nèi)核,讓操作系統(tǒng)內(nèi)核運(yùn)行進(jìn)入 S 模式。
其他模式就不過多解釋啦,感興趣的朋友可自行搜索。
最后,從OpenSBI到U-Boot 的過程可以拆分來看,OpenSBI為Linux提供基本的系統(tǒng)響應(yīng),系統(tǒng)從M模式轉(zhuǎn)換為S模式,跳轉(zhuǎn)并啟動位于內(nèi)存對應(yīng)位置的U-Boot。而隨著U-Boot啟動,Linux系統(tǒng)也開始啟動了。
-
RISC
+關(guān)注
關(guān)注
6文章
460瀏覽量
83566
發(fā)布評論請先 登錄
相關(guān)推薦
評論