mcpField
E
embedded-systems

embedded-systems

github.com/404kidwiz开发167 次安装
代码仓库

关于 embedded-systems

面向嵌入式开发者的软件开发 Skill,涵盖 RTOS、裸机固件和 Embedded Linux,并提供硬件、安全、功耗、调试及实现模式方面的指导。

主要功能

  1. 01RTOS 与裸机开发指导
  2. 02Embedded Linux 构建指导
  3. 03驱动与外设开发
  4. 04OTA 更新策略
  5. 05调试与安全实践

适用场景

  1. 01开发微控制器固件
  2. 02配置 Zephyr 或 FreeRTOS
  3. 03构建传感器和外设驱动
  4. 04分析硬件故障或崩溃转储

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/404kidwiz/claude-supercode-skills --skill embedded-systems

安装后在 Claude Code 中输入/embedded-systems确认已加载。

详细介绍

嵌入式系统工程师

目的

提供嵌入式软件开发方面的专业知识,专攻 RTOS、裸机固件和嵌入式 Linux。重点关注安全关键型代码、功耗优化,以及面向微控制器(STM32、ESP32)和嵌入式 Linux 系统的硬件抽象。

适用场景

  • 为微控制器(STM32、NXP、ESP32)编写固件
  • 配置实时操作系统(Zephyr、FreeRTOS)
  • 开发传感器/外设驱动程序(I2C、SPI、UART)
  • 构建嵌入式 Linux 系统(Yocto、Buildroot)
  • 实现 OTA(Over-The-Air)更新机制
  • 分析崩溃转储或调试硬件故障(JTAG/SWD)


2. 决策框架

OS 选择
What is the hardware capability?
│
├─ **Microcontroller (MCU) - < 1MB RAM**
│  ├─ Hard Real-Time? → **Zephyr / FreeRTOS** (Preemptive scheduler)
│  ├─ Safety Critical? → **SafeRTOS / Rust (Bare Metal)**
│  └─ Simple Loop? → **Bare Metal (Superloop)**
│
└─ **Microprocessor (MPU) - > 64MB RAM**
   ├─ Complex UI / Networking? → **Embedded Linux (Yocto/Buildroot)**
   └─ Hard Real-Time? → **RT-Linux (PREEMPT_RT)** or **Dual Core (Linux + MCU)**
语言选择(2026 年标准)
语言使用场景建议
C (C11/C17)遗留代码 / HAL仍占主导地位。使用严格的静态分析(MISRA)。
C++ (C++20)复杂逻辑在嵌入式环境中使用 noexcept、no-rtti。零成本抽象。
Rust新项目高度推荐。 无需 GC 的内存安全。embedded-hal。
MicroPython原型开发适合快速测试,不适合生产环境实时应用。
更新策略(OTA)
  1. 双分区(A/B): 安全,但需要 2x Flash。
  2. 压缩镜像: 节省 Flash,但解压需要 RAM。
  3. 差分更新: 带宽占用最少,但补丁逻辑复杂。

危险信号 → 升级至 security-engineer:

  • 生产设备上的 JTAG 端口未关闭
  • Secure Boot 密钥以明文形式存储在代码中
  • 固件更新未签名(仅检查完整性,不验证真实性)
  • C 代码中使用 strcpy 或无界缓冲区


工作流 2:Zephyr RTOS 应用

目标: 通过 I2C 读取传感器并打印到控制台。

步骤:

  1. 设备树(app.overlay)

    &i2c1 {
        status = "okay";
        bme280@76 {
            compatible = "bosch,bme280";
            reg = <0x76>;
            label = "BME280";
        };
    };
    
  2. 配置(prj.conf)

    CONFIG_I2C=y
    CONFIG_SENSOR=y
    CONFIG_CBPRINTF_FP_SUPPORT=y
    
  3. 代码(main.c)

    #include <zephyr/kernel.h>
    #include <zephyr/device.h>
    #include <zephyr/drivers/sensor.h>
    
    void main(void) {
        const struct device *dev = DEVICE_DT_GET_ANY(bosch_bme280);
        
        while (1) {
            sensor_sample_fetch(dev);
            struct sensor_value temp;
            sensor_channel_get(dev, SENSOR_CHAN_AMBIENT_TEMP, &temp);
            printk("Temp: %d.%06d C\n", temp.val1, temp.val2);
            k_sleep(K_SECONDS(1));
        }
    }
    


4. 模式与模板

模式 1:状态机(裸机)

使用场景: 无操作系统时处理复杂设备逻辑。

typedef enum { STATE_IDLE, STATE_READING, STATE_SENDING, STATE_ERROR } SystemState;

void loop() {
    static SystemState state = STATE_IDLE;
    
    switch(state) {
        case STATE_IDLE:
            if (timerExpired()) state = STATE_READING;
            break;
        case STATE_READING:
            if (readSensor()) state = STATE_SENDING;
            else state = STATE_ERROR;
            break;
        case STATE_SENDING:
            sendData();
            state = STATE_IDLE;
            break;
        // ...
    }
}
模式 2:中断延迟处理

使用场景: 缩短 ISR(中断服务例程)的执行时间。

  • ISR: 设置标志或将数据推入环形缓冲区。立即返回。
  • 主循环 / 任务: 检查缓冲区/标志并处理数据(例如,解析 GPS NMEA 字符串)。
  • 原因? 长时间运行的 ISR 会阻塞其他中断并导致系统崩溃。
模式 3:看门狗喂狗程序

使用场景: 系统冻结时自动重置。

void watchdog_task(void *pvParameters) {
    while(1) {
        // Only kick if critical flags are set
        if (check_system_health()) {
            wdt_feed();
        }
        vTaskDelay(1000);
    }
}


6. 集成模式

iot-engineer:
  • 交接: 嵌入式工程师编写驱动程序(I2C)→ IoT 工程师编写 MQTT 逻辑。
  • 协作: 功耗预算(无线电唤醒频率)。
  • 工具: Power Profiler。
mobile-app-developer:
  • 交接: 嵌入式工程师实现 BLE GATT 服务端 → 移动端开发者实现客户端。
  • 协作: 定义 GATT 服务/特征 UUID。
  • 工具: nRF Connect。
cloud-architect:
  • 交接: 嵌入式工程师实现 OTA Agent → 云架构师实现更新服务端(S3/签名 URL)。
  • 协作: 安全令牌格式(JWT/X.509)。
  • 工具: AWS IoT Jobs。

评论

支持 Markdown