概括

xv6移植到qemu的sifive_u以及fu740的板子上 本代码基于xv6-k210改编而来.

本文档主要介绍一部分技术的实现细节,以便我们翻阅.

队员构成

xiaolu

Cty

Sukuna

使用方法

git clone https://github.com/HUST-OS/xv6-sifive_u.git
cd xv6-sifive_u

然后您可以在qemu上进行运行:

make qemu

如果要生成二进制文件,执行一下命令生成os.bin

make all

调试选项

平台选项

在qemu上调试

make all platform=qemu

在fu740上调试

make all platform=sifive_u

默认为qemu平台

用户态选项

命令行形式(使用user文件夹中的可执行文件)

make all init=cmd-user

命令行形式(使用sd文件夹中的可执行文件)

make all init=cmd-sd

执行sd下所有的测试文件

make all init=runall

helloworld测试用户态

make qemu init=hello

默认为cmd-user

文件系统选项

基于SD卡

make all fat=SD

基于内存

make all fat=RAM

我们的工作

  • 调试操作系统启动的引导程序,使得操作系统多核启动能够顺利执行.

  • 调试SBI输入输出函数,使得操作系统能够正常进行键盘输入.

  • 调试底层文件系统接口,使用RAM来模拟磁盘.

  • 利用spi协议读写sd卡为文件系统提供支持.

  • 调试FAT32文件系统,为用户程序提供稳定的文件操作接口.

  • 写好相关文档,相关文档放在了doc文件夹中

  • 完成了进程队列相关的工作

  • 完善了原系统进程切换的相关工作

  • 完善了用户内存管理和内核内存管理,实现了块分配和页分配以及vma的操作

  • 完善了mmap的机制

  • 完成了缺页中断的处理

  • 完成了信号相关的操作

  • 完成了轮询相关的操作

  • 完成了对本地回环地址的Socket支持

  • 完善了对redis的支持

可用分支

main分支:评测机上运行的分支

redis分支:可以运行redis的分支使用方法

Last updated