
大家好我是仲一。做 BSP 也有几年了经常有同行问我这条路该怎么往后走。先说一句我不觉得每个人都要成为架构师。有些人一辈子写驱动也很快乐而且写得好的驱动工程师在任何公司都是稀缺资源。但如果你想把这条路走得更远想理解更大的图景这篇文章可以给你一些参考。我在芯片公司做 Linux 驱动这几年最大的体会是从 BSP 到架构师中间差的不是代码量是视野。初级阶段把手弄脏任何一个 BSP 工程师的起点都是把手弄脏。这个阶段的核心就一件事让硬件跑起来。你拿到一块新板子原理图、芯片手册、参考代码扔给你。你要做的是把 U-Boot 移植上去把内核跑起来把基本的外设调通。这个阶段你会遇到各种奇怪的问题——DDR 参数配置不对、时钟树配错了、某个 GPIO 的复用功能跟 datasheet 写得不一样。没什么捷径。就是看手册、写代码、试错。每解决一个问题你就比昨天多懂一点。如果你刚开始走这条路我的建议是找一个参考平台走通全流程。买一块 i.MX6ULL 或者 STM32MP1 的开发板从 SD 卡启动 U-Boot 开始到内核编译、设备树配置、根文件系统制作、驱动加载完整走一遍。一套流程走下来你对嵌入式 Linux 系统的理解会比读半年书都深。中级阶段建立体系当你能搞定单板 Bringup 和基本驱动之后下一个阶段是建立体系。这时候你不再只盯着某个模块而是开始理解整个系统怎么组织起来的。这个阶段有几个标志性的事情。开始理解内核的架构。不再只是某个驱动框架里填回调函数而是去理解为什么 Linux 要这样设计——设备模型为什么分 bus、device、driver 三层为什么要有 platform 总线中断子系统上下半部是怎么设计的。这些问题的答案决定了你能不能在碰到新平台时快速上手。开始关注性能和稳定性。你的驱动跑通了但性能是否最优中断延迟能不能再降内存占用能不能优化多核并发下有没有竞态这些问题才是区分普通工程师和资深工程师的分水岭。开始形成自己的调试方法论。经验丰富的 BSP 工程师碰到问题不会盲目猜测而是有一套完整的排查链路——从系统日志到内核 trace 到硬件信号每个环节用什么工具、怎么看输出、怎么缩小范围心里有数。这套方法论靠前面几年一个一个坑踩出来的。老话说驱动工程师三年才算入门说的就是这个阶段。不是三年才开始写驱动是三年后才能写出靠谱的驱动出了问题能自己定位。高级阶段跳出驱动看系统到了第三阶段你的关注点不再只是这个设备能不能工作而是这个系统能不能稳定高效地运行。这个转变很重要。一个 BSP 工程师和一个系统架构师之间最大的区别不是代码能力而是抽象能力。架构师要考虑的是这个产品需要什么样的硬件平台内存和存储怎么规划用哪个内核版本实时性要求怎么满足安全启动怎么做OTA 升级方案怎么设计功耗怎么优化量产后的可维护性怎么保证这些问题没有一个能在单一驱动层面回答。你需要对整个系统的运作有全局理解要能跟硬件工程师讨论方案选型跟产品经理讨论需求边界跟测试讨论验证策略。一个检验自己是否到了这个阶段的方法给你一个新项目你能不能从头开始设计它的软件架构从芯片选型开始到系统分区、驱动框架、应用接口、升级方案每一步能给出选择理由和备选方案如果你能那你已经在做架构师的事了。架构师不是终点最后想说的是嵌入式这个行业很大容纳得了不同方向的人。有人喜欢钻底层成了内核专家哪里出了问题都能在代码层面给出解释。有人喜欢贴近硬件成了芯片公司的应用工程师帮客户解决各种稀奇古怪的问题。有人喜欢带团队成了技术经理把一群人的能力放大。这些方向没有高下之分。核心是你得知道自己在哪个阶段以及下一阶段想去哪。我的建议是把自己当成一个产品来迭代。每个阶段关注的核心能力不同——前三年把手弄脏中间三年建立体系再往后看系统和做决策。我是这么给自己规划的不一定适合所有人但至少有个参照物。如果这篇文章能给你一些启发那就够了。你现在在哪个阶段下一步想往哪个方向走留言区聊聊。仲一做嵌入式已经六七年了现在在某头部芯片公司做驱动开发之前带过团队、也面试招过人。简历看多了面试也面多了所以职业怎么走、简历哪里不对、面试卡在哪儿这些事我算是有点发言权。这些年陆陆续续有读者找过来问方向、问简历也拉我做过不少模拟面试。带过的师弟师妹有大二进小米海康的也有四个月拿到大疆、oppo、华为 offer 的简历前前后后改过两千多份。就一个要求建议你得真去做。不然别来找我浪费彼此时间。职业方向、简历、面试哪块有疑惑都可以找我聊聊。想聊的公众号后台回复「咨询」。end往期推荐嵌入式Linux必读经典书籍嵌入式学习路线推荐一位读者逻辑清晰的提问机械转行嵌入式成功上岸一位音视频方向读者秋招上岸的经历