配置和编译
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)
选择编译需要的固件类型:
三种固件,根据自己的需求,在对应的固件类型配置为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启动时建立的页表有关,需要深入分析才知道。
-
内核
+关注
关注
4文章
1436浏览量
42505 -
Linux
+关注
关注
88文章
11631浏览量
218023 -
固件
+关注
关注
11文章
568浏览量
24613 -
RISC
+关注
关注
6文章
485浏览量
86121 -
编译
+关注
关注
0文章
688浏览量
34951
发布评论请先 登录
如何检查Linux服务器的运行时间
【「RISC-V体系结构编程与实践」阅读体验】-- SBI及NEMU环境
《RISC-V能否复制Linux 的成功?》
基于risc-v架构的芯片与linux系统兼容性讨论
开发者为Linux添加了一系列RISC-V UEFI支持补丁
安卓支持RISC-V架构的技术剖析
RISC-V GNU Toolchain 编译安装
方舟编译器官发布对 RISC-V 后端的支持
关于risc-v启动部分的思考
RISC-V嵌入式开发准备篇1:编译过程简介
RISC-V MCU开发 (四):编译配置

RISC-V Linux运行时OpenSBI配置和编译
评论