编译OpenSBI

OpenSBI全称为Open-source Supervisor Binary Interface,是一套RISC-V开源实现。它提供了RISC-V runtime服务,通常应用于ROM和LOADER后的启动阶段。典型的启动流程如下图所示:

1. 典型的启动流程

请参考以下步骤编译OpenSBI:

步骤:

  1. 进入到您将用来存放OpenSBI文件的文件夹,如home directory(主目录):

    示例:

    cd ~ # home directory
  2. 下载OpenSBI所需的源代码:
    git clone https://github.com/riscv/opensbi.git
  3. 执行以下命令,编译OpenSBI:
    cd opensbi
    make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- PLATFORM=generic 
    FW_PAYLOAD_PATH={U-BOOT_PATH}/u-boot.bin FW_FDT_PATH={U-BOOT_PATH}/u-boot.dtb
    注:

    将{U-BOOT_PATH}修改为此前存放u-boot文件的路径。

    结果:

    编译后,在opensbi/build/platform/generic/firmware路径下,将生成大于2M的fw_payload.bin文件。

    2. 示例输出
  4. 进入到fw_payload.bin所在文件夹。
    cd opensbi/build/platform/generic/firmware
  5. 复制fw_payload.bin到另一文件夹。
    cp fw_payload.bin ~/Desktop/payload/
  6. 进入到上一步复制fw_payload.bin的文件夹,并执行以下命令,安装镜像转换工具:
    cd ~ /Desktop/payload/
    sudo apt install subversion 
    svn export https://github.com/starfive-tech/freelight-u-sdk.git/branches/starfive/fsz.sh
    注:

    点击此处可下载源代码。

  7. 改变工具的用户权限:
    chmod 777 fsz.sh
  8. fw_payload.bin转换为fw_payload.bin.out
    ./fsz.sh fw_payload.bin fw_payload.bin.out
    3. 示例输出
    注:

    系统将生成fw_payload.bin.out文件。若需要烧录u-boot,请参考《昉·星光单板计算机快速参考手册》中“5 附录 B:更新固件及 U-Boot”章节。