当前时间: 2026-06-29 09:38:30
分类:办公文件
评论(0)
AI才是嵌入式开发可以躺平的底气大家好,我是开源君,一个搞了十几年嵌入式开发的老登。目前在工作之余分享一些我的开发经验、职场经验、以及对 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、限位保护——补了进去,编译烧进去,电机一次跑通。 当时心情挺复杂的。一方面觉得这东西确实管用,另一方面是那种——我他妈一天半在干嘛——的感觉。 然后我就开始翻以前的代码库。这些年我到底手写了多少遍 CANopen 的对象字典和 PDO 映射——换个驱动器就得重新对着手册配一遍 COB-ID、传输类型、映射参数,索引号拼错一个就死活读不上数据。多少遍串口初始化的那坨参数配置——termios 那几个结构体,baud rate、stop bits、parity、flow control,每次写都去翻旧的复制粘贴。多少遍 I2C 的设备树节点、SPI 的传输封装、Socket CAN 的收发循环、Makefile 和 CMakeLists.txt 模板、内存池的实现、ring buffer、日志宏系统……列都列不完。 这些东西写一百遍也不会让我变成更好的嵌入式工程师。不是经验积累,纯他妈消耗生命。我搞了十几年嵌入式,天天配 termios 那堆参数,配得滚瓜烂熟有个屁用?换个片子换个驱动,照样从头来一遍。 现在写新模块,流程很简单:把需求说清楚——什么接口、什么协议、输入输出什么数据、错误怎么处理——丢给 AI 出框架和样板代码。出来的代码框架基本对,但细节得改。 我在上面改逻辑、补边界条件、加硬件相关的异常处理。比如 AI 不知道你这个 SPI 设备的片选信号拉高后要等 50 微秒才能再次拉低,不知道这个传感器上电后要等 200 毫秒才能读 ID 寄存器,不知道你的 DMA 缓冲区必须 32 字节对齐。这些细节,AI 搞不定,得你来。 效率高不高倒是其次,关键是你脑子能空出来琢磨真正要命的东西——上电时序对不对?中断响应够不够快?内存对齐会不会搞出 cache line bouncing?调度延迟能不能满足实时性要求?驱动架构怎么跟上层解耦?这些东西,不是你手写一百遍协议配置就能琢磨明白的。 我做的大多是设备端应用,涉及硬件交互和通信协议设计。私有协议的控制逻辑、加密算法的核心实现、设备的安全认证流程,这部分我不用 AI,自己写。丢给 AI 的都是协议帧拼装、日志宏、配置解析、JSON 打包拆包这些通用层的东西,不存在泄不泄密。真要搞合规项目,开发机不联网,Ollama 跑个本地模型,一样干活。 说实话,用什么工具不重要, Claude Code, Opencode,Kiro,哪个顺手就用哪个, 先把工作流跑通了再说。嵌入式开发有个天然优势——代码在开发机上写、交叉编译到目标板,AI 工具跑在 x86 开发机侧完全不受限。只要你打通了 AI 开发工作流,任何 AI 工具都可以用,无非就是迁移成本的问题。 AI 不能替代你的经验,但是它可以替代你的重复劳动,省下来的时间,用来躺平不香吗?
上一篇医生转行健康管理,说明看懂趋势和政策!
下一篇【电子看报】周三版
基本
文件
流程
错误
SQL
调试
请求信息 : 2026-07-03 18:34:46 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/659746.html 运行时间 : 0.455054s [ 吞吐率:2.20req/s ] 内存消耗:4,679.19kb 文件加载:145 缓存信息 : 0 reads,0 writes 会话信息 : SESSION_ID=457acdae62b251dc74936419461a8ef7
CONNECT:[ UseTime:0.000606s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4 SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000677s ] SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.005049s ] SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.004103s ] SHOW FULL COLUMNS FROM `set` [ RunTime:0.001564s ] SELECT * FROM `set` [ RunTime:0.008325s ] SHOW FULL COLUMNS FROM `article` [ RunTime:0.001496s ] SELECT * FROM `article` WHERE `id` = 659746 LIMIT 1 [ RunTime:0.031357s ] UPDATE `article` SET `lasttime` = 1783074887 WHERE `id` = 659746 [ RunTime:0.019145s ] SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.013404s ] SELECT * FROM `article` WHERE `id` < 659746 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.013262s ] SELECT * FROM `article` WHERE `id` > 659746 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.054274s ] SELECT * FROM `article` WHERE `id` < 659746 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.016911s ] SELECT * FROM `article` WHERE `id` < 659746 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.072916s ] SELECT * FROM `article` WHERE `id` < 659746 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.012804s ]
0.459208s