Skip to content

OSH-2025/FerriteOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

293 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FerriteOS

组名

FerriteOS

组徽

组员

项目简介

本项目采用 Rust 语言对 Huawei LiteOS 的核心内核模块进行了重构,涵盖了任务管理、内存管理、硬件相关功能(中断处理、异常管理、系统时钟)、进程间通信(消息队列、事件机制、信号量、互斥锁)以及软件定时器等关键模块。

在重构过程中,我们着重解决了 FFI 的统一管理和 unsafe 代码的安全处理等技术难点。项目旨在充分利用 Rust 语言的内存安全保证和先进的并发编程模型,显著提升 LiteOS 的系统安全性、稳定性和可维护性。

我们最终的项目报告位于 这里,同时我们也将其发布于一位组员的知乎账号,链接在 这里

项目进展

项目阶段 日期 工作内容
选题 3月2日—3月8日 结合往届选题和老师上课提到的选题方向,每个人选择一个感兴趣的方向进行初步调研:秦铭格,徐家慧:AI for OS;杨博文,朱东胜:Rust重构;袁谦朗:使用ray进行大模型分布式部署。
选题 3月8日 线下讨论:确定了Rust重构选题,具体包括IPFS,Linux模块,微型WebAssembly虚拟机等方向。
选题 3月9日—3月17日 对 Rust 重构的各个方向进入深入调研,分析其价值,可行性和任务量等。
选题 3月17日 线下讨论:IPFS的庞大代码库涉及DHT、Bitswap等复杂协议,异步编程复杂,基于Go的实现比较完善,重写任务量大且价值不高;Rust重构Linux目前生态不完善,参考教程少,面对C与Rust的兼容性、内核高度耦合替换难度大、调试困难等问题,风险大;WebAssembly作为一种可移植、高性能的二进制指令格式,已成为边缘计算、区块链、插件系统等领域的核心技术,用Rust实现微型WebAssembly虚拟机高度可行且价值显著,尤其在安全敏感和资源受限的场景中。因此,确立选题为微型WebAssembly虚拟机wavm。
选题 3月23日 线下讨论:老师否认了基于Rust的WebAssembly解释器和运行时,同时我们对于嵌入式开发了解较少,放弃了关于freertos以及wasm虚拟机在嵌入式系统的应用等选题。经过和老师的进一步讨论,我们重新确立选题为使用Rust重构LiteOS部分模块。
调研报告 3月29日 线下讨论:讨论了调研报告内容框架,确定了分工:朱东胜负责文档总体汇总;徐家慧写项目背景/概述;袁谦朗写立项依据;秦铭格写前瞻性、重要性分析;杨博文写相关工作。
可行性报告 4月4日 线下讨论:讨论了可行性报告内容框架,确定了分工:朱东胜负责理论依据/LiteOS编译、qemu运行LiteOS模块以及文档总体汇总;秦铭格写理论依据/rust部分;徐家慧写理论依据/LiteOS部分;袁谦朗写技术依据/C调用Rust部分;杨博文写技术依据/Rust调用C部分。
中期汇报 4月10日-4月16日 为中期汇报准备,结合AI初步阅读了LiteOS的源码,了解主要内核模块;研究了LiteOS的编译框架,尝试引入rust代码,通过混合编译和交叉编译在LiteOS打印Hello Rust!
中期汇报 4月18日 线下讨论:讨论了中期报告的框架,确定了分工,秦铭格负责what,袁谦朗负责why,徐家慧负责how,杨博文负责整合 PPT 和演讲;与此同时,朱东胜尝试通过交叉编译与混合编译实现LiteOS调用Rust(遇到问题,还不知道怎么解决)。
开发阶段 4月23日-4月30日 系统学习Rust语言,了解Rust在操作系统开发中的特色,重点关注嵌入式领域Rust开发。
开发阶段 5月5日 线下讨论:深入讨论 Huawei LiteOS 源代码中 kernel 内核部分的代码结构,分享Rust的学习经验。同时学习借鉴往届Rage_of_dUST小组项目学习改写经验,成功改写 kernel/mem 目录下的文件,主要为 bestfit 算法。
开发阶段 5月11日 线下讨论:对Rust重构LiteOS的工作进行了分工:徐家慧负责异常接管、错误处理、事件等;朱东胜负责任务管理、内存管理、软件定时器、位图等;杨博文负责队列、信号量、时间管理等;秦铭格负责命令行;袁谦朗负责中断、互斥锁等。
开发阶段 5月25日 线下讨论:各成员汇报近期改写进展,集中讨论并解决改写过程中的问题;确定了一些代码编写规范,商讨了关于LiteOS选项功能的约定,为后续代码合并做准备;调整LiteOS中的测试模块代码使其适配目前的单板,便于重构的同时进行测试。
开发阶段 5月31日-6月2日 合并了事件、日志、异常接管和错误处理模块,讨论了IPC模块(包括消息队列,信号量和互斥锁)的改写计划。
开发阶段 6月7日 线下讨论:沟通了解各组员负责模块的改写情况,完成了内核部分代码的重构合并;进行内核模块的测试;讨论了后期项目的工作方向:进一步改写debug和shell相关代码,研究如何解决unsafe问题;讨论了lab4的计划安排。
开发阶段 6月15日 线下讨论:期末周前最后一次组会,一方面,围绕unsafe问题,讨论了如何处理全局变量,指针,FFI,内存管理模块,侵入式链表等问题;另一方面,一起完成了LiteOS中debug和shell模块部分代码的重构,并通过了测试。项目开发任务基本完成。
期末汇报 6月25日 线下讨论:讨论了期末汇报的计划安排与任务分工:杨博文负责PPT制作与汇报,袁谦朗负责项目概述部分,秦铭格负责技术路线介绍部分,徐家慧负责内核介绍部分,朱东胜负责重构优势、unsafe处理部分。
期末汇报 6月29日 线下讨论:商讨次日答辩事宜,完成了期末汇报 PPT 的制作和修改。
期末汇报 6月30日 现场答辩:完成期末汇报,展示了项目成果与收获。完结撒花!!!

About

Rust重构轻量级物联网操作系统LiteOS

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5