Skip to content

[不要合并] 第一章内容 #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions ch1/src/book.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
欢迎来到RustSBI系列教程!本系列教程希望从浅入深,详细而全面地介绍RustSBI和
RISC-V SBI的开发技术,并以QEMU Virt为例给出一个RustSBI的裸机参考实现。

RISC-V SBI是RISC-V架构上机器态固件部分的技术标准,内核、引导程序可借助它
完成内核的基础功能。它分为标准扩展和自定义扩展两个部分。
标准扩展提供内核运行的基本功能,内核借助它实现多核管理、核间中断和性能管理等基础特性。
自定义扩展的功能涵盖安全环境、调试器等多个方面,但它由具体的SBI固件厂家规定和实现,
不属于RISC-V SBI规定的标准扩展。因此,本教程将仅涵盖RISC-V SBI的各个标准扩展。

为了阅读本系列教程,我们假定读者已经对RISC-V基础指令集架构有一定的认识,
并对Rust语言程序设计有所了解。如果读者尚未准备相关前置知识,以下列出的参考文献
可能对您有帮助。感谢读者的理解和支持!

# 机器态裸机应用程序

裸机RISC-V的系统软件架构由机器态、内核态和用户态组成。内核态提供内核可利用的页表系统,
而用户态专用于内核之上无特权的用户程序。为了运行具有硬件最高权限,并服务于内核的
固件支持部分,SBI固件部分将这些代码运行在机器态,以提供内核、引导程序需要的SBI功能。

//todo:严格意义上讲,还有HS态(宿主态)
// todo: 金字塔图

## `no_std`下的入口函数

## 什么是panic?

## 链接脚本

为了启动SBI固件,各个具体的SoC平台都有自己的裸机启动流程,也可能有一定的映像格式约束。
幸运的是,QEMU平台的SBI固件启动方法相当容易。要将SBI固件在64位的QEMU RISC-V平台启动,
将它的镜像和入口地址都放置在`0x80200000`即可。

## 运行编程语言

## 接下来要做的是……
5 changes: 0 additions & 5 deletions ch1/src/book.rs

This file was deleted.

3 changes: 2 additions & 1 deletion ch1/src/main.rs
Original file line number Diff line number Diff line change
@@ -7,7 +7,8 @@
#![feature(naked_functions, asm_const)]
#![deny(warnings, missing_docs, rustdoc::broken_intra_doc_links)]

mod book;
#[doc = include_str!("book.md")]
mod book {}

static HELLO: &[u8] = b"Hello";
static WORLD: &[u8] = b", rustsbi!\n";