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

配置和编译opensbi的配置选项位于不同平台下的config.mk文件,例如platform/generic/config.mk:
# blobs to buildfw_text_start=0x80000000fw_dynamic=yfw_jump=yfw_payload=yifeq ($(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)))endiffw_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=0x400000else # this needs to be 2mb aligned for 64-bit system fw_payload_offset=0x200000endiffw_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启动时建立的页表有关,需要深入分析才知道。

同样3999元,小米11比小米10多了什么?
最后14天倒计时,台积电加快全面建设华为芯片步伐
日本数码相机巨头节节败退 奥林巴斯宣布停产停工
基于Alpaca派生的多轮对话数据集
NFC技术和二维码兵戎相见,技术的含金量并不决定价值
RISC-V Linux运行时OpenSBI配置和编译
时控开关怎么关闭不用
嵌入式大趴回归!机智云邀您报名参加2023 STM32全国巡回研讨会
搭载鸿蒙系统的智能手表和笔记本即将登陆海外市场
安科瑞综合智慧能源管理系统解决方案
区块链是什么?它将如何重构未来电网布局
深度解析RocketMQ的消息存储整体架构
斑马技术携多领域物联网解决方案亮相2023 IOTE深圳物联网展
索尼预计2020财年CMOS图像传感器销量额同比下降11.8%
聚焦“硬科技”创新,亿达科创亮相2022西安科博会
OLED拼接屏在梅州的场景化应用中有哪些优点展示?
防火有它,安全万家!
终端匹配电阻是否可以降低电磁辐射的干扰?
iPhone 15价格:涨价基本没跑了
中兴回应裁员:公司每年流动5%属正常 全球8万人