Rust树莓派操作系统教程
rust-raspberrypi-OS-tutorials
⭐⭐⭐☆☆ (3/5)
🧩 软硬件结合
已发布
项目简介
:books: Learn to write an embedded OS in Rust :crab:
这是一个面向操作系统爱好者的实战教程项目,旨在引导开发者从零开始,使用 Rust 语言在树莓派上编写一个完整的、单内核架构的操作系统内核。项目由一系列循序渐进的教程组成,每个教程都包含一个独立可启动的内核二进制文件,并基于前一个教程进行功能扩展,非常适合希望深入理解底层系统原理的开发者。
标签
项目特点
**逐步递进**:每个教程包含一个独立、可启动的内核二进制文件,新教程在前一个基础上扩展。
**双平台支持**:代码可在树莓派3和树莓派4上运行,前5个教程可在QEMU中模拟。
**模块化设计**:代码结构清晰,易于移植到其他CPU架构(如RISC-V)或开发板。
**Docker容器化**:提供预装所有工具的Docker容器,消除工具链配置的痛点。
**丰富的文档**:每个教程提供tl;dr摘要、源码diff,部分教程有详细文字说明,并支持`make doc`生成代码文档。
**便捷的调试与加载**:开发了Minipush工具,可通过UART按需加载内核到树莓派,并支持OpenOCD和GDB调试。
技术规格
| 目标架构 | |
|---|---|
| 支持硬件 | |
| 模拟器 | |
| 编程语言 | |
| 交叉编译 | |
| 调试工具 | |
| 加载工具 | |
| 容器化 | |
| 许可证 |
项目资源
搜索资源
物料清单 (BOM)
| 物料名称 | 数量 | 参考价格 | 备注 |
|---|---|---|---|
| Raspberry Pi 3 或 4 | 1 | — | 主目标板 |
| MicroSD卡 | 1 | — | 用于启动内核 |
| USB转串口线(CP2102芯片) | 1 | — | 推荐,用于UART输出 |
| 杜邦线 | 若干 | — | 连接串口到GPIO 14/15 |
| Docker Engine | 1 | — | 用于运行工具容器 |
| Rust工具链 | 1 | — | 通过rustup安装 |
| cargo-binutils | 1 | — | Rust工具 |
| rustfilt | 1 | — | Rust符号过滤工具 |
| QEMU | 1 | — | 用于模拟运行(前5个教程) |
| Minipush | 1 | — | 自研UART加载工具 |
| OpenOCD | 1 | — | 调试工具 |
| GDB | 1 | — | 调试工具 |
所需工具
| 工具 | 用途 | 是否必需 |
|---|---|---|
| 3D打印机 | 打印外壳和结构件 | ▢ 推荐 |
| 焊台 | 焊接电子元件 | ▢ 推荐 |
| 螺丝刀 | 安装硬件 | ▢ 推荐 |
| 计算机(Linux/macOS) | 开发环境 | ✅ 是 |
| USB转串口线 | 连接树莓派进行UART通信 | ▢ 推荐 |
能力画像
记忆与知识检索
3/5
逻辑推演
4/5
表达与交流
2/5
感知与观察
2/5
数理与计算
4/5
动手与操作
3/5
狂热与坚持
5/5
创造与创新
4/5
项目图库
所需技能
🔧 **动手能力**:需要连接USB转串口线到树莓派GPIO引脚,准备SD卡,以及基本的硬件操作。
💻 **编程能力**:需要Rust编程基础,理解操作系统概念(如中断、内存管理、异常处理),熟悉命令行操作。
⚡ **电子电路**:了解UART通信原理,能正确连接串口线到树莓派的GND、GPIO 14/15引脚。
适用场景
**嵌入式操作系统学习**:适合想从零开始学习操作系统开发,特别是ARMv8-A架构的爱好者。
**Rust系统编程实践**:适合想深入Rust在底层系统编程中应用的开发者。
**树莓派裸机编程**:适合想在树莓派上运行自定义内核的极客。
**教学与培训**:可作为大学操作系统课程或Rust培训的实践项目。
**研究原型开发**:适合需要快速原型化嵌入式操作系统概念的研究人员。