嵌入式开发者必备的 GitHub 工具链

工欲善其事,必先利其器。本文介绍嵌入式开发中真正实用的 GitHub 工具项目,帮助你搭建高效的开发环境。

推荐

USB 逻辑分析仪 - 调试通信协议必备

支持 I2C、SPI、UART 等协议解码,兼容 sigrok 软件,嵌入式开发调试利器。

查看 Amazon 价格 →

一、构建与包管理

1. PlatformIO

⭐ 9.2k IDE 插件

最流行的嵌入式开发框架,支持 VS Code 和 CLI:

# 创建项目
pio project init --board esp32dev --framework arduino

# 构建
pio run

# 上传固件
pio run -t upload

# 串口监控
pio device monitor -b 115200

# 安装库
pio lib install "DHT sensor library"

# 运行测试
pio test

2. CMake

构建系统 跨平台

现代嵌入式项目的标准构建系统:

# STM32 CMakeLists.txt 示例
cmake_minimum_required(VERSION 3.20)
project(my_stm32_project)

set(CMAKE_C_STANDARD 11)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mcpu=cortex-m4 -mthumb")

add_executable(firmware
    src/main.c
    src/drivers/uart.c
    src/drivers/spi.c
)

target_include_directories(firmware PRIVATE
    include
    ${CMSIS_INCLUDE}
    ${STM32_HAL_INCLUDE}
)

二、调试与追踪

3. probe-rs

⭐ 2.5k Rust 调试器

现代化的嵌入式调试工具,支持 J-Link、ST-Link、DAPLink:

# 安装 probe-rs
cargo install probe-rs-tools

# 列出已连接的调试器
probe-rs list

# 烧录固件
probe-rs run --chip STM32F407VGT6 target/thumbv7em-none-eabihf/release/firmware

# 实时追踪(RTT)
probe-rs attach --chip STM32F407VGT6

4. OpenOCD

⭐ 1.4k 调试器 开源

开源的片上调试器,支持多种 JTAG/SWD 探针:

# 使用 ST-Link 调试 STM32
openocd -f interface/stlink.cfg -f target/stm32f4x.cfg

# GDB 连接
arm-none-eabi-gdb target/firmware.elf
(gdb) target remote :3333
(gdb) load
(gdb) break main
(gdb) continue

5. Segger SystemView

RTOS 追踪 可视化

FreeRTOS/Zephyr 的实时追踪工具,可视化任务调度:

  • 任务切换时序图
  • CPU 使用率分析
  • 中断延迟测量
  • 用户自定义事件追踪

三、测试与验证

6. Unity (C 测试框架)

⭐ 4.3k 单元测试

嵌入式 C 语言最流行的单元测试框架:

#include "unity.h"

void setUp(void) { }
void tearDown(void) { }

void test_crc16_calculation(void) {
    uint8_t data[] = {0x01, 0x02, 0x03, 0x04};
    uint16_t result = crc16(data, 4);
    TEST_ASSERT_EQUAL_HEX16(0xABCD, result);
}

void test_adc_conversion(void) {
    uint32_t raw = 2048;
    float voltage = adc_to_voltage(raw, 3.3, 4096);
    TEST_ASSERT_FLOAT_WITHIN(0.01, 1.65, voltage);
}

int main(void) {
    UNITY_BEGIN();
    RUN_TEST(test_crc16_calculation);
    RUN_TEST(test_adc_conversion);
    return UNITY_END();
}

7. CMock

⭐ 1.2k Mock 框架

自动生成 Mock 对象,用于隔离测试:

// 自动生成的 Mock 示例
#include "mock_sensor.h"

void test_read_temperature(void) {
    // 设置 Mock 行为
    sensor_read_ExpectAndReturn(25.5);

    // 调用被测函数
    float temp = read_sensor_temperature();

    // 验证结果
    TEST_ASSERT_FLOAT_WITHIN(0.01, 25.5, temp);
    // 自动验证 sensor_read 被调用了一次
}

四、协议分析

8. sigrok

⭐ 1.3k 逻辑分析仪 协议解码

开源的逻辑分析仪软件,支持多种硬件和协议解码:

  • 支持 DSLogic、Saleae、fx2lafw 等硬件
  • I2C、SPI、UART、CAN、1-Wire 协议解码
  • Python 脚本扩展

9. wireshark (extcap)

网络分析 BLE

通过 extcap 插件分析 BLE 和 Zigbee 流量:

# 使用 nRF Sniffer 抓取 BLE 包
# 安装 Wireshark + nRF Sniffer 插件
# 选择 BLE PPI 捕获接口

# 过滤 BLE 广播包
btle.advertising_address == AA:BB:CC:DD:EE:FF

# 分析 GATT 服务
btatt.opcode == 0x0009  # ATT_READ_RESPONSE

五、版本控制与 CI/CD

10. GitHub Actions for Embedded

# .github/workflows/build.yml
name: Build Firmware

on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install ARM GCC
        run: sudo apt-get install gcc-arm-none-eabi
      - name: Build
        run: make all
      - name: Upload artifact
        uses: actions/upload-artifact@v4
        with:
          name: firmware
          path: build/firmware.bin

11. Renode

⭐ 2.5k 模拟器 CI 友好

嵌入式系统模拟器,在 CI 中运行固件测试:

# Renode 测试脚本
emulation CreateLogEntryVerifier "test_uart"
sysbus LoadELF @build/firmware.elf
start

# 等待启动完成
emulation RunFor "5s"

# 验证 UART 输出
test_uart WaitFor "Hello World" 1000
test UART Pass "UART output verified"

# 运行 pytest
# pytest tests/test_uart.py

六、工具链选择指南

场景 推荐工具
快速原型 PlatformIO + Arduino
生产项目 CMake + ARM GCC + OpenOCD
Rust 开发 cargo-embed + probe-rs
RTOS 开发 Zephyr + west + SystemView
单元测试 Unity + CMock + Renode
协议调试 sigrok + 逻辑分析仪
好的工具链能让开发效率翻倍。投资时间搭建环境,长远来看是值得的。
← 返回首页