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