未分类

从单片机到 Linux 驱动,再到 AI:一个机械生的技术路径

这篇算是对自己这几年技术路线的复盘。写下来一方面是梳理,另一方面也是给同样从非科班背景出发的人一点参考。

阶段一:裸机单片机

入门是从 STM32 开始的。第一段有意义的代码,是点灯。听起来很简单,但点灯这件事的完整链路:时钟树配置、GPIO 模式设置、寄存器读写,每一步背后都是芯片手册里的时序图。

那时候我的习惯就已经定型了:不满足于抄例程。例程跑通了,我会翻手册,看那个寄存器到底是什么意思,为什么默认值是这样。这个习惯让我在裸机阶段打下了还算扎实的基础,中断优先级、DMA、定时器这些概念,都是那会儿啃手册啃出来的。

回头想,裸机阶段最重要的收获不是会调外设,而是建立了”寄存器视角”。所有上层的花哨,最终都要落到寄存器和内存上。

阶段二:Linux 驱动

裸机写多了,会想一件事:如果外设很多,系统很复杂,怎么办?

答案是操作系统。我转到 Linux 是带着问题来的,所以没有经历太多”从哪开始”的迷茫,直接冲着驱动去的。设备树、platform 驱动、字符设备、中断下半部、内核同步机制,这些东西对当时只有裸机经验的我来说,每一块都不轻松。

我记得调第一个字符设备驱动的时候,半夜两点还在看 dmesg 的输出。内核态和用户态的数据拷贝、ioctl 的 cmd 定义、设备节点的权限,每个细节都可能让系统直接卡死。但正是这种”错了就崩”的反馈,让人对内存和指针的理解变得异常深刻。

驱动阶段我学到的最重要的一件事:分层。内核把复杂的硬件抽象成清晰的接口,你只需要在正确的层做正确的事。这个思想后来贯穿了我看所有大型系统的角度。

阶段三:AI 工具链

接触 AI 是很自然的事。先是 Python,然后是各种工具链,再然后开始折腾本地模型。

我有一块 2080 Ti,显存 11G。这个配置跑大模型有点尴尬:7B 模型量化后勉强能跑,13B 就很吃力。但正是这个限制,逼着我去理解量化、上下文长度、推理速度这些概念,而不是无脑调 API。本地跑的每一次 prompt 都要为显存买单,所以你会被迫去理解模型到底在干什么。

再后来是 agent。多 agent 协作、工具调用、上下文管理,这些是比模型本身更靠上的问题。我现在大部分业余时间花在这上面,也踩了不少坑,之后会单独写文章展开。

贯穿始终的一条线

回头看这三段路,有一条线是连续的:不管在哪一层,我都在问同一个问题,这个东西为什么这么设计?

寄存器手册告诉你这个位是干什么的,你想知道为什么是这个位;内核文档告诉你应该用这个接口,你想知道这个接口底下是什么;模型的 attention 机制,你想知道为什么它管用。

这条线没什么特别的,但它决定了你是在搬砖还是在理解。对非科班的人来说,这条线尤其重要,因为你没有系统的课程帮你把知识串起来,只能自己沿着问题往下挖。

下一步会往哪走还不确定,大概率是 AI 应用工程和嵌入式交叉的方向。可穿戴设备、端侧推理、边缘 agent,这些领域让我觉得,前面积累的东西都能用上。

从单片机到 Linux 驱动,再到 AI:一个机械生的技术路径已关闭评论