乐于分享
好东西不私藏

首次揭秘AI全自动开发嵌入式软件闭环工作流

首次揭秘AI全自动开发嵌入式软件闭环工作流

三个月前我尝试用AI调MSPM0G3107的座椅加热PWM,100Hz,50%占空比,PA16引脚输出。

第一轮,AI写完代码,编译通过,烧录进去。拿示波器夹上去——信号没有,PA16静悄悄的。

查了一圈,发现少调了两个初始化步骤。SysConfig官方模板里写了八步,AI凭经验只写了六步——setCCPDirection和setCounterControl漏了。

第二轮,补上,重来。这回有输出了——频率92Hz,偏了8%。预设分频算错了,BUSCLK 32MHz分频系数是5,TimerClk应该6.4MHz,AI写成了4,变成8MHz,周期值全偏。

第三轮,改了分频,再来。频率现在100.3Hz,差0.3%,可以接受——但占空比只有47%。CCDAT2寄存器写的是LOAD值的一半,AI算了64000×50%得到了32000——但忘记LOAD是减一的,实际LOAD=63999,64000/2=32000,不是63999/2=31999.5。占空比偏了3%。

三轮下来,一个最简单的PWM消耗了一小时。

这不是AI不行。是流程有问题。

AI生成代码 → 编译 → 烧录 → 人拿示波器看 → 不对 → 人分析原因 → 改提示词 → 重来。

这个循环里每一步都有人。人只能串行工作,一次处理一个问题,还容易漏。

所以只有实现AI完整的自动闭环开发,才能发挥AI的最大效率,我花了两个月的时间,打磨出这套多Agent协作嵌入式全自动闭环开发的工作流

全闭环系统工作流的核心逻辑:AI写代码,机器做验证,物理信号当考官。

架构分三层,每一层堵一种类型的错。

第一层,寄存器级验证。

代码编译烧录之后,JLink调试器直接读芯片内部每个寄存器的实际值。逐位对比,32位的寄存器每一位单独比较。

比如Timer的LOAD寄存器,预期63999,实际读回来如果是64000,AI马上知道偏差在哪一位。

这相当于给芯片做了一次CT扫描——所有配置状态一目了然,不需要等人用肉眼去翻手册比对。

第二层,物理波形验证。

寄存器值对了不代表引脚信号对了——这是嵌入式开发最痛的常识。所以我给AI接了一台逻辑分析仪,探针夹在PA16引脚上。AI自动触发采集、解析波形、提取实际频率和占空比,跟需求做对比。

实际跑出来的数据:目标100Hz/50%,逻辑分析仪抓到的是99.7Hz/49.8%。误差0.3%和0.2%,在容差范围内,通过。

偏差超过阈值,AI分析原因——是prescale偏了还是period算错了——调整参数重新闭环。不需要人看示波器读数。

第三层,经验固化。

每次调试中发现的问题——比如忘了调setCCPDirection——都被记录到PERIPHERAL_CONSTRAINTS.md约束库里。此后AI写任何涉及PWM的代码,自动检查是否调了这步。

犯过的错误不会再犯第二次。团队的"集体经验"永久固化在约束文件里,不随人员流动流失。

**传统模式的问题**

嵌入式开发最痛苦的环节,不是写代码——是写完代码之后的验证。

一个PWM频率参数调错了,开发者要在"改代码→等编译→焊线烧录→示波器读数→翻数据手册→再改"的循环里反复消耗数小时。

Bug靠人肉排查,经验无法继承。忘了调enableOutput导致引脚无输出——资深工程师踩过一次会记住,但换个人或换个项目又重犯。

Keil仿真器里的寄存器值看着都对,烧到芯片上就是不工作。软件仿真无法模拟真实电气特性,最终只能在物理芯片上验证——而且每一步都得人盯着。

一个参数配置错误→编译2分钟→烧录30秒→示波器抓波形→发现不对→再改。一天的有效迭代次数不超过10次。

**我的全闭环工作流AI写的代码凭什么可信?四层保障。**

这套工作流的做法是:AI 写的每一行嵌入式代码,都必须通过真实芯片引脚上的物理电信号检验,合格才能交付。以我用TI的MCU为例

**第一层,知识库来自TI官方SDK,不是AI编的。**

