嵌入式要卷成下一个Java了吗?
不会!
说不会也是有自己的原因的
前几天写了一篇 Linux 和单片机的文章
单片机容易,门槛低,无非不就是单片机技术知识点比较少,特别是面向过程式的编程也更容易掌握。嵌入式 Linux 是多任务式的,多任务之后就引申了更多的东西出来,技术更复杂,既然更复杂的技术,那就可以解决更复杂的业务需求。
所以的业务需求都是向前的,也是被市场引领的,10 年前的中华酷联,10 年前的塞班手机,还有大街小巷的捷达。再近一点,深圳原来很多烧油的的士,现在都变成了电动汽车。
时代改变,业务改变,技术当然也需要改变。
那些难以设计的GUI,游戏体验,屏幕大小,续航,都需要被淘汰改变。
还有那些不及时回复的原厂技术支持,也会慢慢被取缔,这也是市场带动的,以前外企的芯片有自己的护城河,如果这些护城河阻碍了我们科技现代化的发现,就会被国产化替代。
这些,都需要嵌入式。
嵌入式说起来很容易,今天在我的技术群里面,一个前辈就说Linux 设备驱动很容易,Linux 内核模块也很容易,Linux 内核也很容易,还有那个调试了几周都调不出来的 codec 驱动也是很容易的。
所以,嵌入式又容易,工作机会又多,工作写代码又少。
简直是符合了很多人严重的,钱多事少二个基本要素。
说到这里,可能很多人就觉得,嵌入式无非不就是这样吗,那自己是不是也可以跳槽到嵌入式行业领拿高薪?
但是实际情况是,我们拿一个 camera 驱动来说,你想要调试 camera 驱动,你首先要把SDK 给搞明白吧,你需要对 camera 的硬件原理图搞清楚吧,camera 需要几路电压,你是不是也要知道软件代码位置,camera 还还有一个电机马达驱动,你是不是也要调试这个,camera 肯定涉及到i2c的初始化对吧,那你是不是也要对i2c驱动要懂,要知道怎么调试i2c驱动,camera 需要调试效果,白平衡,曝光,伽马曲线等等,你是不是也要懂。
那涉及应用层,你是不是需要把 v4l2 驱动架构搞清楚,知道怎么去调用它的接口出图。
好了,这些其实也不算太难,如果你知道了这些东西,面试的时候给面试官随便吹吹,面试官可能也就觉得你做过 camera 了,然后就让你去搞了。
那实际的情况是什么,实际的情况是,你遇到一个硬件设备,你要把模组的图像给显示出来,你无从下手,你需要找sdk,搭建各种环境,可能你的代码跑得都正常了,但是就是没有数据出来,你能怎么办?
搞嵌入式软件,有两个部分很关键,一个是测量,一个是看日志,测量可以知道你的硬件是否正常,看日志可以知道你的软件执行是否正常。但是就这两项技能,很多人都是要好几年才领悟到的。
毕竟,对于软件来说,遇到问题第一时间就是群里问,网上百度,经验丰富一些的就知道去找规格书,找原厂,协调fae,一些比较健谈的呢,就开始拉会,找硬件,找项目经理,找采购。
直到后来发现,解决再难的 bug 也不足以让自己加薪后,也就没有再去挑战的动力了。
而这些,我不知道搞 java 的会不会同样遇到,但是对于做嵌入式来说,这些真的是家常便便。
总结来说,嵌入式难就难在各个硬件平台的porting,调试。