RISC-V 内核,目前已经在 Sifive Unmatched 开发板上通过基础系统调用的测试。
在决赛第一阶段,我们的内核增加了信号、动态链接、信号量、内核级线程的支持,并通过了 Musl-Libc 上的测试。
在决赛第二阶段,我们完善了我们的内核,提高了内核的性能,并且移植了 redis 和 musl-gcc。
- 交叉编译器:riscv64-unknown-elf-gcc 11.1.0
- QEMU 模拟器:qemu-riscv64 5.0.0
- OpenSBI:2022.04.11 3383d6a
OS-RISCV
|- bootloader (QEMU 启动所需文件)
|- docs (比赛文档)
|- include (内核头文件源码)
|- kernel (内核源码)
| |- boot (内核入口)
| |- driver (串口驱动及 SD 卡驱动)
| |- fs (文件系统相关代码)
| |- lock (锁相关代码)
| |- memory (内存管理相关)
| |- system (系统特性相关,包括信号量、信号、资源)
| |- trap (异常及加载)
| |- utility (辅助文件)
| |- yield (进程管理及线程管理)
|- linkscript (链接脚本)
|- root (磁盘文件格式)
| |- bin (可执行文件)
| |- etc (配置文件相关)
| |- home (测试相关)
| |- lib (动态库及静态库)
| |- usr (用户程序)
|- user (用户文件及自行编写的 Shell)
|- utility (辅助文件)
- 编译内核:
make
指令会生成内核镜像 - 生成磁盘镜像:
make fat
会将用户态打包生成用户态 FAT32 磁盘格式的镜像./fs.img
,在./user/mnt
目录下会保存所有的用户程序,可以拷贝到 SD 卡上进行测试 - 清空内核和镜像:
make clean
- 查看磁盘镜像:
make mount
将磁盘镜像fs.img
挂载到/mnt
上 - 解除查看:
make umount
取消挂载 - 在 QEMU 上测试内核:
make run
,此命令在使用前需要先生成磁盘镜像