配置和编译
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启动时建立的页表有关,需要深入分析才知道。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
内核
+关注
关注
3文章
1367浏览量
40252 -
Linux
+关注
关注
87文章
11236浏览量
209024 -
固件
+关注
关注
10文章
551浏览量
22988 -
RISC
+关注
关注
6文章
461浏览量
83665 -
编译
+关注
关注
0文章
654浏览量
32824
发布评论请先 登录
相关推荐
如何检查Linux服务器的运行时间
Linux 中的 uptime 用于查看系统启动后的运行时间。它是一个比较简单的 Linux 命令,可以不带参数直接运行。
发表于 11-25 15:25
•1.5w次阅读
【「RISC-V体系结构编程与实践」阅读体验】-- SBI及NEMU环境
,运行在S模式下的操作系统提供引导和统一的接口服务。
本书的实验并没有采用业界流行的OpenSBI固件,而是从零开始编写一个小型可用的SBI固件,以便从底层深入学习RISC-V体系结构。
系统上电后
发表于 11-26 09:37
《RISC-V能否复制Linux 的成功?》
的产品,Linux成为开源软件发展的基石。
这种成功是否可以复制到开源硬件上呢?RISC-V这样的指令集架构(ISA)是否也可以像Linux内核作为开源软件的基础一样,成为开源硬件发展的基石呢?
这个
发表于 11-26 20:20
基于risc-v架构的芯片与linux系统兼容性讨论
和应用程序无法在不同架构之间直接互换。在RISC-V架构上运行Linux系统时,需要确保有适用于RISC-V架构的编译工具链和二进制格式。
发表于 11-30 17:20
开发者为Linux添加了一系列RISC-V UEFI支持补丁
10 重命名了 arm-init,以便可以在不同的代码中使用该基础;补丁 11 则为 RISC-V 添加了运行时服务。总结起来,这一系列补丁的主要贡献在于:添加了完整的 ioremap 支持。添加
发表于 08-13 15:19
安卓支持RISC-V架构的技术剖析
://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b llvm-toolchainrepo sync该工程中需要为RISC-V添加工具前缀、架构配置、运行时库
发表于 09-01 15:45
RISC-V GNU Toolchain 编译安装
RISC-V GNU Toolchain 源码获取$git clone https://github.com/riscv/riscv-gnu-toolchain.git&
发表于 04-16 00:22
方舟编译器官发布对 RISC-V 后端的支持
昨日,方舟编译器官方新发布了对 RISC-V 后端的支持。 地址:https://gitee.com/openarkcompiler-incubator/mapleall 目前,方舟编译器可以在
关于risc-v启动部分的思考
顺序 3.什么是SBI? 4.什么是opensbi 5.openSBI call接口的实现 6.总结 1.本文说明 risc-v的架构有着非常鲜明的特点,如果看过arm,aarch64,mips等架构
RISC-V嵌入式开发准备篇1:编译过程简介
本文的目的是对编译过程进行简单的科普与回顾,为后续详细介绍“RISC-V GCC工具链”和“RISC-V汇编语言程序设计”打下基础。
发表于 11-02 19:06
•40次下载
RISC-V MCU开发 (四):编译配置
RISC-V MCU开发 (四):编译配置在嵌入式开发中,当我们完成了工程创建、代码编辑等操作之后,就可以开始进行工程编译。 对于使用内置工程模板创建或外部导入的项目,MounRive
发表于 12-07 19:21
•3次下载
ch32v307记录程序运行时间
ch32v307记录程序运行时间 在程序开发中,很重要的一项任务就是对程序的运行时间进行评估。对于大型的程序系统来说,它们通常需要处理大量的数据或进行复杂的计算操作。因此,如果程序的运行时
评论