配置和編譯
OpenSBI的配置選項位于不同平臺下的config.mk
文件,例如platform/generic/config.mk
:
# Blobs to build
FW_TEXT_START=0x80000000
FW_DYNAMIC=y
FW_JUMP=y
FW_PAYLOAD=y
ifeq ($(PLATFORM_RISCV_XLEN), 32)
# This needs to be 4MB aligned for 32-bit system
FW_JUMP_ADDR=$(shell printf "0x%X" $$(($(FW_TEXT_START) + 0x400000)))
else
# This needs to be 2MB aligned for 64-bit system
FW_JUMP_ADDR=$(shell printf "0x%X" $$(($(FW_TEXT_START) + 0x200000)))
endif
FW_JUMP_FDT_ADDR=$(shell printf "0x%X" $$(($(FW_TEXT_START) + 0x2200000)))
ifeq ($(PLATFORM_RISCV_XLEN), 32)
# This needs to be 4MB aligned for 32-bit system
FW_PAYLOAD_OFFSET=0x400000
else
# This needs to be 2MB aligned for 64-bit system
FW_PAYLOAD_OFFSET=0x200000
endif
FW_PAYLOAD_FDT_ADDR=$(FW_JUMP_FDT_ADDR)
選擇編譯需要的固件類型:
三種固件,根據(jù)自己的需求,在對應的固件類型配置為y:
FW_DYNAMIC
=yFW_JUMP
=yFW_PAYLOAD
=y
默認三種固件類型都編譯。
FW_TEXT_START
OpenSBI的運行地址,需要把OpenSBI下載到FW_TEXT_START指定的地址才能運行
FW_JUMP_ADDR
FW_JUMP固件的跳轉地址,對于RV32需要4M對齊,對于RV64需要2M對齊
FW_PAYLOAD_OFFSET
FW_PAYLOAD固件的偏移地址,對于RV32需要4對齊,對于RV64需要2M對齊
FW_JUMP_FDT_ADDR
和FW_PAYLOAD_FDT_ADDR
設備樹的地址
這里可能有個疑問:為什么跳轉地址/偏移地址需要2M對齊或4M對齊?這個跟RISC-V Linux啟動時建立的頁表有關,需要深入分析才知道。
-
內(nèi)核
+關注
關注
3文章
1415瀏覽量
41252 -
Linux
+關注
關注
87文章
11496瀏覽量
213248 -
固件
+關注
關注
10文章
566瀏覽量
23799 -
RISC
+關注
關注
6文章
480瀏覽量
84844 -
編譯
+關注
關注
0文章
676瀏覽量
33871
發(fā)布評論請先 登錄
如何檢查Linux服務器的運行時間

【「RISC-V體系結構編程與實踐」閱讀體驗】-- SBI及NEMU環(huán)境
《RISC-V能否復制Linux 的成功?》
基于risc-v架構的芯片與linux系統(tǒng)兼容性討論
開發(fā)者為Linux添加了一系列RISC-V UEFI支持補丁
安卓支持RISC-V架構的技術剖析
RISC-V GNU Toolchain 編譯安裝
方舟編譯器官發(fā)布對 RISC-V 后端的支持
關于risc-v啟動部分的思考

RISC-V嵌入式開發(fā)準備篇1:編譯過程簡介

RISC-V MCU開發(fā) (四):編譯配置

評論