嵌入式开发者必备的 GitHub 工具链
工欲善其事,必先利其器。本文介绍嵌入式开发中真正实用的 GitHub 工具项目,帮助你搭建高效的开发环境。
一、构建与包管理
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 + 逻辑分析仪 |
好的工具链能让开发效率翻倍。投资时间搭建环境,长远来看是值得的。