FW_DYNAMIC固件
FW_DYNAMIC固件在運(yùn)行時(shí)從上一個(gè)啟動(dòng)階段獲取有關(guān)下一個(gè)啟動(dòng)階段的信息,例如引導(dǎo)加載程序或操作系統(tǒng)內(nèi)核。
- 上一個(gè)啟動(dòng)階段(即LOADER)通過(guò)
a2
寄存器將struct fw_dynamic_info
的位置傳遞給FW_DYNAMIC - 之前的啟動(dòng)階段(即LOADER)需要知道
struct fw_dynamic_info
struct fw_dynamic_info {
/** Info magic */
unsigned long magic;
/** Info version */
unsigned long version;
/** Next booting stage address */
unsigned long next_addr;
/** Next booting stage mode */
unsigned long next_mode;
/** Options for OpenSBI library */
unsigned long options;
unsigned long boot_hart;
} __packed;
FW_JUMP固件
FW_JUMP固件假定下一個(gè)引導(dǎo)階段的地址固定,但是不直接包含下一階段的二進(jìn)制代碼,只是告訴OpenSBI,它運(yùn)行完后需要到哪個(gè)地址執(zhí)行。
例如,OpenSBI執(zhí)行完后,需要加載kernel,而Kernel的加載地址為0x80200000
,那么我們指定0x80200000
為需要跳轉(zhuǎn)的地址,OpenSBI執(zhí)行完畢后,就會(huì)跳轉(zhuǎn)到0x80200000
處去加載kernel。
具體例子:
OpenSBI執(zhí)行完后,去執(zhí)行uboot或者kernel,假設(shè)uboot或者kernel在內(nèi)存中的地址為0x80200000
,則編譯OpenSBI:
make PLATFORM=generic FW_JUMP_ADDR=0X80200000
在編譯OpenSBI時(shí),加入參數(shù)FW_JUMP_ADDR
,即可指定需要跳轉(zhuǎn)的地址。
注意, 由于OpenSBI運(yùn)行在M模式下,本質(zhì)上也是一個(gè)bootloader ,啟動(dòng)時(shí),OpenSBI就會(huì)進(jìn)行一些硬件的初始化操作,加上fw_jump固件可以指定跳轉(zhuǎn)地址,因此 對(duì)于RISC-V Linux而言,OpenSBI執(zhí)行完后,可以不執(zhí)行uboot,直接啟動(dòng)kernel ,將uboot去掉,不影響RISC-V Linux正常啟動(dòng)。
在某些內(nèi)存優(yōu)化的場(chǎng)景下,可以考慮將uboot去掉,利用fw_jump固件直接啟動(dòng)kernel,從而節(jié)省內(nèi)存。
FW_PAYLOAD固件
FW_PAYLOAD固件直接包含下一引導(dǎo)階段的二進(jìn)制代碼,下一引導(dǎo)階段通常是bootloader或os鏡像。
不同于FW_JUMP固件的指定地址跳轉(zhuǎn),F(xiàn)W_PAYLOAD固件是將bootloader或os鏡像直接打包進(jìn)來(lái)。
具體例子:
將uboot打包進(jìn)來(lái),則編譯OpenSBI:
make PLATFORM=generic FW_PAYLOAD_PATH=uboot.bin
將Linux kernel打包進(jìn)來(lái),則編譯OpenSBI:
make PLATFORM=generic FW_PAYLOAD_PATH=Image
在編譯OpenSBI時(shí),加入?yún)?shù)FW_PAYLOAD_PATH
,即可以將下一引導(dǎo)階段的二進(jìn)制代碼打包進(jìn)來(lái)。相當(dāng)于將OpenSBI、uboot、kernel合并為一個(gè)文件。
實(shí)際中,我們用的更多的是FW_PAYLOAD固件,將uboot和OpenSBI一起編譯。
-
寄存器
+關(guān)注
關(guān)注
31文章
5357瀏覽量
120689 -
內(nèi)核
+關(guān)注
關(guān)注
3文章
1377瀏覽量
40326 -
Linux
+關(guān)注
關(guān)注
87文章
11322瀏覽量
209865 -
固件
+關(guān)注
關(guān)注
10文章
558瀏覽量
23068 -
RISC
+關(guān)注
關(guān)注
6文章
463瀏覽量
83773
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論