Skip to content

zcore summer of code

Luoyuan Xiao edited this page Jul 4, 2022 · 33 revisions

zCore Summer of Code

相关信息

  • 注意: 为及时了解和指导同学的学习和实践情况并推动学生相互帮助,本次活动要求学生把每日学习实践的过程记录在自己在github的公开repo上。可参见每日学习实践的具体例子
  • 由于疫情,远程指导的可能性很大,鼓励通过第一阶段rCore Labs Tutorial学习的review且所属高校出具复课证明和健康证明的同学到鹏城实验室集中学习实践。
  • 注意: 到深圳鹏城实验室进行第二阶段OS实习的同学要求提供由所属高校出具复课证明和健康证明。深圳鹏城实验室负责报销第二阶段OS实习的来回车票,食宿费(鹏城有食堂,周围有住宿点),提供每天100元~300不等(基于学生学历和实习过程)的第二阶段OS实习劳务费(一个月最多22天,按天计,按月发,直接发到学生卡上)。无法到深圳鹏城实验室进行第二阶段OS实习的同学可以申请远程实习。

时间安排

时间 8月1日-- 8月31日

第二阶段OS实习日程安排(会微调)

8月3日 -- 8月7日

采用现场讲解,直播录屏的方式

开场和选题介绍(周一上午 9:00,无远程直播)

@向勇 @王润基

与同学交流选题

上午11:00 B栋一楼合影,3楼参观

中午二楼就餐

晚上:聚餐和小活动

zCore 整体设计(周二晚 7:00)

@王润基

讲稿

主要内容:

  • zCore 整体结构
  • HAL 硬件抽象层的设计实现
  • async Rust 原理和设计模式
  • Rust 工程项目实践经验

Sipeed MaixPy 和 K210(周三晚 7:00)

@Sipeed @吴一凡

讲稿:SipeedK210

主要内容:

  • K210上的机器学习芯片与操作系统的接口和优化、python的SDK包、sipeed的调试器介绍(吴一凡处理)
  • rCore Tutorial 在 K210 上的移植进展

zCore 硬件移植与驱动开发(周四晚 7:00)

@王润基

讲稿

主要内容:

  • x86 底层设施:UEFI,串口、键盘、图形,段描述符,中断控制
  • 驱动开发方式
  • zCore 硬件移植

zCore 内核对象和系统调用(周四晚 7:00)

@王润基

讲稿

主要内容:

  • Fuchsia 和 Zircon 整体结构
  • Zircon 内核对象简介
  • zCore 中内核对象和系统调用的设计模式
  • 实例分析(@陈兴)

zCore 虚拟化(30分钟)

@贾越凯

主要内容:

  • RVM 与 zCore Hypervisor

zCore 应用开发(周五晚 7:00)

@肖络元 XiaoLuoyuan

zCore Applications and Drivers 报告视频和开发材料

主要内容:

  • zCore程序开发:SDK及编译器等工具的下载和部署
  • zCore程序开发:程序CAT的开发、编译、运行
  • zCore程序开发:ZBI系统启动镜像的修改
  • zCore程序开发:程序hello_world及其静态库和动态库的开发、编译、运行
  • zCore驱动开发:驱动模块放入Fuchsia编译系统中
  • zCore驱动开发:启动时驱动的加载过程

总结

技术报告

国科大本科毕设分享:RISC-V处理器流片背后的故事(周二下午:2点开始,地点 1606 会议室)

余子濠、金越、王华强、王凯帆、张林隽、张紫飞

第一环节 介绍

  1. 芯片基本情况

  2. 现在回过头来看, 流片难吗?

  3. 什么时候认识到项目的复杂性? 如何应对?

第二环节 开发

  1. 使用Chisel有什么感想?

  2. 使用chisel如何调试?

  3. 如何测试验证模块的正确性?

  4. 适配操作系统的过程中遇到哪些困难? 如何克服?

第三环节 经历

  1. 印象最深刻的bug

  2. 有没有坑过队友/被队友坑过?

  3. 和龙芯杯相比有什么不同?

  4. 第一次对项目进行可配置化, 感觉如何?

  5. 外设的验证工作有什么挑战?

  6. 课堂上没讲过硬件填充的TLB, 你是如何实现正确的?

  7. Nextline预取器听上去很简单, 但你花了两个月才实现正确, 有什么坑?

第四环节 未来

  1. 一生一芯的经验对大家做毕设有什么帮助?

  2. 对参加下一届一生一芯项目的学弟学妹有什么建议?

RISC-V 报告(谭章熹) :RIOS lab:elevating the open RISC-V ecosystem world-class (周三下午)

