0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OpenSBI固件类型介绍

麦辣鸡腿堡 来源:嵌入式Linux充电站 作者:Vincent 2023-10-08 14:11 次阅读

OpenSBI固件类型

在介绍OpenSBI固件类型前,我们需要知道一点RISC-V Linux的启动过程:

图片

启动流程:ZSBL-->FSBL-->OpenSBI-->u-boot-->Linux

ZSBL和FSBL通常固化在芯片内部,不在本文讨论范围,本文关注OpenSBI。

可以看到,在启动uboot之前,需要先启动OpenSBI,然后再执行uboot/linux。而OpenSBI提供了不同的固件类型来处理不同平台早期启动阶段的差异。

OpenSBI简介

OpenSBI为特定平台提供固件构建,支持不同类型的固件来处理不同平台早期启动阶段之间的差异。所有固件将根据平台特定代码以及OpenSBI通用库代码执行平台硬件的相同初始化过程。支持的固件类型在如何处理平台早期启动阶段传递的参数以及如何处理和执行固件之后的启动阶段方面会有所不同。

上一个引导阶段将通过RISC-V CPU的以下寄存器传递信息

  • hart id通过a0寄存器传递
  • 通过 a1 寄存器在内存中存储设备树 blob 地址。地址必须与 8 个字节对齐。

OpenSBI 目前支持三种不同类型的固件

  • fw_dynamic固件:带有动态信息的固件
  • fw_jump固件:指定下一引导阶段的跳转地址,不直接包含下一阶段的二进制代码
  • fw_payload固件:包含下一引导阶段有效负载的二进制代码,通常这个有效负载是bootloader或者操作系统镜像
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5141

    浏览量

    118055
  • 内核
    +关注

    关注

    3

    文章

    1313

    浏览量

    39905
  • Linux
    +关注

    关注

    87

    文章

    11017

    浏览量

    206957
  • 固件
    +关注

    关注

    9

    文章

    519

    浏览量

    22424
  • RISC
    +关注

    关注

    6

    文章

    432

    浏览量

    83379
收藏 人收藏

    评论

    相关推荐

    STM32固件库使用介绍分享!

    32位基于ARM微控制器STM32F101xx与STM32F103xx 固件函数库介绍 本手册介绍了32位基于ARM微控制器STM32F101xx与STM32F103xx的固件函数库
    发表于 07-30 02:37

    编程器固件和路由器固件什么不同

    本文开始阐述了固件的概念,其次介绍固件的工作原理与固件的威廉希尔官方网站 性能,最后详细的介绍了编程器固件
    的头像 发表于 04-09 09:38 2.5w次阅读

    Firefly-RK3399 Buildroot 固件介绍

    编译 Buildroot 固件 本章介绍 Buildroot 固件的编译使用。
    的头像 发表于 11-23 10:58 4756次阅读
    Firefly-RK3399 Buildroot <b class='flag-5'>固件</b><b class='flag-5'>介绍</b>

    Firefly-RK3288编译 固件介绍

    编译 Buildroot 固件 本章介绍 Buildroot 固件的编译使用。
    的头像 发表于 11-27 08:53 2966次阅读
    Firefly-RK3288编译 <b class='flag-5'>固件</b><b class='flag-5'>介绍</b>

    Firefly-RK3288Android 升级固件介绍

    本文介绍了如何将主机上的固件文件,通过 Micro USB OTG 线,烧录到开发板的闪存中。升级时,需要根据主机操作系统和固件类型来选择合适的升级方式。
    的头像 发表于 11-27 09:46 4735次阅读
    Firefly-RK3288Android 升级<b class='flag-5'>固件</b><b class='flag-5'>介绍</b>

    fireflyFace-RK3399主板升级固件介绍

    本文介绍了如何将主机上的固件文件   1.通过USB数据线,烧录到开发板的闪存中。升级时,需要根据主机操作系统和固件类型来选择合适的升级方式。   2.生成U盘升级的
    的头像 发表于 12-04 10:30 4104次阅读

    fireflyAIO-3399C主板编译Buildroot固件介绍

    编译 Buildroot 固件   本章介绍 Buildroot 固件的编译使用。
    的头像 发表于 12-13 10:39 1716次阅读

    fireflyAIO-3399C主板升级固件介绍

    本文介绍了如何将主机上的固件文件,通过Type-C数据线,烧录到开发板的闪存中。升级时,需要根据主机操作系统和固件类型来选择合适的升级方式。
    的头像 发表于 12-13 10:46 1587次阅读

    fireflyAIO-3128C主板升级固件介绍

    本文介绍了如何将主机上的固件文件,通过双公头USB数据线,烧录到开发板的闪存中。
    的头像 发表于 12-24 09:30 1164次阅读

    fireflyAIO-3288J-Android 升级固件介绍

    本文以下内容仅适用于android系统,若需要升级Linux系统,参考Linux 升级固件 本文介绍了如何将主机上的固件文件,通过 USB 双公头数据线,烧录到开发板的闪存中。升级时,需要根据主机操作系统和
    的头像 发表于 12-26 15:25 1780次阅读
    fireflyAIO-3288J-Android 升级<b class='flag-5'>固件</b><b class='flag-5'>介绍</b>

    opensbi下的riscv64裸机系列编程1(串口输出)

    opensbi下的riscv64裸机系列编程1(串口输出) 1.说明 2.opensbi的编译 3.基本环境的准备 3.1 准备qemu 3.2 准备交叉编译工具链 4.工程完善 5.封装的sbi
    的头像 发表于 12-31 10:56 8544次阅读

    OpenSBI RISC-V开源Supervisor二进制接口

    opensbi.zip
    发表于 04-25 10:25 1次下载
    <b class='flag-5'>OpenSBI</b> RISC-V开源Supervisor二进制接口

    螺纹紧固件中螺丝和螺栓的类型

    本文将直观地介绍一些不同类型的螺丝和螺栓,重点关注不同的螺丝头、起子类型和轴承面。“轴承面”,也称螺丝头下侧,是紧固件头与器件接触的地方。为提高抗张强度;有些螺栓、螺丝在头部下方设置了
    的头像 发表于 05-21 15:57 2548次阅读

    OpenSBI支持哪些固件

    FW_DYNAMIC固件 FW_DYNAMIC固件在运行时从上一个启动阶段获取有关下一个启动阶段的信息,例如引导加载程序或操作系统内核。 上一个启动阶段(即LOADER)通过 a2 寄存器
    的头像 发表于 10-08 14:15 332次阅读

    电阻的封装类型介绍

    电阻的封装类型介绍
    的头像 发表于 12-29 10:18 1525次阅读