OpenSBI固件類型
在介紹OpenSBI固件類型前,我們需要知道一點(diǎn)RISC-V Linux的啟動(dòng)過(guò)程:
啟動(dòng)流程:ZSBL-->FSBL-->OpenSBI-->u-boot-->Linux
ZSBL和FSBL通常固化在芯片內(nèi)部,不在本文討論范圍,本文關(guān)注OpenSBI。
可以看到,在啟動(dòng)uboot之前,需要先啟動(dòng)OpenSBI,然后再執(zhí)行uboot/linux。而OpenSBI提供了不同的固件類型來(lái)處理不同平臺(tái)早期啟動(dòng)階段的差異。
OpenSBI簡(jiǎn)介
OpenSBI為特定平臺(tái)提供固件構(gòu)建,支持不同類型的固件來(lái)處理不同平臺(tái)早期啟動(dòng)階段之間的差異。所有固件將根據(jù)平臺(tái)特定代碼以及OpenSBI通用庫(kù)代碼執(zhí)行平臺(tái)硬件的相同初始化過(guò)程。支持的固件類型在如何處理平臺(tái)早期啟動(dòng)階段傳遞的參數(shù)以及如何處理和執(zhí)行固件之后的啟動(dòng)階段方面會(huì)有所不同。
上一個(gè)引導(dǎo)階段將通過(guò)RISC-V CPU的以下寄存器傳遞信息:
hart id
通過(guò)a0
寄存器傳遞- 通過(guò)
a1
寄存器在內(nèi)存中存儲(chǔ)設(shè)備樹 blob 地址。地址必須與 8 個(gè)字節(jié)對(duì)齊。
OpenSBI 目前支持三種不同類型的固件 :
fw_dynamic
固件:帶有動(dòng)態(tài)信息的固件fw_jump
固件:指定下一引導(dǎo)階段的跳轉(zhuǎn)地址,不直接包含下一階段的二進(jìn)制代碼fw_payload
固件:包含下一引導(dǎo)階段有效負(fù)載的二進(jìn)制代碼,通常這個(gè)有效負(fù)載是bootloader或者操作系統(tǒng)鏡像
-
寄存器
+關(guān)注
關(guān)注
31文章
5427瀏覽量
123709 -
內(nèi)核
+關(guān)注
關(guān)注
3文章
1412瀏覽量
41181 -
Linux
+關(guān)注
關(guān)注
87文章
11479瀏覽量
213040 -
固件
+關(guān)注
關(guān)注
10文章
564瀏覽量
23759 -
RISC
+關(guān)注
關(guān)注
6文章
480瀏覽量
84781
發(fā)布評(píng)論請(qǐng)先 登錄
編程器固件和路由器固件什么不同
Firefly-RK3288Android 升級(jí)固件介紹

fireflyFace-RK3399主板升級(jí)固件介紹
fireflyAIO-3399C主板編譯Buildroot固件介紹
fireflyAIO-3399C主板升級(jí)固件介紹
fireflyAIO-3288J-Android 升級(jí)固件介紹

opensbi下的riscv64裸機(jī)系列編程1(串口輸出)
NodeMCU學(xué)習(xí)筆記(1)--- 硬件介紹、固件制作、燒錄

螺紋緊固件中螺絲和螺栓的類型
OpenSBI支持哪些固件
基于OpenSBI的linux nommu實(shí)現(xiàn)

評(píng)論