系统首先解析TI官方SDK中数百个头文件,提取每个寄存器的地址、位域定义、有效值范围,建立结构化知识库。AI写代码时在这个知识库的约束下生成——不是猜测,是基于标准答案的翻译。

**第二层,寄存器级验证:JLink读芯片内部值,逐位对比。**

AI通过JLink调试器直接读取芯片内部每个寄存器的实际值,与预期值进行位域级对比——32位的寄存器,每一位都单独比较。

比如Timer的LOAD寄存器预期值是63999,实际读回来如果是64000,AI立即知道偏差在哪一位。这相当于给芯片做了一次CT扫描,所有配置状态一目了然。

**第三层,物理波形验证:逻辑分析仪抓真实信号。**

逻辑分析仪通过USB连接到电脑,探针夹在芯片PA16引脚上。AI自动完成触发采集→解析波形→提取频率/占空比→与需求值对比→偏差超阈值则自动回退。

这就避免了AI纸上谈兵——写出来的代码到底能不能在真实芯片上产生正确的波形,不是AI说了算,是示波器说了算。

**第四层,经验永不重犯:Bug一旦修复,永久写进约束库。**

每次调试中发现的问题——比如忘了调enableOutput导致引脚无输出——都被记录到PERIPHERAL_CONSTRAINTS.md约束库中。此后AI写任何涉及GPIO的代码,都会自动检查是否调用了enableOutput。

犯过的错误绝不会再犯第二次。团队的集体经验被永久固化在约束文件里。

**一次完整的闭环跑下来是什么样的?以PWM配置为例。**

需求:在MSPM0G3107芯片的PA16引脚输出100Hz、50%占空比的PWM加热控制信号。

**第一步,AI查数据手册,确定硬件能力。**

PA16引脚→IOMUX_PINCM38→TIMA0定时器CCP2通道。从知识库确认:定时器是16位(最大计数值65535)、时钟源BUSCLK=32MHz、PWM支持DOWN-counting模式。

**第二步,AI计算参数。**

时钟链:BUSCLK(32MHz)→预分频÷5→TimerClk=6.4MHz。周期:6.4MHz÷100Hz=64000(满足16位限制)。LOAD值:64000-1=63999。占空比:64000×50%=32000→写入CCDAT2寄存器。

**第三步,AI参考SysConfig模板,确定8步初始化序列。**

AI从TI官方SysConfig模板提取完整的初始化步骤,而非凭经验手写。这个设计很关键——之前手写代码遗漏了setCCPDirection和setCounterControl两步,导致PA16完全无输出。

**第四步,AI生成C代码。**

生成完整的TIMA0_PA16_PWM_Init()函数,涵盖8个初始化步骤。所有宏定义放在文件顶部,便于后续修改。

**第五步,全自动闭环执行。**

运行master_agent.py,系统自动执行:Keil编译通过→寄存器验证→JLink烧录成功→逻辑分析仪波形验证。

**第六步,物理验证结果。**

逻辑分析仪真实抓取PA16引脚波形:

实际频率:99.7Hz(目标100Hz,误差0.3%)

占空比:49.8%(目标50%,误差0.2%)

误差在许可范围内,验证通过,代码可直接用于量产。

整个闭环从用户下指令到拿到验证报告,不到5分钟,零人工介入。

效率提升:迭代速度提升约10倍,物理验证覆盖率100%,人工值守时间降为0,知识可无限累积。

我的闭环工作流,AI不靠猜测写代码,而是基于TI官方知识库精确翻译;AI写的代码不靠信任交付,而是经过真实芯片物理检验才放行。

整个工作流,用到的技能我已经全部SKILL化,平台化,任何一款MCU基于这个工作流,都能够快速的进行全自动闭环开发,其中关键的技术已经申请专利。

有兴趣者可以加我微信:shujieshuyan

提供一键部署多agent协作全闭环开发嵌入式软件和社群服务。一次付费,一年持续升级工作流和SKILL。传授指挥,使用AI的方法论,让你也能够开发属于自己的SKILL和工作流。

免费的AI工具链也可以实现全闭环开发和量产的代码质量。opencode+deepseek 无需爬梯。AI编程代理工具链,十分钟部署完成。