嵌入式要卷成下一個Java了嗎?
不會!
說不會也是有自己的原因的
前幾天寫了一篇 Linux 和單片機的文章
單片機容易,門檻低,無非不就是單片機技術知識點比較少,特別是面向過程式的編程也更容易掌握。嵌入式 Linux 是多任務式的,多任務之后就引申了更多的東西出來,技術更復雜,既然更復雜的技術,那就可以解決更復雜的業(yè)務需求。
所以的業(yè)務需求都是向前的,也是被市場引領的,10 年前的中華酷聯(lián),10 年前的塞班手機,還有大街小巷的捷達。再近一點,深圳原來很多燒油的的士,現(xiàn)在都變成了電動汽車。
時代改變,業(yè)務改變,技術當然也需要改變。
那些難以設計的GUI,游戲體驗,屏幕大小,續(xù)航,都需要被淘汰改變。
還有那些不及時回復的原廠技術支持,也會慢慢被取締,這也是市場帶動的,以前外企的芯片有自己的護城河,如果這些護城河阻礙了我們科技現(xiàn)代化的發(fā)現(xiàn),就會被國產(chǎn)化替代。
這些,都需要嵌入式。
嵌入式說起來很容易,今天在我的技術群里面,一個前輩就說Linux 設備驅(qū)動很容易,Linux 內(nèi)核模塊也很容易,Linux 內(nèi)核也很容易,還有那個調(diào)試了幾周都調(diào)不出來的 codec 驅(qū)動也是很容易的。
所以,嵌入式又容易,工作機會又多,工作寫代碼又少。
簡直是符合了很多人嚴重的,錢多事少二個基本要素。
說到這里,可能很多人就覺得,嵌入式無非不就是這樣嗎,那自己是不是也可以跳槽到嵌入式行業(yè)領拿高薪?
但是實際情況是,我們拿一個 camera 驅(qū)動來說,你想要調(diào)試 camera 驅(qū)動,你首先要把SDK 給搞明白吧,你需要對 camera 的硬件原理圖搞清楚吧,camera 需要幾路電壓,你是不是也要知道軟件代碼位置,camera 還還有一個電機馬達驅(qū)動,你是不是也要調(diào)試這個,camera 肯定涉及到i2c的初始化對吧,那你是不是也要對i2c驅(qū)動要懂,要知道怎么調(diào)試i2c驅(qū)動,camera 需要調(diào)試效果,白平衡,曝光,伽馬曲線等等,你是不是也要懂。
那涉及應用層,你是不是需要把 v4l2 驅(qū)動架構搞清楚,知道怎么去調(diào)用它的接口出圖。
好了,這些其實也不算太難,如果你知道了這些東西,面試的時候給面試官隨便吹吹,面試官可能也就覺得你做過 camera 了,然后就讓你去搞了。
那實際的情況是什么,實際的情況是,你遇到一個硬件設備,你要把模組的圖像給顯示出來,你無從下手,你需要找sdk,搭建各種環(huán)境,可能你的代碼跑得都正常了,但是就是沒有數(shù)據(jù)出來,你能怎么辦?
搞嵌入式軟件,有兩個部分很關鍵,一個是測量,一個是看日志,測量可以知道你的硬件是否正常,看日志可以知道你的軟件執(zhí)行是否正常。但是就這兩項技能,很多人都是要好幾年才領悟到的。
畢竟,對于軟件來說,遇到問題第一時間就是群里問,網(wǎng)上百度,經(jīng)驗豐富一些的就知道去找規(guī)格書,找原廠,協(xié)調(diào)fae,一些比較健談的呢,就開始拉會,找硬件,找項目經(jīng)理,找采購。
直到后來發(fā)現(xiàn),解決再難的 bug 也不足以讓自己加薪后,也就沒有再去挑戰(zhàn)的動力了。
而這些,我不知道搞 java 的會不會同樣遇到,但是對于做嵌入式來說,這些真的是家常便便。
總結來說,嵌入式難就難在各個硬件平臺的porting,調(diào)試。
