更新日志 =============================== 2021-03-05 ------------------------------- - 第三章练习中增加了对于 ``sys_gettime`` 语义在教程和测例中差异的相关说明, :ref:`详情 ` 。 2021-03-03 ------------------------------- - 更新了第四章练习题。 - 为方便调试,提供了 riscv64 gcc 工具链的下载链接。 - 将文档渲染改为宽屏模式。 2021-02-28 ------------------------------- 修复了 ch3-coop 分支在 Rust 版本更新后无法成功运行的问题。 2021-02-27 ------------------------------- 完善了 ``easy-fs`` : - 订正了 ``easy-fs`` 块缓存层的实现,移除了 ``dirty`` 子模块。 - 支持二级间接块索引,使得支持的单个文件最大容量从 :math:`94\text{KiB}` 变为超过 :math:`8\text{MiB}` 。调整了单个 ``DiskInode`` 大小为 128 字节。 - 在新建一个索引节点的时候不再直接分配一二级间接索引块,而是完全按需分配。 - 将 ``easy-fs`` 的测试和应用程序打包的函数分离到另一个名为 ``easy-fs-fuse`` 的 crate 中。 从 ch7 开始: - 出于后续的一些需求, ``sys_exec`` 需要支持命令行参数,为此用户终端 ``user_shell`` 中需要相应增加一些解析功能,内核中 ``sys_exec`` 的实现也需要进行修改。新增了应用 ``cmdline_args`` 来打印传入的命令行参数。 - 新增了应用 cat 工具可以读取一个文件的全部内容。 - 在用户终端中支持通过 ``<`` 和 ``>`` 进行简单的输入/输出重定向,为此在内核中新增了一个 ``sys_dup`` 系统调用。 另外,在所有章节分支新增了 docker 支持来尽可能降低环境配置的时间成本,详见 :ref:`使用 Docker 环境 ` 。 2021-02-20 ------------------------------- 第六章文档完成。 2021-02-16 ------------------------------- 第五章文档完成。 2021-02-13 ------------------------------- 将 ch2-ch6 的 build.rs 中的对齐需求修改为刚好合适。 2021-02-09 ------------------------------- 在每一章的引言处加入了本章的代码树改动概况。 2021-02-08 ------------------------------- 将 K210 开发板的烧写工具 ``kflash.py`` 从项目中移除。 2021-02-07 ------------------------------- 将所有分支的 RustSBI 更新为最新的 0.1.1 版本[3257d899], **不加任何改动** 直接放在项目中。这导致 qemu 和 k210 两个平台的内核入口点变得不同,目前根据 RustSBI 的默认配置,qemu 平台上的内核入口点为 ``0x80200000`` ,而 k210 平台上为了提高烧写速度则为 ``0x80020000`` 。 前几个章节应用放置在内存中的位置也需要对应进行修改: - 第二章应用的起始地址变为 ``0x80400000`` ; - 第三章应用的起始地址变为 ``0x80400000`` 。 文档稍后更新。