Skip to content

Challenges

chyyuu edited this page Dec 17, 2019 · 6 revisions

rCore挑战项目

支持最新rust编译器

用最新的rust编译器(2019.07.01以后)能编译并正确运行rCore操作系统

细节

本项目的目的是让最新的rust语法和各种相关配置支持rCore。这样rCore可以更好地利用rust语言的各种最新特性。

预期的结果

该项目的预期结果是,最新的rust编译器(2019.07.01以后)能编译并正确运行rCore操作系统 on x86-64/arm-64/riscv-64。 扩展结果是没有warning编译信息。

技能优先

有rust语言经验者优先,但不是必需的。学生需要了解当前的最新的rust语言和它的最新特征。

rCore入门教程

https://github.com/LearningOS/rcore_step_by_step/

导师

陈嘉杰

难度

容易

FAT32文件系统

为rCore实现FAT32文件系统驱动程序

细节

本项目的目的是在rCore上实现FAT32文件系统。这个项目将从使用MBR和GPT分区表进行分区检测开始。在可以检测到分区之后,将检查文件系统是否有已知的文件系统类型。将为任何检测到的FAT32文件系统启动FAT32驱动程序。该驱动程序将同时支持读和写功能,使用rCore已经实现的Simple FS(SFS作为示例实现进行比较。如果项目提前完成,则可以开始处理其他文件系统类型。

预期的结果

该项目的预期结果是,rCore将为所有检测到的FAT32文件系统自动启动FAT32文件系统内核模块,允许读取和修改这些文件系统。

技能优先

有文件系统经验者优先,但不是必需的。学生需要了解当前的rCore SFS文件系统,并在项目期间研究FAT32。

rCore入门教程

https://github.com/LearningOS/rcore_step_by_step/

导师

王润基

难度

容易

移植 Tokio

移植tokio支持多个异步rust程序

细节

这个项目的目的是将mio和tokio移植到rCore。这个项目将从修改mio和tokio开始,使它们在rCore上正确编译。编译完成后,这里将测试tokio用法的示例。测试失败将在大多数示例在rCore上工作之前得到解决。如果项目提前完成,就可以开始移植net2 crate,并处理剩余的测试失败。

预期的结果

这个项目的预期结果是支持许多rCore上的异步rust程序。

技能优先

有异步I/O经验者优先,但不是必需的。学生需要了解rCore操作系统的event支持,并在项目期间研究mio和tokio。

rCore入门教程

https://github.com/LearningOS/rcore_step_by_step/

导师

刘丰源

难度

容易

移植基于rustc/cargo的编译环境

移植基于rustc/cargo的编译环境,支持在rCore上编译rCore

细节

这个项目的目的是实现rCore上编译自身的能力。

预期的结果

这个项目的预期结果是支持在rCore上编译rCore。

技能优先

有rCore/rustc经验者优先,但不是必需的。学生需要了解rCore操作系统的编译器支持能力。 目前能支持gcc和rustcc的单个文件编译

rCore入门教程

https://github.com/LearningOS/rcore_step_by_step/

导师

李晨昊

难度

中等

移植python/go/java的编译环境

移植基于python/go/java的编译环境,支持在rCore上编译各种语言的源程序

细节

这个项目的目的是实现rCore上编译各种语言的能力。

预期的结果

这个项目的预期结果是支持在rCore上编译基于python/go/java的能力。

技能优先

有rCore/rustc经验者优先,但不是必需的。学生需要了解rCore操作系统的编译器支持能力。 目前能支持gcc和rustcc的单个文件编译。

rCore入门教程

https://github.com/LearningOS/rcore_step_by_step/

导师

陈渝

难度

中等

ARM-64/RISC-V 32/64位支持

将rCore移植到AArch64/RISC-V体系结构

细节

这个项目的目的是将rCore移植到64位ARM设备,如Raspberry Pi-3。这个项目将从移植内核开始,实现内存检测、分页和安全环支持。在启动用户空间二进制文件之后,应该移植在串行端口上启动shell所需的菜谱。如果项目提前完成,则可以在framebuffer支持上开始工作,允许对rCore的图形堆栈进行移植。

预期的结果

目前rCore已经能在Raspberry Pi-3/RISC-V开发板上运行,有音频驱动支持,有emmc 块设备驱动支持。可考虑的项目有:

  • 移植到基于全志CPU的香蕉派开发板上
  • 移植到基于瑞星微 3288+ CPU的开发板上
  • 支持基于ARM 64多核Raspberry PiFramebuffer/
  • 支持基于RISC-V 64多核的开发板上
  • 支持Raspberry Pi-3/RISC-V 64开发板上的其他外设(USB(已有初步支持了),NIC,GPU等)

技能优先

有ARM设备经验者优先。学生需要学习有关RUST写操作系统内核,并在项目中研究他们选择的设备。

rCore入门教程

https://github.com/LearningOS/rcore_step_by_step/

导师

贾越凯

难度

较难

用rust重写zircon

细节

我们发现zircon的某些特征与rust语言本身的一些特征有相似之处,所以想在rcore已有trait的基础上,用rust重写zircon --zcore,看看能否把二者的独特性结合起来。

预期的结果

该项目的预期结果是zcore基于rust语言编写,且与zircon的向上功能(syscall等)兼容。

技能优先

有C++/rust语言经验者优先。

进度

正在进展中

纯研究

  • how to verify rustlang-based kernel
  • how to analysis the WCET feature of rcore
  • how to assembly kernel by trait
  • how to add hot-fix support on rcore
  • the equivalence between of rcore and ucore
  • rcore for labeled-riscv
  • rcore for xpc
  • rcore for user-level interrupt
  • normal app can run in kernel
  • ......