# Embedded

> Use when working with embedded systems — firmware, RTOS, hardware interfaces, low-level programming

- Skill: `liaosw97/embedded` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add liaosw97/embedded`
- Raw SKILL.md: https://api.skillmd.com/api/skills/liaosw97/embedded/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: liaosw97 (https://skillmd.com/u/liaosw97)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/liaosw97/embedded

---


## 核心原则
- **资源约束优先**：始终关注内存、存储和功耗限制
- **实时性保证**：确保关键任务在规定时限内完成
- **可靠性设计**：实现故障检测、隔离和恢复机制
- **安全性考量**：防止缓冲区溢出、空指针等常见漏洞
- **可移植性**：尽量减少硬件依赖，便于平台迁移

## 技术栈
- **RTOS**：FreeRTOS, Zephyr, ThreadX, embOS
- **嵌入式 Linux**：Yocto, Buildroot, OpenWRT
- **微控制器**：ARM Cortex-M/A/R, RISC-V, ESP32
- **调试工具**：J-Link, OpenOCD, GDB, SWD/JTAG
- **外设接口**：SPI, I2C, UART, CAN, USB, Ethernet
- **低功耗技术**：Deep Sleep, Tickless Idle, DMA

## 最佳实践
1. **内存管理**
   - 静态分配优先，避免运行时碎片
   - 使用内存池管理固定大小块
   - 实现栈溢出检测和水印监控
   - 注意对齐要求 (ARM 通常 4/8 字节)

2. **实时性设计**
   - 使用优先级抢占式调度
   - 最小化中断服务程序 (ISR) 执行时间
   - 合理使用互斥锁、信号量、事件组
   - 避免优先级反转问题

3. **可靠性保障**
   - 实现看门狗定时器 (WDT)
   - 使用 CRC/校验和验证数据完整性
   - 设计故障恢复和状态机管理
   - 实现异常处理和错误日志

4. **功耗优化**
   - 合理配置睡眠模式和唤醒源
   - 使用 DMA 减少 CPU 唤醒
   - 优化外设时钟和电源域
   - 实现动态电压频率调节 (DVFS)

5. **调试规范**
   - 统一日志输出格式和级别
   - 使用 SWO 实现高速调试输出
   - 保留调试接口用于现场诊断
   - 实现远程固件更新 (OTA)

## 关键约定
1. **代码风格**
   - 使用驼峰命名或下划线分隔
   - 宏定义使用大写字母和下划线
   - 寄存器操作使用内联函数或宏

2. **项目结构**
   ```
   project/
   ├── src/           # 源代码
   │   ├── drivers/   # 驱动层
   │   ├── hal/       # 硬件抽象层
   │   ├── app/       # 应用层
   │   └── main.c
   ├── include/       # 头文件
   ├── config/        # 配置文件
   ├── tools/         # 构建工具
   └── docs/          # 文档
   ```

3. **版本控制**
   - 使用语义化版本号
   - 记录固件变更日志
   - 保留历史版本用于回滚

4. **测试要求**
   - 单元测试覆盖关键模块
   - 硬件在环测试 (HIL)
   - 长期稳定性测试
   - EMC/环境测试验证

