最近刷B站的时候看到一个挺有意思的课程,清华一位硕士史松做了一套STM32智能小车的速成课,号称三小时通关,核心卖点是用AI来辅助理解每段代码。我当时就在想,AI现在写代码确实越来越强了,那嵌入式开发这块,AI到底能帮到什么程度?
对,这个课程我也关注到了。其实它能做到三小时通关,有一个很重要的技术前提——就是现在STM32的开发生态已经很成熟了。他用的是HAL库加CubeMX这套工具链,简单说就是你可以用图形化界面去配置引脚、时钟这些东西,工具自动帮你生成初始化代码,开发者只需要在这个基础上写业务逻辑就行了。这本身就已经把门槛降了一大截,再加上AI辅助解读代码,确实能让新手快速跑通一个项目。
那这个项目本身的难度到底怎么样?我看评论区有人说小学生都能做,也有人说里面水很深。
哈哈,这个争论其实特别经典。史松自己用了一个特别好的比喻——预制菜和大厨现炒的区别。小学生做智能小车,基本就是预制菜模式,代码是现成的,下载进去车就能跑,编程用的也是Scratch那种拖积木块的方式。但你要是从零开始用HAL库写代码,那就完全是另一回事了。你得理解GPIO的工作模式、PWM信号怎么控制电机转速、定时器中断优先级怎么配……这些底层的东西,图形化编程全给你藏起来了。
嗯,就好比你用Excel拖个公式算数据,和你自己用Python写一套机器学习算法,看着都是在处理数据,但本质上差了好几个量级。
对,就是这个意思。而且评论区有个专业粉丝说得特别好,他列了好几个维度——车子停得稳不稳、走得直不直、转向角度精不精准、电机驱动保护到不到位、距离检测参数跟车速匹不匹配。每一项背后都是真实的工程挑战。比如说停得稳,这涉及PID控制算法的参数调整,你得在响应速度和超调量之间找平衡。走得直呢,你得做左右电机的差速补偿,因为哪怕同型号的电机,制造公差也会导致转速不一样。
这么一说确实,看着简单的东西,要做好其实处处是坑。那我们回到AI这个话题上,现在AI在嵌入式开发里到底能帮上什么忙?
目前来看,AI在三个方面确实很好用。第一是代码解读,你把一段HAL库代码丢给它,它能逐行给你解释这段代码在干什么、底层逻辑是什么。第二是概念答疑,遇到不懂的嵌入式术语,AI基本上都能给你一个通俗易懂的解释。第三是代码生成,你把需求描述清楚了,它能帮你搭出一个基础的代码框架。这三点加在一起,确实大幅降低了学习门槛。
听起来很美好,但我猜肯定有个但是。
你猜对了,但是还不止一个,是三个。史松自己总结了AI在嵌入式开发里的三大局限。第一个,AI需要你精准地描述问题。比如你想点亮STM32上的一个LED灯,你得告诉AI这个灯接在PC13引脚上,而且要说明是正极连接还是负极连接。这些信息你自己不知道,AI也没法帮你。你不可能一点硬件知识都没有就去提问。
这个我理解,就是你得知道问什么,AI才能给你答案。有点像去医院看病,你总得能描述清楚自己哪里不舒服,医生才能诊断。
没错。第二个局限是AI缺乏工程全局认知。当项目越做越大,各个功能模块之间会互相影响。好的嵌入式代码要求你实现一个功能的时候不能把别的功能搞崩了,这需要全局视野。但AI写代码往往只关注你当前问的这个功能,它不会主动去考虑对其他模块的影响。
这个问题在纯软件开发里其实也存在,但嵌入式里应该更严重吧?毕竟资源那么有限,一个定时器可能好几个功能都在抢。
对,资源冲突在嵌入式里是家常便饭。但第三个局限才是最根本的——硬件反馈的缺失。这一点特别关键。你看纯软件开发领域,像Devin这样的AI Agent已经能自己写代码、运行、看报错、再改代码,形成一个自主迭代的闭环。但嵌入式开发不一样,代码的最终效果体现在物理世界里——LED到底亮没亮、电机转没转、传感器读数准不准——这些信息AI自己拿不到。
哦,这个角度很有意思。也就是说在嵌入式开发里,人其实充当了AI的传感器?
你这个说法特别精准!人就是那个不可替代的传感器,负责把物理世界的结果反馈给AI。这就是所谓的数字-物理鸿沟。即使你通过调试接口能读到寄存器的状态,但电机实际转速对不对、传感器安装角度有没有盲区,这些都得人去看、去判断。这个鸿沟不光是嵌入式的问题,机器人、物联网领域都面临同样的挑战。
那现阶段最合理的做法是什么?
史松给了一个很务实的结论,我也非常认同——人机协作。具体来说就是三个分工:人负责架构设计和全局把控,决定用什么芯片、什么传感器、模块间怎么协作;AI负责代码生成和知识查询,快速搭框架、解释技术概念;然后人再负责硬件调试和反馈验证,把物理世界的结果告诉AI,指导下一步优化。
这个分工挺清晰的。那往远了看呢?这个硬件反馈的鸿沟有没有可能被打通?
业界其实已经在探索几条路了。一条是硬件在环仿真,用高精度仿真环境模拟硬件行为,让AI在虚拟环境里调试。另一条是数字孪生,给物理设备建一个实时同步的数字模型。还有就是用机器视觉,让AI通过摄像头直接观察硬件状态。Nvidia的Isaac Sim、MATLAB的Simulink在部分场景里已经能做到仿真闭环了,但距离通用化的全自动嵌入式开发还有相当距离。
所以总结一下的话,AI确实降低了嵌入式开发的入门门槛,让你能更快地跑通第一个项目、理解第一段代码。但要真正做好一个智能小车,让它停得稳、走得直、各项参数都调到位,这个精通的天花板并没有因为AI而降低。
嗯,说得特别对。其实现在反而是一个很好的时机——借助AI快速入门,把那些枯燥的概念理解和基础代码编写的时间省下来,然后把精力花在真正有价值的地方:理解硬件和软件的交互逻辑,培养工程直觉。这些东西,至少目前来看,AI还替代不了。
说白了就是,AI帮你把路铺平了,但路还是得自己走。想做嵌入式开发的同学,趁现在工具这么好,赶紧上手吧。