全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

OpenSBI支持哪些固件

时间:2023-10-08 14:15

人气:

作者:admin

标签: 固件  寄存器 

导读:FW_DYNAMIC固件 FW_DYNAMIC固件在运行时从上一个启动阶段获取有关下一个启动阶段的信息,例如引导加载程序或操作系统内核。 上一个启动阶段(即LOADER)通过 a2 寄存器将 struct fw_dynamic_info 的...

FW_DYNAMIC固件

FW_DYNAMIC固件在运行时从上一个启动阶段获取有关下一个启动阶段的信息,例如引导加载程序或操作系统内核。

  • 上一个启动阶段(即LOADER)通过a2 寄存器struct fw_dynamic_info的位置传递给FW_DYNAMIC
  • 之前的启动阶段(即LOADER)需要知道struct fw_dynamic_info
struct fw_dynamic_info {
      /** Info magic */
      unsigned long magic;
      /** Info version */
      unsigned long version;
      /** Next booting stage address */
      unsigned long next_addr;
      /** Next booting stage mode */
      unsigned long next_mode;
      /** Options for OpenSBI library */
      unsigned long options;

      unsigned long boot_hart;
  } __packed;

FW_JUMP固件

FW_JUMP固件假定下一个引导阶段的地址固定,但是不直接包含下一阶段的二进制代码,只是告诉OpenSBI,它运行完后需要到哪个地址执行。

例如,OpenSBI执行完后,需要加载kernel,而Kernel的加载地址为0x80200000,那么我们指定0x80200000为需要跳转的地址,OpenSBI执行完毕后,就会跳转到0x80200000处去加载kernel。

具体例子:

OpenSBI执行完后,去执行uboot或者kernel,假设uboot或者kernel在内存中的地址为0x80200000,则编译OpenSBI:

make PLATFORM=generic FW_JUMP_ADDR=0X80200000

在编译OpenSBI时,加入参数FW_JUMP_ADDR,即可指定需要跳转的地址。

注意, 由于OpenSBI运行在M模式下,本质上也是一个bootloader ,启动时,OpenSBI就会进行一些硬件的初始化操作,加上fw_jump固件可以指定跳转地址,因此 对于RISC-V Linux而言,OpenSBI执行完后,可以不执行uboot,直接启动kernel ,将uboot去掉,不影响RISC-V Linux正常启动。

在某些内存优化的场景下,可以考虑将uboot去掉,利用fw_jump固件直接启动kernel,从而节省内存。

FW_PAYLOAD固件

FW_PAYLOAD固件直接包含下一引导阶段的二进制代码,下一引导阶段通常是bootloader或os镜像。

不同于FW_JUMP固件的指定地址跳转,FW_PAYLOAD固件是将bootloader或os镜像直接打包进来。

具体例子:

将uboot打包进来,则编译OpenSBI:

make PLATFORM=generic FW_PAYLOAD_PATH=uboot.bin

将Linux kernel打包进来,则编译OpenSBI:

make PLATFORM=generic FW_PAYLOAD_PATH=Image

在编译OpenSBI时,加入参数FW_PAYLOAD_PATH,即可以将下一引导阶段的二进制代码打包进来。相当于将OpenSBI、uboot、kernel合并为一个文件。

实际中,我们用的更多的是FW_PAYLOAD固件,将uboot和OpenSBI一起编译。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信