嵌入式固件研发六阶段工作流 (embedded-six-stage-workflow)
按需求、设计、计划、实现、验证和交付组织固件任务,检查中断、DMA、看门狗和存储改动。
这里收集了外设驱动、存储、通信和调试任务用到的 Agent Skills。按技术方向分类,Scope 标明使用范围。每页列出使用说明、检查清单和参考代码;接入 Claude Code、Cursor、Codex 或 Antigravity 的配置见页末。
共 18 个 Skill · 分为通用工具、单片机裸机、通信与调试
common/)固件开发流程、AGENTS.md 质量约束、主机逻辑回归、Keil 构建与 .map 检查、点阵屏网页演示、HTML 图解和代理排障。
按需求、设计、计划、实现、验证和交付组织固件任务,检查中断、DMA、看门狗和存储改动。
按“质量约束优先于过程编排”审查与精简 AGENTS.md,可机检规则迁移为脚本,保留不变量与验证入口。
从命令行构建 Keil 工程,解析警告和 .map 文件,对比修改前后的 Flash 与 RAM 占用。
将固件中的点阵字库、界面和按键流程做成浏览器演示,用模拟输入替代传感器数据。
为状态机、按键、协议、算法和存储建立电脑端回归测试,接入生产源码并输出规范测试报告。
用 am.mjs 将 Markdown 草稿生成 HTML 讲解页,支持架构图、协议时序、状态机和讲解视频。
配置 Clash Verge 的 AI-Code 分流,排查 TUN 与规则模式下的连接超时和路由问题。
mcu-baremetal/)裸机工程中的 AD7190 采样、LCD 刷新、NOR Flash / EEPROM / 片内 Flash 存储,以及状态机和菜单。
生成和裁剪嵌入式点阵字库,排查中文笔画粘连、基线偏移、裁切和 ARMCC 5 字符串编码问题。
在 N32G455 上用 DMA 分条刷新 SPI LCD,检查缓冲区占用和与 AD7190 采样的并发关系。
在 SPI NOR Flash 中保存定长记录,处理两阶段提交、单条删除、逻辑清空和稀疏扇区迁移。
用 EEPROM A/B 双槽保存参数,处理页边界、ACK 轮询、掉电恢复和传感器分段校准。
处理 AD7190 的 DOUT/RDY 共脚中断、SPI DMA 连续采样、环形队列和超时复位恢复。
用 C99 转移表组织状态机,按 1 ms、10 ms、100 ms 和空闲时间调度任务,通过队列传递事件。
在片内 Flash 中用双页追加保存参数,检查擦写停顿、掉电恢复和链接脚本中的分区边界。
处理裸机 LCD 菜单、长按切页误触、条带刷新中的帧快照,以及多语言文字裁剪。
protocols-debug/)串口 DMA 接收与拆包、J-Link RTT 调试和故障注入,以及 Cortex-M HardFault 定位。
通过 J-Link RTT 收发调试命令,记录主循环耗时与栈水位,并分步执行板级故障注入测试。
用 IDLE 和 DMA 接收串口数据,按状态机拆帧,处理断帧、粘包和 RS-485 收发切换。
提取 Cortex-M 异常栈和故障寄存器,结合 Keil .map 与反汇编查找故障指令。
没有找到匹配的 Skill。换一个关键词,或重置方向/Scope 筛选再试试。
除上面的三类技能外,仓库预留了 rtos/(FreeRTOS / ThreadX / RT-Thread / Zephyr)与 linux-driver/(设备树 DTS / 字符与总线驱动 / U-Boot / Yocto)两个目录,以及 _templates/skill-template 模板和同步脚本。
一级目录按技术栈边界划分,内部通过 global / vendor / project / experimental 四个 Scope 区分复用层级:
mySkills/
├── AGENTS.md # 全局规则与维护指南
├── README.md # 技能库总览与接入说明
├── skills.json # 根级技能注册清单
├── sync-skills.ps1 # 多 Agent 目录联接同步脚本
├── common/ # 通用与工程基建 (7 skills)
├── mcu-baremetal/ # 单片机裸机开发 (8 skills)
├── protocols-debug/ # 通信协议与硬件联调 (3 skills)
├── rtos/ # 实时操作系统 (FreeRTOS/ThreadX)
├── linux-driver/ # Linux 驱动与设备树 (DTS/BSP)
└── _templates/ # 新建 Skill 标准骨架模板
skills.json)支持全量继承或按项目类型(如 MCU 裸机项目 vs 嵌入式 Linux 项目)加载指定目录,并自动过滤 exp-* 实验技能:
{
"entries": [
{ "path": "common", "exclude": ["exp-.*"] },
{ "path": "mcu-baremetal", "exclude": ["exp-.*"] },
{ "path": "rtos", "exclude": ["exp-.*"] },
{ "path": "linux-driver", "exclude": ["exp-.*"] },
{ "path": "protocols-debug", "exclude": ["exp-.*"] }
]
}
_templates/skill-template)每个 Skill 将内容分开放置:SKILL.md 说明触发条件、操作步骤和检查项,长篇寄存器表与代码范例放入 references/ 与 examples/:
---
name: template-skill-name
description: >-
[Scope: global | vendor | project] 用第三人称简明描述该技能的用途与触发条件。
---
# <Skill 标题名称>
## 1. 适用范围与背景 (Metadata)
## 2. 核心执行流程 (Step-by-Step Workflow)
## 3. 关键安全与并发约束检查清单
## 4. 验证与调试方法 (Verification)
sync-skills.ps1)利用 Windows 目录联接(Junction mklink /J)将各分类目录下的 Skill 挂载到 Codex、Cursor、Claude Code 与 Antigravity:
$Categories = @("common", "mcu-baremetal", "rtos", "linux-driver", "protocols-debug")
$TargetToolDirs = @(
(Join-Path $env:USERPROFILE ".codex\skills"),
(Join-Path $env:USERPROFILE ".cursor\skills"),
(Join-Path $env:USERPROFILE ".agents\skills"),
(Join-Path $env:USERPROFILE ".claude\skills")
)
# 遍历包含 SKILL.md 的子目录并创建 Junction 联接
cmd /c mklink /J "$linkPath" "$sourcePath" | Out-Null