- 付锦鹏
- 杨邵恺
- 陈安达
- 邱义家
- 李俊谕
- 课程:OSH-2026 操作系统课程设计
- 学期:2026 春季学期
- 单位:中国科学技术大学
| 项目阶段 | 日期 | 项目进展 |
|---|---|---|
| 选题探索 | 3.4 ~ 3.15 | 组内成员线下开展研讨会分析往年小组选题,提出1.增强型LLm嵌入文件系统、2.Rust改写系统内核、3.网络协议栈改写等多种选择 |
| 3.16 ~ 3.18 | 组内成员锁定Rust重写项目并对重写哪种具体系统开展探索 | |
| 项目调研 | 3.19 ~ 3.29 | 通过比较多种选择,并于老师和助教进行激烈的线上讨论后,最终选定LiteOS-M |
| 路线收敛 | 3.30 ~ 4.1 | 与老师进行线下研讨,确定“LiteOs-M核心模块接力重构 + IronClaw 接口层”最终路线 |
| 报告撰写 | 4.6 ~ 4.19 | 开展项目仓库主页README、调研报告、可行性报告、项目介绍ppt的写作任务并在过程中不断修正错误、加深对任务理解 |
| 报告改进 | 4.19 ~ 4.27 | 经过课上老师对本小组工作的点评,新增选择开发板并实际上板验证工作,本周完成此任务的多报告内容补充 |
| 项目第一阶段 | 4.28 ~ 6.1 | 完成rust化los_membox.c (10KB), los_task.c (50KB), los_tick.c (15KB), los_sortlink.c (6KB), los_sched.c (19KB)模块,并搭建测试集,完成编译检验 |
| 项目第二阶段 | 6.10 ~ 6.30 | 学习STM32开发板,编译并烧写LiteOs和Ecoprt代码,完成PC端agent部署,完成完整闭环测试 |
| 项目收尾 | 7.1 | 完成final_report 和 结题PPT 并做汇报预演 |
| 姓名 | 主要贡献 | 参考百分比贡献率 |
|---|---|---|
| 陈安达 | 1. 提供选题意见并最终被敲定 2. 持续更新 README 3.完善可行性和调研报告 4. 改写 36KB LiteOS 代码 5. 给出 Lab4 分工,完成 Lab4 的 llama.cpp 主线任务 6. 完成 2 次汇报提问(中期) 7. 参与 Ecopet 代码和烧写任务 8.完善结题报告 9.准备结题 PPT 并上台做结题报告 |
27% |
| 付锦鹏 | 1. 提供选题意见 2. 编写可行性报告 3. 给出 Rust 改写分工 4. 买入开发板 5. 编译并验证Rust改写正确 6. 参与Ecopet Agent代码和烧写任务 7. 编写结题报告并上台做结题报告 |
23% |
| 李俊谕 | 1. 提供选题意见 2. 编写调研报告 3. 改写 50KB LiteOS 代码 4. 完成 Lab4 的 Ray 必做和选做任务 5. 学习 STM32 开发板使用并参与 Ecopet 代码和烧写任务 6. 完成 5 次汇报提问(中期) 7. 完成 2 次汇报提问(结题) |
23% |
| 邱义家 | 1. 提供选题意见 2. 完成中期答辩 PPT(使用)并上台做中期汇报 3. 改写 50KB LiteOS 代码 4. 完成 Lab4 的 Ray 必做和选做任务 5. 学习 STM32 开发板使用并参与 Ecopet 代码和烧写任务 6. 完成 2 次汇报提问(结题) |
22% |
| 杨邵恺 | 1. 完成中期答辩 PPT(未使用) 2.参与编写部分测试代码 3. 完成 3 次汇报提问(结题) |
5% |
Vexilon 是中国科学技术大学 2026 春季学期 OSH 操作系统课程设计项目。本项目延续 2024 届 RushToLight 团队对 LiteOS-M 动态内存模块的 Rust 改写工作,继续探索 OpenHarmony LiteOS-M 中更多关键模块的 Rust 化实现,并通过 STM32F407 开发板上的 EcoPet Demo 完成基础真机联动验证。
需要说明的是,早期调研报告和可行性报告中曾规划过 IronClaw 接口层、Hi3861V100 开发板和 WiFi 输入链路;这些内容保留为项目探索过程记录。最终实验结果、硬件平台、上板 Demo 和 Agent 方案均以 结题报告 为准。
LiteOS-M 原生内核主要由 C 语言实现,任务管理、调度、时钟、链表和内存块管理等路径中存在较多裸指针、手动资源管理和弱类型接口。Rust 的所有权、类型系统和 no_std 支持为嵌入式内核模块重构提供了可行方向。本项目选择若干关键模块进行渐进式替换,目标是在保留 LiteOS-M 轻量和实时特征的同时,降低常见内存误用和接口误用风险。
项目最终包含两个主题任务:
- LiteOS-M 多模块 Rust 化重构:围绕
los_sortlink、los_tick、los_membox、los_task、los_sched五个模块完成 Rust 版本实现、C/Rust FFI 适配和模块测试。 - EcoPet 上板验证与自然语言 Agent:在正点原子 ALIENTEK M144Z-M4 最小系统板(STM32F407ZGT6)上运行 EcoPet Demo,通过 USART1、LiteOS-M 任务、消息队列和 PF9/PF10 LED 验证任务调度、队列通信、定时衰减和硬件状态反馈;PC 端使用 Ollama + Qwen3:8B Agent 做自然语言指令转换和板端响应解释。
早期规划中的 IronClaw 未进入最终实现,原因是依赖和资源成本与课程周期、开发板条件不匹配。最终方案将安全边界放在板端固定协议、参数校验和状态钳位上,大模型只承担交互辅助角色,不直接绕过固件协议修改状态。
重构工作采用 Rust(no_std + alloc)与 C 混合开发方式:
- Rust 模块通过
#[repr(C)]保持结构体布局兼容; - 通过
#[no_mangle]暴露 C 侧可链接符号; - 使用 bindgen/cbindgen 辅助管理 C/Rust 接口;
- 保留 LiteOS-M 原有启动、硬件适配和部分 C 侧驱动逻辑;
- 通过单元测试和联动测试验证模块行为。
具体模块原理、接口设计和测试结果见 结题报告,早期模块选择依据见 调研报告 与 可行性报告。
EcoPet 是本项目的上板验证场景,不是独立产品。它用于把任务调度、队列通信、串口输入、周期任务和 GPIO 输出串成一个可观察的闭环。
Demo 包含三个 LiteOS-M 任务:
UartRxTask:从 USART1 中断写入的环形缓冲区读取命令,并写入队列;PetStateTask:消费队列命令,更新宠物状态机;TelemetryTask:周期执行状态衰减并输出低值告警。
宠物状态包含 health、hunger、mood、energy 四个字段,范围均限制在 [0, 100]。支持 STATUS、FEED <1-100>、PLAY <1-100>、SLEEP、HEAL 五类命令。PLAY 含随机事件,存在受伤概率,并带有 ERR:PLAY_FATAL 保护。
LED 状态反馈如下:
- PF9 绿色 LED:
mood > 50时点亮,表示心情较好; - PF10 红色 LED:
hunger > 60、health < 50或energy < 20时点亮,表示需要关注。
ecopet_agent_ollama.py 使用 Python 编写,默认连接 COM5、115200 波特率,并调用本地 Ollama 的 qwen3:8b 模型:
- 将中文/英文自然语言转换为板端串口命令;
- 将
OK:*、WARN:*、ERR:*和状态字段解释为自然语言; - 后台监听
WARN:LOW_HEALTH、WARN:HIGH_HUNGER、WARN:LOW_MOOD、WARN:LOW_ENERGY等告警并立即提示。
最终使用的开发板为正点原子 ALIENTEK M144Z-M4 最小系统板,主控芯片为 STM32F407ZGT6。板卡标注资源包括 1MB Flash、192KB RAM、8Mb SRAM、128Mb SPI Flash、USB UART、USB Slave/Host、LCD/TF Card 接口、10 组扩展接口、2 个按键、2 个 LED 和 2Kb EEPROM。
仓库中的固件工程目录仍沿用 stm32f429ig_firechallenger 的历史命名,但最终链接脚本、栈顶地址和时钟配置按 STM32F407 资源约束进行适配。
项目验证包括三类:
- 模块测试:覆盖五个 Rust 重构模块的基础功能、边界参数和异常输入;
- C/Rust FFI 测试:检查结构体布局、函数符号和参数传递是否符合 C 侧调用约定;
- 真机联动测试:通过 EcoPet Demo 验证任务创建、队列通信、串口收发、状态定时衰减和 LED 状态反馈。
当前测试结果说明项目模块在已有用例下能够保持功能兼容,并对部分非法输入和边界状态提供更明确的检查路径。它不等同于对完整 LiteOS-M 内核的形式化证明或长期工业级压力验证。
Vexilon/
├── README.md 项目主页与导航
├── docs/ 项目文档与汇报材料
│ ├── research_report.md 调研报告,记录早期选题、背景和技术方向
│ ├── feasibility_report.md 可行性报告,记录早期实现路径与上板设想
│ ├── final_report.md 结题报告,最终实现与实验结果以此为准
│ ├── mid_term_presentation/ 中期汇报材料
│ │ └── Vexilon中期项目汇报:基于Rust与IronClaw重构LiteOS-M内核.pptx
│ └── final_presentation/ 结题汇报材料
│ ├── Vexilon_final_presentation.html GitHub Pages/浏览器展示用完整项目介绍页面
│ ├── evidence/ 结题 HTML 依赖图片与测试证据截图
│ │ ├── rust_correctness_sortlink.jpg los_sortlink 测试截图
│ │ ├── rust_correctness_tick.jpg los_tick 测试截图
│ │ ├── rust_correctness_mem_box.jpg los_membox 测试截图
│ │ ├── rust_correctness_task.jpg los_task 测试截图
│ │ ├── rust_correctness_sched.png los_sched 测试截图
│ │ ├── ecopet_board_led_green.jpg EcoPet 上板绿灯亮实机图
│ │ ├── ecopet_board_powered.jpg EcoPet 上板通电实机图
│ │ └── ecopet_agent_terminal.png PC 端 Agent 串口交互截图
│ └── (结题 PPT 如需归档,建议放在本目录下)
├── img/ README 和报告使用的图片资源
├── Lab4/ 课程 Lab4 相关内容
└── LiteOS-M/
├── rust_kernel/ Rust 重构内核模块与相关构建产物
├── c_kernel/ C 侧 LiteOS-M 相关代码
├── test/ 测试代码与测试结果
└── on-board/
├── cortex-m4_stm32f429ig_firechallenger_gcc/ STM32F407 上板固件工程
└── agent/ EcoPet PC 端 Python Agent
- 调研报告:记录项目早期背景、模块选择依据、行业调研和前瞻方案。
- 可行性报告:记录早期技术路线、FFI 设想、EcoPet 上板可行性分析和风险评估。
- 结题报告:记录最终实现、实验结果、IronClaw 方案调整原因、EcoPet Demo 和 Agent 细节。项目最终结论以此文档为准。
- 中期汇报 PPT:中期路线、早期 IronClaw 设想和阶段性方案说明。
- 结题展示 HTML:结题展示页面,依赖图片位于 evidence 目录。
- LiteOS-M(Gitee):https://gitee.com/openharmony/kernel_liteos_m
- Tock OS(GitHub):https://github.com/tock/tock
- Hubris(GitHub):https://github.com/oxidecomputer/hubris
- Microsoft: We need a safer systems programming language: https://www.microsoft.com/en-us/msrc/blog/2019/07/we-need-a-safer-systems-programming-language
- NSA: Software Memory Safety: https://media.defense.gov/2022/Nov/10/2003112742/-1/-1/0/CSI_SOFTWARE_MEMORY_SAFETY.PDF
