Skip to content

基于 RustSBI 的 labeled-RISC-V (ZCU102) 启动器

License

Notifications You must be signed in to change notification settings

Gallium70/lrv-rust-bl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

c03b2e2 · Mar 23, 2022

History

13 Commits
May 17, 2021
Aug 18, 2021
Mar 3, 2022
May 17, 2021
Mar 3, 2022
Mar 23, 2022
May 20, 2021
May 20, 2021
May 17, 2021
Mar 8, 2022
May 17, 2021

Repository files navigation

Labeled RISC-V Rust Bootloader

基于 RustSBI 的 labeled RISC-V 启动固件,适配 ZCU102 开发板和 Labeled ucore-SMP

环境和工具配置

将 rust 切换到 nightly ;安装 just

编译

git clone https://github.com/Gallium70/lrv-rust-bl.git
cd lrv-rust-bl
just build

使用

labeled-RISC-V-boot

设计

内存保护初始化

pmpcfg0 配置为 NAPOT | X | W | R ,将 pmpaddr0 全部置 1 ,即允许 S 和 U 态程序在全部地址空间进行读写和执行操作。

satp 置 0 ,关闭分页。由于该平台使用软启动和复位,故需要显式清除先前程序可能使用过的 CSR 。

中断和异常配置

将 S 态的外部、时钟和软件中断,三种页异常和 U 态环境调用委托到 S 态。方便调试起见,没有委托断点异常。非对齐加载和非法指令异常在 M 态处理。

指令模拟

在非法指令异常处理中,可以通过访问 RTC 外设模拟 rdtime 指令;在非对齐加载/存储异常中,可以通过两次对齐的加载/存储进行模拟,但仅支持 RV64IC 。

SBI 扩展

Legacy Extensions

支持 Set Timer 、Send IPI 、 Console Putchar 和 Console Getchar ,对于 System Shutdown 实现为死循环。

Hart State Management Extension

实际上没有状态管理,对于 HART start 只会向相应的 HART 发送一个 IPI ,不会传递参数,这主要是为了以最简单的方式通过 ucore-SMP 的多核启动流程。其他函数会返回 Not Supported 。

About

基于 RustSBI 的 labeled-RISC-V (ZCU102) 启动器

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published