下午2:00从鹏城实验会出发,2:30左右抵达RIOS Lab

华为技术报告:OpenEuler和CPU芯片(周四下午 2 点,地点 1614 会议室)

实验任务分组

16层:小会议室(1606和1607)

报告:1614(每个桌上有电源)

场地:优先考虑1614报告厅

圆桌交流:1606会议室

小组讨论:1614、1606、1607、1608、1603

远程会议系统:小鱼易连 会议号: 9021627475 入会密码:111666

远程接入方法:

1、 如需要共享屏幕,安装“小鱼易连”PC版,点击“进入会议”,输入会议号“ 90 21627 47 5 ”,首次接入需要手机号验证,之后输入会议密码“ 111 66 6 ”,点击屏幕下方“共享”,选择需要共享的屏幕,即可;

2、 如只是参会,需要看投影,可以选择安装“小鱼易连”PC版或者手机终端版,在手机应用商店搜索“小鱼易连”,选择安装,输入会议号“ 90 21627 47 5 ”,首次接入需要手机号验证,之后输入会议密码“ 111 66 6 ”,即可;

3、 只是听会的话,可电话接入,拨打4000255065,语音提示后,输入“ 90 21627 47 5 ** 111 66 6 #”

技术指导负责人

  • 王润基
  • 潘庆霖

实验室管理负责人

  • 杨沙洲

事务管理负责人

  • 李睿 微信号 ruili0928

人员安排

通过第一阶段rCore Labs Tutorial学习的的review的同学将获得深圳鹏城实验室资助,到深圳鹏程实验室进行第二阶段如下所示的zCore操作系统研发。

日程:第一周:zCore讲解与学习(7天)

  • zCore结构和核心组件
  • zCore系统调用
  • zCore硬件移植与驱动开发
  • zCore应用开发

日程:第二~第四周:zCore研究项目 (24天)

目前设置了5个项目,学生可选择参加下面的项目,指导老师制定以周为单位的项目研究计划。

zCore 的文档与单元测试完善

  1. 项目标题:zCore 的文档与单元测试完善

  2. 项目描述:zCore 是用 Rust 重新实现的 Zircon 微内核。目前我们已经按照官方文档的描述,实现了诸多 Zircon 内核对象,支持运行 shell 等基础程序。然而,随着后期开发进程的加快,大量代码缺少文档描述,并且没有实现单元测试,只能在 QEMU 中运行用户程序以检验代码正确性。本项目的目标是完善 zCore 的文档及单元测试,使其成为一个高质量的 Rust 社区项目。

  3. 项目难度:低

  4. 项目社区导师:王润基

  5. 导师联系方式:wangrunji0408 AT 163.com

  6. 项目产出要求:

    • 补充完善 zCore 各模块的代码文档。

      目标是通过 #![deny(missing_docs)] 编译,并且能够让开发者通过阅读文档,快速理解 zCore 的代码结构和各部分功能。

    • 参考 Fuchsia 官方文档及测试代码,为 zCore 中的内核对象补充单元测试。

      目标让 zircon-object 模块的测试覆盖率提高到 90% 以上。

    • (可选)在 CI 中支持运行集成测试。 目标是最大化整体的测试覆盖率。

    • (可选)在zCore中添加zircon/linux的syscall。 目标:完善添加zCore内核功能,让zCore通过更多的zircon tests(基于zircon的coretest)或Linux tests(基于musl libc的libc test)或相关应用

  7. 项目技术要求:

    • 具备一定的 Rust 语言基础,能看懂并模仿现有代码即可
    • 熟悉操作系统原理与简易实现
    • 具有基础英文阅读和写作能力
  8. 相关的开源软件仓库列表:

zCore 的K210开发板支持

  1. 项目标题:zCore 的K210开发板支持

  2. 项目描述:zCore 是用 Rust 重新实现的 Zircon 微内核。官方的 Zircon 支持 x86_64 和 ARM64 两种指令集,并且曾经支持过树莓派平台(现在不行了)。目前我们的实现只支持 x86_64,因此希望将其移植到RISC-V64平台,并能够在K210开发板上运行。好消息是,zCore 的前身 rCore 支持 RISC-V64和K210开发板,因此有现成的代码可供参考和移植。

  3. 项目难度:中

  4. 项目社区导师:吴一帆

  5. 导师联系方式:wu-yf16 AT mails.tsinghua.edu.cn

  6. 项目产出要求:

    • 能够在K210开发板上运行 zCore
    • (可选)能够在 Linux 系统上运行 zCore libos 这个相对比较简单,因为基于 Linux host OS,不会涉及太多指令级别的改动。可以作为入门练手。
  7. 项目技术要求:

    • 熟悉 Rust 语言
    • 熟悉 RISC-V64 指令集,或做过其它平台的底层移植工作
    • 熟悉K210的开发经验
  8. 相关的开源软件仓库列表:

