【UEFI 开源系列第二篇】UEFI 在 SpacemiT K1 上的解决方案

UEFI on Spacemit K1

进迭开源uefi源码仓库:

https://gitee.com/bianbu-linux/edk2-platforms

https://gitee.com/bianbu-linux/edk2

Spacemit K1是一颗8核64位RISC-V AI CPU,基于开源Tianocore EDK2解决方案,完成了K1上的UEFI适配。K1上UFEI解决方案启动流程如下图。

bootloader

FSBL

FSBL基于uboot工程编译而来,实现UEFI PEI阶段的:

  • DDR初始化

  • 加载opensbi与EDK2

  • 更新memory信息,并通过dtb传递给EDK2

openSBI

基于开源openSBI解决方案,提供machine态的基础服务:

  • Cache管理

  • TLB管理

  • suspend/resume管理

EDK2

基于开源tianocore EDK2开源解决方案,提供:

  • EFI boot service,提供系统启动相关服务

  • 存储驱动(emmc,sd,nvme)和USB驱动,支持从卡、emmc、NVME、U盘中启动

  • GOP(Graphic Output Protocol),支持通过HDMI显示启动菜单

  • Variable service,实现启动选项的配置,如启动顺序、启动时间等

Grub

grub作为一个EFI application,存储于ESP分区,经EDK2加载和运行;通过/boot/grub/grub.cfg配置文件,完成多系统识别与引导,并配置启动菜单;加载内核镜像和init ramdisk,完成系统加载和控制权切换;kernel镜像与rootfs存储于emmc或nvme等存储器上。

如此,支持从多种启动介质上,完成linux系统的加载和启动;并能通过EDK2启动菜单,完成启动优先级的配置和修改。

抱歉,误点删除了(

原帖:
很棒哈哈:tada::tada:
期待未来增加 Simple Network Protocol,实现网络启动
再 Dream 一个 ACPI 支持

2 个赞