rsta2/circle
3/5
🧩 软硬件结合
已发布
项目简介
A C++ bare metal environment for Raspberry Pi with USB (32 and 64 bit)
Circle 是一个专为树莓派设计的 C++ 裸机编程环境,旨在让开发者无需操作系统即可直接控制树莓派硬件。它提供了大量经过测试的 C++ 类库和附加组件,覆盖了从 GPIO、I2C、SPI 到 USB、以太网、音频等几乎所有树莓派外设功能。项目还附带丰富的示例程序,帮助开发者快速上手,支持 32 位和 64 位裸机应用开发。
标签
项目特点
无需操作系统,直接在树莓派上运行 C++ 裸机程序,性能更高、控制更灵活
提供大量经过测试的 C++ 类库,覆盖 GPIO、I2C、SPI、USB、以太网、音频等外设
支持 32 位和 64 位 ARM 架构,兼容树莓派全系列型号
附带丰富的示例程序,从简单的 LED 闪烁到复杂的 USB 键盘驱动,快速上手
模块化设计,可轻松扩展自定义驱动和功能组件
活跃的社区维护,持续更新适配新版树莓派硬件
技术规格
| 支持平台 | 树莓派 1/2/3/4/5、树莓派 Zero/Zero 2W |
|---|---|
| 架构 | ARMv6 (32位)、ARMv7 (32位)、ARMv8 (64位) |
| 编程语言 | C++17 |
| 构建系统 | GNU Make |
| 工具链 | ARM GCC 交叉编译器 (arm-none-eabi-) |
| 启动方式 | 从 SD 卡直接启动 (kernel.img) |
| 内存管理 | 支持 MMU、页表、动态内存分配 |
| 外设支持 | GPIO、I2C、SPI、PWM、UART、USB、以太网、HDMI、音频、SD卡、RTC |
| 网络协议 | TCP/IP、UDP、DHCP、DNS、HTTP (通过附加组件) |
| 文件系统 | FAT32 (通过附加组件) |
| 调试方式 | UART 串口输出、QEMU 模拟 |
项目资源
搜索资源
物料清单 (BOM)
| 物料名称 | 数量 | 参考价格 | 备注 |
|---|---|---|---|
| 树莓派主板 (任意型号) | 1 | — | 推荐树莓派 3B+ 或 4B |
| MicroSD 卡 | 1 | — | 至少 8GB,用于存放 kernel.img |
| USB 转 TTL 串口模块 | 1 | — | 可选,用于调试输出 |
| 杜邦线 | 若干 | — | 连接外设 |
| LED、电阻、按键等 | 若干 | — | 基础实验用 |
| ARM GCC 交叉编译器 | 1 | — | arm-none-eabi-gcc |
| GNU Make | 1 | — | 构建工具 |
| 串口终端软件 | 1 | — | 如 PuTTY、screen |
能力画像
**记忆与知识检索**:3/5 — 需要查阅文档了解各类外设的寄存器配置和 API 用法
**动手与操作**:4/5 — 需要连接硬件、烧录 SD 卡、使用串口调试等物理操作
**编程与算法**:4/5 — 使用 C++ 编写裸机程序,涉及中断处理、内存管理等底层编程
**设计与建模**:3/5 — 需要设计外设驱动模块和系统架构,但已有类库提供基础框架
**实验与调试**:5/5 — 裸机调试主要依赖串口输出和 LED 指示,需要反复实验验证
**协作与分享**:2/5 — 项目以个人开发为主,但可通过 GitHub 提交 issue 或 PR 参与社区
**学习与研究**:5/5 — 深入理解树莓派硬件架构、ARM 汇编、操作系统原理等底层知识
**系统集成**:3/5 — 可集成多个外设驱动构建完整应用,但需自行处理资源冲突
项目图库
所需技能
C++ 编程基础(类、模板、继承)
树莓派硬件基础知识(GPIO、I2C、SPI 等接口)
基本命令行操作(Linux 终端、Make 构建)
ARM 架构基础(寄存器、中断、MMU)为加分项
嵌入式调试能力(串口输出、逻辑分析仪使用)
阅读英文技术文档的能力
适用场景
学习树莓派底层硬件原理和裸机编程
开发高性能、低延迟的树莓派嵌入式应用(如机器人控制、实时数据采集)
制作无需操作系统的树莓派专用设备(如迷你游戏机、数字相框)
教学演示操作系统原理、中断处理、内存管理等计算机基础课程
研究 ARM 架构和硬件驱动开发
替代 Linux 系统,在资源受限场景下运行轻量级程序