zCore 的树莓派4开发板支持

  1. 项目标题:zCore 的树莓派4开发板支持
  2. 项目描述:zCore 是用 Rust 重新实现的 Zircon 微内核。官方的 Zircon 支持 x86_64 和 ARM64 两种指令集,并且曾经支持过树莓派平台(现在不行了)。目前我们的实现只支持 x86_64,因此希望将其移植到 ARM64 平台,并能够在树莓派4 上运行。好消息是,zCore 的前身 rCore 支持 ARM64 和树莓派3,因此有现成的代码可供参考和移植。
  3. 项目难度:中
  4. 项目社区导师:贾越凯
  5. 导师联系方式:equation618 AT gmail.com
  6. 项目产出要求:
    • 能够在树莓派4 上运行 zCore

    • (可选)能够在 ARM64 Linux 系统上运行 zCore libos

      这个相对比较简单,因为基于 Linux host OS,不会涉及太多指令级别的改动。可以作为入门练手。

    • (可选)顺便把 rCore 也适配到树莓派4 吧

  7. 项目技术要求:
    • 熟悉 Rust 语言
    • 熟悉 ARM64 指令集,或做过其它平台的底层移植工作
    • 熟悉树莓派,或有其它 ARM 板子的开发经验
  8. 相关的开源软件仓库列表:

rCore 到 zCore 的功能迁移

  1. 项目标题:rCore 到 zCore 的功能迁移
  2. 项目描述:rCore 是用 Rust 语言实现的兼容 Linux 内核。它支持四种指令集,能够运行比较丰富的应用程序。但是随着时间的积累,rCore 的代码越堆越多,很多内部实现缺乏推敲,需要优化和重构。后来我们从头开始实现了 zCore 项目,采用了更加清晰的分层结构,同时复用 Zircon 微内核的内核对象实现了 Linux 内核的部分功能(如内存管理和进程管理)。目前 zCore 中的 linux 模块已经能够运行基础的 Busybox 等小程序,但仍有大量原本 rCore 支持的功能没有实现。本项目希望将 rCore 的功能迁移到 zCore 当中,并借此机会进行重构。其中一些代码可以直接搬过来,剩下的可能需要调整适配(例如涉及到 async),还有一些可以直接基于 Zircon 内核对象进行实现(例如 epoll)。
  3. 项目难度:中
  4. 项目社区导师:陈嘉杰
  5. 导师联系方式:c AT jia.je
  6. 项目产出要求:
    • 能够在 zCore 上运行 rCore 支持的 Linux 程序:GCC,Nginx,Rustc 等
    • 对新迁移过来的代码,要求补充代码文档和必要的单元测试
  7. 项目技术要求:
    • 熟悉 Rust 语言
    • 熟悉 Linux 系统调用
  8. 相关的开源软件仓库列表:

改进 RVM 虚拟机

  1. 项目标题:改进 RVM 虚拟机
  2. 项目描述:RVM 是在 rCore 中实现的一个简易 Hypervisor。目前只支持 x86_64,利用 VT-x 硬件虚拟化技术,已经能够在 rCore 上运行 uCore(C 语言版本的 x86 教学操作系统)。我们希望继续完善 RVM,使其能够支持运行完整的 Linux 系统。此外,还希望将 RVM 从 rCore 中分离出来,作为独立项目。未来不但能够接入 rCore、zCore,还能作为 Linux 内核模块运行。
  3. 项目难度:高
  4. 项目社区导师:戴臻旸
  5. 导师联系方式:[email protected]
  6. 项目产出要求:
    • 将 RVM 从 rCore 中分离出来作为独立项目。

    • 能够在 rCore RVM 上运行完整的 Linux 系统。

    • (可选)能够把 RVM 作为一个 Linux module,在 Linux 启动后以 kernel module 的形式加载运行,然后把自己设定成 host 态,把 Linux 设定成 guest 态。

      这个有参考,即基于 C 语言实现的 Jailhouse 和 Blue Pill

    • (可选)支持 ARM64 的硬件虚拟化,能够在树莓派上运行虚拟机。

  7. 项目技术要求:
    • 熟悉 Rust 语言
    • 熟悉虚拟化技术
    • 熟悉 x86_64 指令集,理解 VMX 的原理和基于 VMX 的开发
  8. 相关的开源软件仓库列表:
Clone this wiki locally