Breadboard‑OS:一个基于 FreeRTOS 的轻量级固件平台,专为快速原型、调试、测试面设计

 


Breadboard‑OS 是啥?

Breadboard‑OS(简称 BBOS)是基于 FreeRTOS 的轻量级固件平台,专为 快速原型、调试、测试 设计。它把 命令行交互(CLI) 当作项目的入口,让你在 MCU 上直接敲指令、查看资源、控制外设——就像在电脑终端里玩儿一样顺手。

  • • 核心是 microshell:一个开源的微型 shell,提供 POSIX‑风格的文件/目录结构,所有硬件操作都能映射成 ls /dev、cat /sys/… 之类的命令。

  • • 硬件抽象层统一:所有针对特定 MCU(目前主打 Raspberry Pi RP2xxx 系列)的代码都集中在 hardware/ 目录,想移植到别的芯片只要改 HAL 头文件。

  • • FreeRTOS 任务并发:把业务逻辑写成 Service(本质上是 FreeRTOS 任务),无需再手写调度器。


它解决了哪些痛点?

传统做法的痛点

Breadboard‑OS 的解决方案

每个项目都要自己写 UART/USB CLI,代码重复且不统一

内置 microshell,开箱即用,所有项目共享同一套命令体系

调试时只能靠 LED/串口打印,信息碎片化

ps

、top、free、df 等系统监控命令随时查看任务、内存、文件系统

外设初始化散落各处,迁移项目时找不到入口

Selective Init

:在 hardware/ 里统一管理外设初始化,只要改配置文件即可

文件系统不可靠,频繁写入导致 Flash 损耗

集成 littlefs,自带 wear‑leveling,安全写入

Wi‑Fi/网络功能往往是后期才加,耦合度高

BBOS 自带 Wi‑Fi + HTTP Server,直接把项目仪表盘挂在局域网里

项目启动慢,调试周期长

只需 make && flash,几分钟即可跑起完整系统,CLI 立即可用


安装 & 使用指南(Linux / WSL)

⚡ 小贴士:整个过程大约 10 分钟,准备好一块 Raspberry Pi Pico(或 Pico W)就能玩转。

  1. 1. 环境准备

    sudo apt-get install build-essential gcc-arm-none-eabi newlib-arm-none-eabi cmake
    export FREERTOS_KERNEL_PATH=$HOME/freertos/FreeRTOS-Kernel
    export PICO_SDK_PATH=$HOME/pico/pico-sdk
  • 2. 克隆源码

    git clone https://github.com/mcknly/breadboard-os.git
    cd breadboard-os
    git submodule update --init   # 拉取 pico-sdk、FreeRTOS、microshell 等子模块
  • 3. 配置项目(编辑 project.cmake)

    set(PROJ_NAME "my-bbos-proj")
    set(PROJ_VER  "0.0")
    set(CLI_IFACE 0)          # 0=UART  1=USB
    set(PLATFORM  rp2xxx)
    set(BOARD     pico2)      # pico、pico_w、pico2 等
    set(HOSTNAME  "bbos")
  • 4. 编译 & 烧录

    mkdir build && cd build
    cmake ..        # 默认 Release
    make -j$(nproc)
    # 生成的 .uf2、.bin、.hex 可直接拖拽到 Pico 的 USB 大容量存储中
  • 5. 打开终端(UART 需要 FTDI/CP2102,USB 直接打开串口)

    picocom -b 115200 /dev/ttyUSB0   # 或者使用 VS Code + Cortex‑Debug 调试
  • 6. 试试几个命令

    > ps            # 查看运行的服务
    > top           # 实时资源占用
    > df            # littlefs 文件系统容量
    > wifi scan     # 扫描周围 Wi‑Fi
    > http start    # 启动内置网页仪表盘
  • 自定义 Service 示例(在 services/heartbeat_service.c)

    void heartbeat_task(void *pvParameters) {
        while (true) {
            printf("[HB] tick %lu\n", xTaskGetTickCount());
            vTaskDelay(pdMS_TO_TICKS(1000));
        }
    }

    把它加入 services/services.c,重新编译,就能在终端看到每秒一次的 “tick”。所有业务逻辑都可以这样 模块化,不必在 main.c 里乱写。


    优缺点速览

    优点

    缺点

    即插即用的 CLI

    ,省去重复开发

    仅官方支持 RP2xxx 系列,其他 MCU 需要自行移植

    FreeRTOS + littlefs

    ,任务并发+安全存储

    对不熟悉 RTOS 的新人,理解任务优先级仍有学习曲线

    内置 Wi‑Fi + HTTP

    ,快速搭建网页仪表盘

    Wi‑Fi 只在 Pico W、RP2350 系列可用,其他平台需自行实现

    代码结构清晰

    (cli / driver_lib / services)

    依赖外部子模块(pico‑sdk、FreeRTOS),首次搭建环境稍显繁琐

    开源、MIT 许可

    ,可自由商用

    文档主要是英文 README,中文社区资源尚在萌芽阶段


    总结:为什么要把 BBOS 加入你的原型工具箱?

    • • 上手快:几分钟搞定固件,CLI 直接可用,省掉自研串口协议的时间。

    • • 调试友好:系统监控命令让你像在 Linux 服务器上查资源一样轻松定位卡点。

    • • 扩展灵活:把业务写成 Service,像拼积木一样堆叠功能;需要新外设,只要在 driver_lib 加一个驱动即可。

    如果你正为 “每次做原型都要从头写 CLI、调试太慢” 而抓狂,赶紧把 Breadboard‑OS 拉下来玩玩吧,保证让你的开发节奏瞬间提速。


    项目地址:https://github.com/mcknly/breadboard-os

     

    发表评论