夜雨聆风学习资料网

ARTICLE · 1123087

刚做完一个项目,聊一聊AI 冲击下的嵌入式软件

刚做完一个项目,聊一聊AI 冲击下的嵌入式软件

全程用 AI 开发了一个企业级 SoC + MCU 项目

上一次认真玩 MCU,还是在大学。

最近的一个工作项目里,我接手了一个 SoC + MCU 多核异构的开发项目。除了负责 SoC 端的应用开发,还要负责对应的 MCU 开发。整个项目复杂度不低,尤其是 MCU 这一块,对我来说很多东西都需要重新捡起来。

这个项目我基本全程使用 Claude,包括方案设计、代码开发、调试和 Bug 排查。最终项目里 99% 以上的代码都可以说是 AI 写的。

做完之后一个很直接的感受是:AI 对嵌入式软件开发的冲击,并没有比其他软件领域小多少。

以前可能会觉得嵌入式涉及硬件、交叉编译、驱动、寄存器这些东西,AI 很难真正参与进来。但实际做下来,只要项目代码、文档和上下文足够完整,AI 一样可以深入参与整个开发过程,并没有想象中那么大的阻碍。

没找到用“古法编程”的机会

回头看这段时间,至少在实际工作中,我已经很难找到使用“古法编程”的机会了。

做方案设计时,AI 往往能一次给出几套比较完整的方案,优缺点、实现方式、可能遇到的问题也都会列出来。很多时候你会发现,每个方案看起来都说得通,也都能做。

到了具体功能开发,差距更加明显。AI 写代码比自己快得多,而且考虑得往往更全面。你让它实现一个功能,它经常会顺手把异常处理、日志、边界条件,甚至后续可能用到的扩展一起补上。

所以如果只关注最终结果,会发现很多事情已经可以做到:不需要自己从头设计,也不需要自己一行一行写代码,同样能把功能做出来。

从效率上来说,这当然是一件好事。

推荐的方案,不一定是最优的方案

不管遇到什么问题,AI 通常都能给出好几套解决方案,然后再告诉你它最推荐哪一种。很多时候,这些方案确实都能解决问题。

但“能解决问题”和“最适合这个项目”,其实是两回事。

AI 对一个工程的理解,很大程度上来自当前能看到的代码和上下文。它可以分析局部,但很难真正拥有开发者对整个系统长期积累下来的理解。

所以真正困难的地方,慢慢从“怎么实现”变成了“到底应该怎么选”。这个选择非常考验一个人对整体架构、历史设计、后续维护和业务需求的理解。

选错方案,很多时候也不会马上出问题。功能一样可以跑,需求一样可以交付,但代价可能会在后面慢慢出现。

代码开始像“狗皮膏药”一样,一块一块往上贴。每一次修改都能解决眼前的问题,但整体越来越乱,模块之间的关系越来越复杂。

最后甚至会进入一种很尴尬的状态:代码还能继续改,但已经越来越依赖 AI 去改,因为人自己已经很难看懂,也很难理清楚了。

没有方向指引的 AI 会失控

对于普通的软件 Bug,AI 的表现通常非常好。很多问题它确实能做到又快又准:分析日志、顺着调用链找问题、检查边界条件、定位代码逻辑错误,这些都是它非常擅长的事情。

但碰到一些和硬件强相关的问题时,情况就完全不一样了。

有些问题明明根因在硬件、电气时序或者外设状态,AI 却会不断在软件里找原因。然后加日志、改代码、继续分析,再加日志。

如果方向一开始就是错的,它很容易在错误的方向里循环。这个时候,人必须介入。

需要根据现象判断问题大概在哪一层,是应用、驱动、系统,还是硬件;然后进一步缩小范围,告诉 AI 应该重点查什么,必要的时候还要配合示波器、逻辑分析仪或者硬件同事一起调试。

AI 很擅长沿着一条路快速往前走,但有时候真正重要的不是走得快,而是先判断这条路到底对不对。

这可能也是目前 AI 在嵌入式软件开发和纯软件开发之间一个比较明显的区别。

AI 对学习效率的提升非常明显

另一方面,AI 对学习的帮助确实非常大。我最近在学习 BSP,这种感受尤其明显。

以前学习一个陌生系统,往往要先翻很多文档,再到项目里一点一点找对应关系。比如 DTS 到底分了几层,每一层负责什么;板级配置从哪里进来;默认配置在哪里;不同 defconfig 之间是什么关系。

现在可以直接把当前项目作为上下文去问。

AI 不只是告诉你一个通用概念,而是可以直接结合项目里的代码解释:这个 DTS 为什么这样分层,这个配置是从哪里来的,这个宏最后在哪里生效。

更重要的是,它可以不断回答学习过程中的“为什么”。

以前很多知识点卡住之后,可能需要查半天资料才能继续往下走。现在这个反馈周期被压缩得非常短。

从纯学习效率来说,这可能是 AI 给开发者带来的最大提升之一。

项目结束之后的空洞

但那个几乎完全由 AI 开发的项目做完之后,我反而有一种很明显的空洞感。

回头看这个项目,我确实获得了很多东西。比如怎么更好地和 AI 协作,怎么给上下文,怎么让它排查问题,怎么控制它修改代码。这些都算是新的开发经验。

另外,对项目所在行业本身,我也积累了一些经验。

但如果只看技术本身,尤其是架构和代码细节,我发现自己留下来的东西并没有想象中那么多。

项目明明做完了,但我对整个工程却没有那种很熟悉的感觉。如果突然出现一个问题,也很难做到心里马上有一个大概判断:问题可能在哪,为什么会这样,应该先从哪里开始查。

这种感觉很奇怪。项目是自己负责的,需求也完成了,但又总觉得这个项目不像真正是自己做出来的。

后来我想了一下,原因可能很简单:

AI 消灭了很多过程,只留下了结果。

这种变化有点像:以前是我自己在玩游戏,现在变成了我在旁边指挥 AI 玩游戏。

最后都是通关,结果看起来没有区别,但真正留在自己身上的东西,并不一样。

AI 不能代替我们成长

AI 改变了开发方式,也在不断降低技术门槛。

过去需要死磕好几周才能掌握的东西,现在可能几句话就能让 AI 给出一个可用的实现。很多曾经被认为是“护城河”的能力,也正在被重新定义。

效率提升的同时,一些岗位对人的需求也会减少。焦虑是真实存在的,关于“AI 会不会替代程序员”的讨论也越来越多。

但技术的发展不会停下来。我们真正能做的,是适应这种变化,同时想清楚什么才是自己真正应该留下来的能力。

AI 可以降低门槛,但真正拉开差距的,依然是长期积累下来的经验、判断力和基本功。

越是在 AI 越来越强的时候,越不能丢掉基本功,也越不能停止学习。

相关学习资料