Skip to content

wyfcyx/rCore-Tutorial

 
 

Repository files navigation

rCore-Tutorial V3.0 多核/k210 支持

快速上手

项目背景

教程第二版,于 2020 年春季学期作为清华大学操作系统课程的新增可选实验,只支持 qemu-system-riscv64 的单核模式,且 syscall 支持较少。目前已经不再维护了。项目主页

教程第三版,在第二版基础上重构,在一定程度上进行了简化,让整个框架更加软工友好,特别是完善了内存的回收机制。有着比较详细的代码文档,但是也只支持 qemu-system-riscv64 的单核模式,syscall 支持较少。项目主页

本项目是正在开发中的教程第三版完善分支,同时支持 k210, qemu-system-riscv64 两个平台,底层的 SBI 实现基于RustSBI 最大程度上屏蔽了两个平台的不同。支持多核,增加了更多 syscall,且语义更加接近于传统 Unix,目前已经兼容 ucore 的大部分应用并尽可能兼容 linux-riscv64。目前的实现还有一些问题,在 k210 平台上跑的时候可能出现死循环的情况。项目主页

环境配置

首先这里给出了包括 Rust/Qemu/虚拟机环境配置的相关说明,在配置完成之后,应该能够基于 Qemu 跑教程第三版的 master。

为了跑本项目,则需要一些额外的工具链:

PC 需要通过串口与 K210 开发版通信,完成内核镜像烧写和运行时的交互。因此请确保当前 Python 环境安装了 pyserial 包且 miniterm 串口终端应当可用。

在 Qemu 平台上运行

git clone https://github.com/wyfcyx/rCore-Tutorial.git
cd rCore-Tutorial
make run LOG=error

注意 LOG=<LOG_LEVEL> 表示 log 的控制级别。log 的重要程度从高到低依次为 error, warn, info, debug, trace,当设置为某个控制级别后只会打印重要程度不低于设置的控制级别的 log。正常运行的时候根据情况不同设置为 error, warn, info 之一即可,而不应设置为更低等级,否则会影响到 kernel 的行为。

内核启动起来之后需要稍等一会,等内核完成初始化之后,屏幕最下方会出现一行

>> 

此时我们可以直接通过键盘输入程序的名字来运行程序。

在初始化过程中已经列出了所有的程序,以 r_ 开头的是用 Rust 编写的用户程序(位于 user/rust 目录下),其他的则来自于 ucore(位于 user/ucore 目录下)。可以直接运行 r_usertests 来跑所有目前可用的测试

我们可以先按下 Ctrl+A,再按下 X 来退出 Qemu 模拟器。

在 K210 平台上运行

首先我们需要在 sdcard 中写入文件系统。将 microsd 卡放入读卡器中插入 PC,随后:

cd user
make sdcard SDCARD=/dev/sdb

其中 SDCARD 设置 microsd 块设备在当前 OS 中的位置,通常来说是 /dev/sdb。**注意不设置 SDCARD 的话,默认为 /dev/sdb,在写入前务必小心损坏其他磁盘!**目前这个操作在 wsl/wsl2 上似乎无法完成。

然后,在开发板断电的情况下将 microsd 插入进去。

接着我们用数据线连接 PC 和开发板并返回主目录:

make run BOARD=k210 LOG=error

运行起来之后和 Qemu 平台是一样的。我们可以通过 Ctrl+] 退出 Miniterm 串口终端。

Quick Run

For K210 platform

# Prepare sdcard if you want to run on k210 platform
# Use SDCARD to configure sdcard location, it is /dev/sdb by default
cd user && make sdcard
# plug the sdcard in the k210 board and then run tutorial on k210 platform
make run BOARD=k210 LOG=error

For Qemu platform

# Run tutorial on qemu platform
make run

User programs

There are three simple user programs now, they are:

  • r_hello_world;
  • r_fantastic_text;
  • r_notebook[user Ctrl + C to exit].

To execute a program, type its name in the shell and press enter. After it finishes, some statistics will be showed on the screen as well, which indicates that the program uses multicores.

About

Tutorial for rCore OS step by step (3rd edition)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 86.2%
  • Python 7.1%
  • C 5.6%
  • Makefile 0.4%
  • Assembly 0.3%
  • C++ 0.2%
  • Other 0.2%