OpenSBI固件类型介绍

描述

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或者操作系统镜像
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分