101 Star 294 Fork 98

泰晓科技/RISCV-Linux

【老师提案】RISC-V UEFI 启动流程分析与 EDK2 移植

待办的
成员
创建于  
2022-12-03 14:45

项目标题

RISC-V UEFI 启动流程分析与 EDK2 移植

项目描述

现阶段 RISC-V 主要专注于嵌入式领域,供学习和开发用的评估板一般是单板计算机的形式(Single Board Computer),软件方面基本上是依赖半导体厂商发布完整的 SDK,在 bootloader 这方面轻量级的 U-Boot 成为了首选。

随着厂商不断提高 RISC-V 的硬件性能,将不可避免地向上进入台式机甚至是服务器领域。届时,RISC-V 需要面对一个成熟的、分散的、玩家众多的和重度依赖生态的市场。而 UEFI 是市场给出的选择和答案,RISC-V 也必须遵守。

目前的 RISC-V UEFI 的支持现状:

  • 最新的 UEFI 规范已经加入了 RISC-V 体系架构、ABI(应用程序二进制接口 )等基础定义
  • UEFI 实现的开源参考 EDK2 内核 TianoCore 上游已经有 RISC-V 的初步支持
  • EDK2 的 RISC-V 硬件平台支持还非常有限
  • RISC-V Linux 内核已经适配好 UEFI 启动

本项目以 RISC-V EDK2 为例,分析 UEFI 的启动流程,对以下部分分别进行分析:

  • UEFI
  • EDK2
  • Linux 内核里的 EFI Stub
  • 基于 UEFI 的启动流程,从上电复位到成功启动 Linux 内核

项目难度

中等

项目社区导师

Bin Meng <bmeng@tinylab.org>

项目产出要求

  • 连载文档和视频分享
  • 提交或完善某一个硬件平台(如 QEMU 'virt')的支持,并成功提交补丁至上游社区

项目技术要求

  • Linux / Windows 基本操作
  • 熟悉 QEMU 模拟器系统级仿真模式
  • 熟悉 RISC-V 架构基础指令集(IMAFDC),特权级规范
  • 熟悉 RISC-V 基于 U-Boot 的启动流程,对 UEFI x86 有一定的了解

相关的开源软件仓库列表

评论 (4)

Bin Meng 创建了任务 3年前
Bin Meng 负责人设置为Bin Meng 3年前
展开全部操作日志
5069540 wuzhangjin 1594531572 falcon 拥有者 2年前

UEFI 部分之前有同学做了一点工作:https://tinylab.org/riscv-uefi-part1/

5069540 wuzhangjin 1594531572 falcon 拥有者 2年前

目前社区对于本 issue 的解读有如下三篇文章:

Linux 内核中的 UEFI 支持 (EFI stub/ efi_init / runtime init) 在上面两篇 Linux 相关的文章中已经分析的差不多了。

本 issue 后续工作可以主要集中在 edk2/edk2-platform 项目中,目前整理的一些方向:

  1. RISC-V edk2 分析

    • RISC-V edk2 系统表的构建

      Linux EFI Stub 作为一种 EFI App,采用系统表做前期的初始化,为文章 2 补充系统表在 edk2 中构建过程

    • RISC-V edk2 的启动过程

      edk2 启动过程的各个阶段如何利用 OpenSBI

  2. RISC-V edk2 实践 (参考 EDK2 RISC-V Platform Project)

    • 实现 PcdDxeCorePrivilegeMode 配置

      此选项用于指定 edk2 DXE 阶段的特权模式,目前默认支持模式是 S-mode,M-mode 还未支持

    • 实现 PEI OpenSBI PPI

      PEI OpenSBI PPI 是 edk2 PEI 阶段调用的 OpenSBI 的接口,目前还未实现

我看基于StarFive星光2和Qemu上是不相同的诶,星光2上是用的edk2-platform中对于riscv的支持来统一了opensbi和sec阶段,但是在qemu上,是把opensbi来加载了sec和pei阶段,这俩好像不太一样。

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(4)
5069540 wuzhangjin 1594531572 5453259 sugarfillet 1685591138 我一点都不非-wjh313534387 Bin Meng-lbmeng
1
https://gitee.com/tinylab/riscv-linux.git
git@gitee.com:tinylab/riscv-linux.git
tinylab
riscv-linux
RISCV-Linux

搜索帮助