ch1/2: add doc link about qemu and rustsbi, ch7: add more clues

This commit is contained in:
zyr 2021-10-19 15:40:10 +08:00
parent a87f5f6034
commit d948680b8e
2 changed files with 5 additions and 1 deletions

View File

@ -51,6 +51,8 @@ OS是怎么跑起来的
qemu是怎么跑起来的
-------------------------------
qemu 拓展阅读: `qemu参数 <https://www.qemu.org/docs/master/system/invocation.html>`_
第0章大家配置好了qemu之后可能就没再打开过了。qemu做为模拟器用途很多操作也比较复杂。因此我们在makefile之中提供了具体运行qemu所需要的参数大家无需更改。
.. code-block:: makefile
@ -163,6 +165,8 @@ os文件夹下存放了所有我们构建操作系统的源代码是本次实
printf 的实现在 printf.c在函数之中我们完成了对 format 字符串的解析工作。那么我们是如何把字符串真正地打印到 shell 上的呢? 我们 调用consputc 函数输出一个 char 到 shell而 consputc 函数其实就是调用了 sbi.c 之中的 console_putchar 函数。这个 console_putchar 函数的本质是调用了 sbi_call。剥开层层套娃大家可以发现打印的最终实现是使用 sbi 帮助我们包装好的 ecall 汇编代码,通过指定 ecall 的 idx 为 SBI_CONSOLE_PUTCHAR, 并将我们的字符做为参数传入到 ecall 指定的寄存器之中完成一次系统调用来实现的。
本来,作为一个 OS串口输出(也就是输出到 shell)的事情也应该我们自己来做,但这里为了简化这些硬件强相关的实现,我们利用 rust-sbi 的 M 态支持。这也是 riscv 灵活性的一个体现。
rustsbi 拓展阅读:`rsutsbi <https://rcore-os.github.io/rCore-Tutorial-Book-v3/appendix-c/index.html>`_
bootloader文件夹
-------------------------------

View File

@ -93,7 +93,7 @@ chapter7练习
#[repr(C)]
#[derive(Debug)]
pub struct Stat {
/// 文件所在磁盘驱动
/// 文件所在磁盘驱动号,该实现写死为 0 即可。
pub dev: u64,
/// inode 文件所在 inode 编号
pub ino: u64,