先说结论,从我身边的案例来说,大多数觉得单片机比不上Linux开发的,都是因为薪资。
其次是Linux能做的产品,更加高端,看起来逼格更高一些。
单片机的程序,相对来说比较少,从业这么多年,我碰见过的大多数工程师,都没有架构的思维,就是代码都是以实现功能为主,不会管后续的可维护性,比如说代码可移植性和可扩展性。
第一,是因为项目急,做这么好,从功能上又看不出来,老板看不见,不理解,也没用,但是花费的时间可能是双倍,万一耽误了项目进度,吃力不讨好。
第二,对工程师的经验要求比较高,程序架构的设计不是一年,两年能积累出来的,市面上也没这类的教程可以学习,所以很多工程师不具备这能力,有些复杂的项目,则直接选择上RTOS。
不过对于资深工程师来说,RTOS反而显得有点累赘,所以一般会自己设计架构。
我做项目就是一直在用自己的架构,本质是轮询的,不是抢占式的,只是用比较模块化的思维,对传统的while(1)死循环进行了代码的封装。
这个架构,我很早以前也录了一套系统的教程,包括任务创建,调度,队列等等功能,要的可找我安排。
继续往下说。
只会Linux开发的,其实也有缺点,比如涉及代码过于庞大,很多都是现成的方案SDK,这就容易造成工程师,一旦离开了熟悉的环境,就会变得手足无措。
真正优秀的嵌入式工程师,应该具备举一反三、触类旁通的能力。无论是裸机开发还是移植Linux,对他们而言都只是手段,最终目的是用最合适的技术解决问题,交付有价值的产品。
单片机够用就不要搞操作系统,项目复杂就引入RTOS或Linux,削减无谓的工作量,善于借力,而不是故步自封。
可惜,这类工程师太少了,成长周期太漫长了,熬完这个周期,估计都40多岁了,也在一线干不动了,而且薪资待遇也跟不上,付出回报不成正比的情况下,很多就转型了。
入行容易,精进不易,我建议新人还是要慎重,如果不是真爱,最好换个方向。
随着阅历的增长,我愈发觉得,搞嵌入式开发的核心,或者稀缺程度,取决于是否参与整个产品生命周期,而不只是埋头写代码。
要去了解客户需求、评估技术选型、规划软硬件架构、带领团队攻坚、听取市场反馈、迭代优化产品,每个环节都至关重要,也都大有学问,唯有吃透产品,才能设计出最合理的技术方案。
避免工程思维,面对每一个新项目,都要先思考怎样才能最快最好地完成,而不是自己闷头学这学那的,等学出来,市场早都没你的份了。
比如,需要联网的产品,首先想到的不是自己去搭建云平台,而是直接用类似于涂鸦云、Onenet之类的方案。
关键是要抓住问题的本质,直击痛点,想办法先把东西做出来,即便粗糙一些也无妨,后面再慢慢打磨,这就是工程师的智慧。
打磨出一套正确的做事心态、模型、方法论,往往比掌握什么技能更重要,单片机还是Linux,只不过是解决问题的工具而已。
最近有些老铁找我咨询学单片机,聊完发现99%的人都走了弯路,特意写了一篇单片机学习路径:
单片机不踩坑的学习路线https://blog.csdn.net/2301_78464137/article/details/141396541