总结与展望

这一章我们主要做的事情是为内核提供硬件平台支持。

首先要让我们的内核有可能在指定的平台上运行。而那与我们当前所在的并非一个平台,指令集并不相通。为此我们使用 交叉编译 将内核编译到用 目标三元组 描述的目标平台上,还使用 链接脚本 指定了其内存布局,将内核的代码、数据均放在高地址。

然而编译好了之后它也就静止地放在那里而已。为了让它启动起来,我们使用 bootloader(OpenSBI) 将内核加载进来并运行。同时,我们发现 OpenSBI 的能力比我们想象中要强大,我们简单地通过 内联汇编 请求 OpenSBI 向我们提供的服务,实现了 格式化输出 。当然出于方便及节约成本,这一切都是在 模拟器 Qemu 上进行的。

到这里我们终于有了一个内核,而且它能在特定平台上运行了!