乐于分享
好东西不私藏

AI才是嵌入式开发可以躺平的底气

AI才是嵌入式开发可以躺平的底气

1

关于我
大家好,我是开源君,一个搞了十几年嵌入式开发的老登。目前在工作之余分享一些我的开发经验、职场经验、以及对 AI 时代下嵌入式开发所正在经历的变革的一些思考和总结。关注我,不迷路。

2

AI 变革
去年这时候我还在吐槽 AI 写代码不靠谱。一个连交叉编译链和 MMU 都不认识的玩意,能帮我写驱动?在网上看到的那些 AI 编程 demo,基本上是写个网页、写个 Python 脚本,跟我们这行毛关系也没有。
但到了去年下半年,这东西突然就好用了。说不上来具体是什么原因——可能是上下文窗口大了,一个项目全部源文件甩进去它都吃得下;也可能是模型对嵌入式 C/C++ 的理解终于不像之前那样半吊子了,编译、调试都能给你跑通。反正就是莫名其妙地,行了。
有次调一个 CANopen 协议的伺服电机。需求听着不复杂:配好 PDO 映射,RPDO 发速度指令,TPDO 收位置反馈,再加个心跳监测别让电机失联。听起来一上午的事吧?结果一天半过去了。先是 PDO 的 COB-ID 算错了——CANopen 默认 COB-ID 是功能码加节点 ID,手册上标的十六进制,我当成十进制直接填进去,电机当然纹丝不动。然后对象字典索引号 0x6060 是工作模式,我不小心写成了 0x6064 位置反馈值,SDO 读回来全是零,以为编码器坏了排查了一下午。SDO 分段传输那块,要写一个超过 4 字节的配置参数,分帧的 toggle bit 没翻转,写到第三帧就被从站拒了。最崩溃的是 NMT 状态机——从预操作态切到运行态之后电机不响应,查了半天发现必须先发一个 SYNC 帧才能触发 PDO 传输。心跳报文超时时间设太短,电机一忙没来得及回心跳,主站直接收到 EMCY 紧急报文然后切回预操作态,整个系统循环重启。等电机真正转起来的时候已经深夜了。
写烦了,抱着死马当活马医的心态我直接把电机说明文档丢给AI,结果几十秒出来一大段代码。PDO 的 COB-ID 没算错,SDO 分段传输的 toggle bit 也翻了,NMT 状态机从初始化到运行态的切换流程,写得比我自己对着 DS301 标准文档翻半天写的还清楚。心跳和 EMCY 的处理逻辑也给我封好了。我就改了几行,把运动控制的核心逻辑——梯形加减速曲线、位置环 PID、限位保护——补了进去,编译烧进去,电机一次跑通。

3

开始反思
当时心情挺复杂的。一方面觉得这东西确实管用,另一方面是那种——我他妈一天半在干嘛——的感觉。
然后我就开始翻以前的代码库。这些年我到底手写了多少遍 CANopen 的对象字典和 PDO 映射——换个驱动器就得重新对着手册配一遍 COB-ID、传输类型、映射参数,索引号拼错一个就死活读不上数据。多少遍串口初始化的那坨参数配置——termios 那几个结构体,baud rate、stop bits、parity、flow control,每次写都去翻旧的复制粘贴。多少遍 I2C 的设备树节点、SPI 的传输封装、Socket CAN 的收发循环、Makefile 和 CMakeLists.txt 模板、内存池的实现、ring buffer、日志宏系统……列都列不完。
这些东西写一百遍也不会让我变成更好的嵌入式工程师。不是经验积累,纯他妈消耗生命。我搞了十几年嵌入式,天天配 termios 那堆参数,配得滚瓜烂熟有个屁用?换个片子换个驱动,照样从头来一遍。

4

新的起点
现在写新模块,流程很简单:把需求说清楚——什么接口、什么协议、输入输出什么数据、错误怎么处理——丢给 AI 出框架和样板代码。出来的代码框架基本对,但细节得改。
我在上面改逻辑、补边界条件、加硬件相关的异常处理。比如 AI 不知道你这个 SPI 设备的片选信号拉高后要等 50 微秒才能再次拉低,不知道这个传感器上电后要等 200 毫秒才能读 ID 寄存器,不知道你的 DMA 缓冲区必须 32 字节对齐。这些细节,AI 搞不定,得你来。
效率高不高倒是其次,关键是你脑子能空出来琢磨真正要命的东西——上电时序对不对?中断响应够不够快?内存对齐会不会搞出 cache line bouncing?调度延迟能不能满足实时性要求?驱动架构怎么跟上层解耦?这些东西,不是你手写一百遍协议配置就能琢磨明白的。
我做的大多是设备端应用,涉及硬件交互和通信协议设计。私有协议的控制逻辑、加密算法的核心实现、设备的安全认证流程,这部分我不用 AI,自己写。丢给 AI 的都是协议帧拼装、日志宏、配置解析、JSON 打包拆包这些通用层的东西,不存在泄不泄密。真要搞合规项目,开发机不联网,Ollama 跑个本地模型,一样干活。
说实话,用什么工具不重要,Claude Code, Opencode,Kiro,哪个顺手就用哪个,先把工作流跑通了再说。嵌入式开发有个天然优势——代码在开发机上写、交叉编译到目标板,AI 工具跑在 x86 开发机侧完全不受限。只要你打通了 AI 开发工作流,任何 AI 工具都可以用,无非就是迁移成本的问题。

5

结尾
古法手写每行代码不是工匠精神,是一根筋。
AI 不能替代你的经验,但是它可以替代你的重复劳动,省下来的时间,用来躺平不香吗?
我是开源君,有空下次聊。