我一直不明白 U-Boot 和/或 Coreboot 能做什么而 RISC-V SBI(监控二进制接口)不能。我理解 SBI 在抽象特性方面的作用,但我不明白哪些东西需要初始化而 SBI 不能。我看过一些可以拥有的启动过程类型的示例(幻灯片 9),但我不明白为什么在每种情况下都需要哪一种。
启动过程是这样的:ZSBL(零阶段引导加载程序)-> SBI -> 内核
如果是这样的话,Coreboot 或 U-Boot 的意义何在?我知道可能需要先将第一阶段引导加载程序加载到静态 RAM 中以初始化动态 RAM,然后移至 SBI,但将 SBI 加载到 U-Boot 之后有什么意义呢?只是为了引导管理器?
在 RISC-V 进入 PC 市场的理论情况下,理想的快速启动设置是什么样的?
是的。这种方式在 QEMU 上可以完美运行,但这只是因为 QEMU 已将内核加载到 RAM 中。在这种情况下,OpenSBI(“fw_jump”)仅进行一些固件设置并直接跳转到内核。
在普通设备上,您的内核可能位于文件系统中。OpenSBI 没有驱动程序来读取该文件系统,因此无法加载内核。这时您需要一些附带所需驱动程序的 U-Boot 之类的东西。
我认为这些幻灯片(从第 14 页开始)是一个很好的资源。