該不該放棄微控制器、嵌入式這條路?

01 故事起源

分享一名自動化專業學生的嵌入式逆襲之路:

大學時玩過51微控制器,但是那時就跑了一個流水燈實驗,還是用匯編實現的,C語言我都不會,儘快本科時2級C我考了92分,但是不實際使用很快就忘完了。大四暑假去一個小公司面試,人家問我什麼是串列埠,我懵逼的不知道如何回答,自然人家不會要我。

所以現在回看那時的自己,就是一個嵌入式渣渣。

考研也沒有考上第一志願的理想學校,調劑到了北京一所高校,導師的研究方向是模式識別方向,那時影象處理還沒有現在這麼火,研一的時候導師給我安排了一個VC++的上位機程式設計專案,結果我實在是搞不定,後面被迫放棄。

那段時間我愁的滿嘴潰瘍,直到現在我還時不時的平均每月一次潰瘍,不知道是不是當初留下的後遺症。

我導師接外面的公司裡的專案,我做的第一個專案是一個天然氣管道流量採集系統,功能很簡單,就是透過RS485 Modbus協議採集溫度、流量值,然後傳送到監控中心顯示。買的現成的RTU裝置、中心軟體我用的組態軟體,所以整個專案了裡真正的程式設計程式碼工作幾乎沒有,是一個整合專案。但是這個專案給我的收穫非常大,因為裡面的所有工作都主要是我完成的,包括原材料購買、機櫃安裝、現場裝置接線、除錯等。最後看到現場的資料能夠透過3G無線網路傳輸到遠端中心,那當時的感覺還是很不錯的。

不得不提,當時我的一個師兄給了我很大的幫助,因為當時我連網路ping的原理都不懂,連什麼是交換機和路由器都搞不清楚,是他教了我這些基礎的知識。

透過上面的這個專案,我第一次體會到了真正的實際專案是怎麼回事,並且也建立了一定的自信,就是原來我也可以做成一件事。

這個專案做完,有段時間我還一度想著以後畢業了就從事工控行業了。。。

後來,又參與了導師的一個真正的嵌入式的專案,做的是一款物聯網燃氣表,這裡麵包括了微控制器、手機平臺晶片,開發語言是C語言,我那時在現在看來依然是個打醬油的角色,主要就是在外面公司裡打打雜,從頭到尾也沒寫過幾行程式碼,不過啊,這期間整天耳濡目染,沒吃過豬肉也見過豬跑啊,對嵌入式裡的一些概念(串列埠、IIC、下載、sourceinsight、低功耗等)算是建立起來了,並且我那會也直接和英特爾的工程師一起除錯,也學到了很多東西,期間還去上海出了一趟差。這也讓我確定了畢業後要進入一家外企晶片公司的念頭。

研究生的時光很短暫,第三年就找工作了,由於我準備的較充分並且也有實際專案經驗,所以很快就拿到了好幾個公司的offer,包括MTK、中興、威盛、Freescale等。一開始我選擇了MTK的linux驅動開發的職位,還去公司實習了1個多月,後來由於沒抗住壓力和Freescale offer的誘惑,最後畢業時去了Freescale,時過境遷,現在Freescale都不存在,已經被NXP收購了。

第一份工作月薪10。5K+40%業績獎金+補充住房,當時說的年薪18。6W,那時真心覺得很高啊,因為我本來的期望就是月薪能在8-9K。我的職位是FAE,就是技術支援工作,要經常面對客戶,給客戶做支援。做了3年後,離開。

離開的原因是,覺得我需要在一個行業專注,做的有深度,同時不想在大公司做一個螺絲釘,於是進入了一傢俬企,從事車聯網V2X行業,又幹了兩年,這兩年我做了微控制器的專案,也做了Linux應用開發工作,同時學會了初級的C++程式設計,另外對產品有了直觀的體驗。

去年離開,又跳槽到另外一家公司,也是做的同樣的行業,目前職位是產品經理,同時也在不斷的學習技術知識,月薪30K+。這一年來學會了QT 進行Ui程式開發。目前正在學習JavaScript前端知識,希望能夠自己搭建一個簡單的系統。

業餘時間,和前公司領導寫公眾號,我們也在不斷分享過去的經驗和教訓,希望幫助在嵌入式、晶片行業的朋友。其實每個人在嵌入式行業都會遇到很多問題,大部分你遇到的問題別的人都遇到過,如果能和過來人多交流多溝通,對你影響是很大的。

對於我而言,我不會放棄嵌入式、微控制器,因為我是發自內心的喜愛,我相信我會一直堅持做下去。

同時我也會不斷學習嵌入式之外的相關知識,因為一個完整的產品不僅包括嵌入式,還有手機端、web端等內容。我不求全部都精通,但是我一定會去實踐,去親自體驗。

結合自己的情況(愛好、能力、年齡)等,做出最佳的選擇,而不是人云亦云,不知所從。同時一旦確定方向,要堅定不移的去執行,去堅持,不到萬不得已不要輕易放棄。

此外要和行業裡的人多交流,不斷開拓自己的視野,不要總是隻盯著自己乾的一點事情。要了解你所處的行業,以及整個產品的各個環節,包括晶片(晶片本身就很多門道,什麼代理商啊,貿易商啊,原廠啊,很多人都搞不清楚他們的關係),硬體(原理圖、PCB設計)、產品外殼、結構,包裝,生產環節、UI設計等等方面。這些東西如果有機會,最好是自己親手參與一下,只有實際做了,才能理解其中的東西。

我就自己完整的經歷過:畫原理圖、PCB,打板、買元器件,烙鐵焊接、除錯、寫嵌入式程式碼,寫上位機、移動端軟體,設計產品、現場安裝除錯等所有環節。我是屬於那種自己不親自幹過就不明白的那種。另外嵌入式包含的東西太多了,建議大家除了微控制器,還儘量學學linux,我感覺最近幾年linux越來越普遍了。

同時無線通訊應用越來越多,wifi、ble、Lora、NB-IOT、4G/5G等,無線的知識也得多學習。

最後嵌入式說白了是為了完成一個專案、完成一個產品的工具,技術手段,除了技術本身,你同時應該對背後的行業、業務有深刻的理解,這樣自己的價值才會更高。

02 微控制器和嵌入式的爭論

事實上,很多做一行的人都會發自靈魂問出一個問題:“學微控制器有前途還是嵌入式系統有前途?”

著名嵌入式吳堅鴻認為,毫無疑問的,當然是微控制器有前途。

嵌入式系統現在炒得很火,滿街到處都是嵌入式系統的培訓。遇到很多剛入門的朋友,開口閉口都是嵌入式系統。好像覺得嵌入式系統就是武林秘訣,誰掌握了誰就是武林盟主。現在,我願意公開我的獨家心得跟大家分享,看了之後有收穫的朋友,也不要感激我,只要記得這個文章的原創是吳堅鴻就可以了。目前的電子產品,用嵌入式系統的很少,大部分都是用微控制器,因為微控制器實時反應速度快,外圍電路簡單,價格便宜,開發週期短,這些都是嵌入式系統望塵莫及的,不要跟我說什麼手機,PDA等東西是嵌入式系統,這些東西你能獨立承接出來單幹嗎?大部分的朋友學了嵌入式系統後都無用武之地,空有屠龍之術。

即使有用武之地,那也要跟團隊一起開展工作,跟團隊開展工作,就意味著分工,一旦分工,就意味著流水線作業,單一,乏味,成就感有木有。學嵌入式的不一定比學微控制器的厲害。微控制器簡單嗎?一點都不簡單。

微控制器的功夫在微控制器之外。我搞這行那麼多年,我覺得微控制器是我這一輩子都學不完的。微控制器不帶作業系統,所以你寫微控制器程式,本身就意味著你在開發作業系統。嵌入式帶作業系統,所以你寫嵌入式程式,本身意味著你不用開發作業系統,只是在別人的系統上做一些應用開發。

真正接觸底層的,是搞微控制器的人。不要以為你花一個月的時間就能精通微控制器,我花十年都不會覺得我精通微控制器。裡面博大精深。你要掌握常用的不同廠家微控制器,要掌握各種常用外圍晶片,常用數位電路,類比電路。你要還掌握CPLD,DSP的程式設計,你要會電路板設計,你英文閱讀能力要好,你的學習能力要非常好,以上所有的都還不夠,你必須有幾年以上各種獨立的專案開發經驗。

最後談談大家最關心的問題,學習微控制器賺錢還是學習嵌入式賺錢?學習微控制器,只要你技術過硬,一個膝上型電腦,再加一個農民房就可以在深圳單幹,我就是這樣過來的。學習嵌入式系統的,可能要依附大公司,如果你也出來單幹,估計半年沒接到一個單,即使接到單,如果開發週期三個月或者半年的,你要有充足的糧草儲備。我覺得微控制器開發是藝術,我做的每一個作品都讓我充滿成就感。最後奉勸所有搞技術的年輕人,做一行愛一行,不要急功近利,做好每一天的的工作,沉下心來,時間越久,經驗越豐富,你就越牛。

不過還是有網友站出來表示,各有所用,微控制器是週期短。可嵌入式有技術含量啊。吳堅鴻認為,(1)微控制器入門感覺快,但是真正去做新專案的時候,往往會遇到很多書上你遇不到的問題,往往要折騰一段時間,甚至實在找不出路子,就要重新更換硬體電路,重新更換晶片,而這些問題一旦被你解決了,這些就是你的寶貴經驗,這些是別人在書上學不到的,要有這麼豐富的經驗,功力,短期內很難達到。(2)是不是隻有少數人懂的才叫技術含量?足球,男女老少一看就懂,沒技術含量?圍棋,兩個人靜靜呆在那裡對戰幾個小時,你我都看不懂的,才叫技呆術含量?球星一個月就賺好幾百萬,棋王一次頂級比賽的獎金才十多萬。這個現實讓我深受啟發。

微控制器做的事情要儘量簡單,速度要儘量快,成本要儘量低,開發週期要儘量短,這個才是微控制器的獨到之處。裸機跑的微控制器比帶作業系統跑的微控制器效率要高。帶作業系統的微控制器實戰中用不到。

不過,著名嵌入式工程師火哥曾表示,微控制器開發相對於Linux嵌入式最大的劣勢在於基層的打工崗位平均薪資偏低。技術本身各有優劣,但是就基層打工而言,在同一座城市,就打工而言,微控制器的薪資比嵌入式Linux低30%到50%。也許很多有會拿某些做微控制器的高薪的老闆(比如野火的火哥,周立功等)或者一些公司高管的薪資和做嵌入式Linux打工的工程師對比,證明微控制器也可以拿高收入。但是他們都犯了田忌賽馬的錯誤,拿別人的上等馬和你的中等馬對比,火哥認為這種田忌賽馬的比較非常不切實際,基層打工的就應該和基層打工的這個水平的對比。

著名嵌入式工程師朱有鵬認為微控制器其實就是嵌入式linux的初級階段。或者說嵌入式linux就是更難一些,更復雜一些的微控制器開發。所以這2個東西淵源很深,所以經常拿來比較。

如果非要說優勢,微控制器比嵌入式的優勢就是:技術門檻低,工作機會多。

技術門檻低是說微控制器相對好學,微控制器本身複雜度沒那麼高,尤其是51微控制器這種,可以說真的可以“零基礎”去學會。當然了,並不是說微控制器就是“低智商”,我們說的簡單是相對的,準確說是相對嵌入式linux來說的。

也不是說微控制器開發就都是很簡單很無腦,沒有任何技術含量。並不是的,實際上微控制器開發也可以很複雜,譬如火星車、大疆無人機等都是微控制器做的,最近很火的美國醫療公司開源的呼吸機主控也是微控制器的。所以做微控制器的彆著急罵我,我不是要貶低微控制器開發,我只是說從零基礎到入行微控制器能找到微控制器開發工作,需要的難度相對更低。

如果你夠厲害夠自信夠狠,那就直接嵌入式linux,完全可以跳過微控制器這個階段。

如果你稍微虛點,那就迂迴戰略。先攻佔微控制器這個山頭,用一兩年或者兩三年站住了站穩了拿到10k左右的行業中高水平了,感覺沒有太多提升了。然後迅速自主的去學習嵌入式linux,繼續下一階段的爬升。總之,就是看哪個薪資高做哪個。

03 該不該放棄嵌入式和微控制器

這要從“錢”和“前”兩個角度說起。

首先,放棄一種知識,包括嵌入式,是完全沒有必要的,俗話說的好“技多不壓身”。嵌入式優勢非常明顯,它能讓你真正理解計算機系統;相信很多從事多年網際網路行業,遊戲行業的同學,從來沒有看過計算機系統原理圖,沒有見過匯流排的訊號長什麼樣子,更沒有親手焊接過一個電子元器件。

這裡沒有鄙視誰的意思,畢竟術業有專攻。所以,嵌入式開發者往往是會修電腦的程式設計師,甚至是設計計算機系統的程式設計師;這些知識來之不易,往往需要軟硬通吃。這是很多人都想獲得的技能,包括網際網路從業者。

同時,我必須指出“嵌入式”最大的弱點:吸金能力嚴重不足,這裡不討論蘋果公司或某些頭部公司。我說的不是能力/價值不足,而是吸金能力不足。原因很簡單:在嵌入式的商業領域裡,沒有人口紅利一說。中國14億人,人人一部手機,所有網際網路業務/遊戲,都是在爭奪這14億人的時間,14億池子的體量巨大,舀一瓢水,就是普通嵌入式企業幾年的銷售額;當然競爭也十分慘烈,除非變成頭部公司,否則,很多公司都會大批的死去;但是有趣的是,這種快錢,特別容易吸引投資,馬上又有大批的公司加入到14億人口的爭奪戰當中;也許正因為”吸金“能力上的巨大差距,導致網際網路/AI/遊戲行業風頭無二。

以上都是老生常談,這麼多年來,天天都在上演網際網路大戰。但繁華過後,泡沫最終都會破滅,到底沉澱了多少價值,就值得深思了。嵌入式行業,每一個能被市場接受的產品,都是在改變/改善人們的工作/生活;幾乎掙多少錢,就對等了多少社會價值;當然,這還是好的情況,至少還能掙個血汗錢。

而吸金怪獸:遊戲,它給社會帶來的價值與它的收入對等嗎?這裡沒有怪罪遊戲行業的意思,因為一切都是市場經濟的遊戲規則,只是它對埋頭苦幹,打造基礎產業(包括製造業)的從業者太過殘忍。所以,作為一個嵌入式開發者,可能要做好坐冷板凳的思想準備。

再說一下“前”的問題 。網際網路頭部公司的觸角已經伸向了嵌入式領域(只是它們稱之為IoT而已),因為嵌入式能產生更多的真實價值,同時裝置的數量最終會遠遠超過14億人的數量;對於有條件的同學,完全可以藉助這個機會攜自己的專業知識上岸。同時,這也是對”嵌入式“從業者的一個警告,他們開始瞭解你了,你瞭解他們嗎?嵌入式開發者不能總生活在自己的安樂窩(舒適區)裡面,你需要了解今天的雲計算,你需要了解AI可能給你帶來的優勢,你需要讓你的裝置的搭上新一代網際網路技術的快車。

總的來說,嵌入式行業上可IoT,下可微控制器;努力提高自己的上限,才是嵌入式開發者的破局之路,不要盲目的什麼都學,因為學藝不精,不僅打不死人,還大量的浪費自己的時間,在自己的專業領域,儘量深入;而對於網際網路的快速發展,更不能視而不見,千萬不要把自己塑造成一個什麼都懂的專家,這樣真的很累,而是happy to learn(這句話不僅僅只受用於:蘋果/谷歌的工程師),最現實的問題:你應該如何讓自己的嵌入式裝置上至雲端,下通地鐵?做到這一點,不需要你成為網際網路的頂級專家,只需要你學會如何正確的使用現在的網際網路資源。

相信我,我不是看不起大家的學習能力,而是擔心大家沒錢建立如此龐大的資料中心作實驗。

最後,不管什麼行業,都要學會擁抱變化,真正的欣賞,學習不同行業的開發者,畢竟我們都有一個共同的名字:程式設計師。

部分嵌入式和微控制器的初學者們有一個很大的誤區:只用工作技能對行業進行劃分,而不在產品領域進行行業劃分。什麼微控制器、嵌入式、模電數電、程式碼編寫這些都屬於工作技能,在初學的前幾年需要關注的。而做一定時間後,就要把精力放在產品領域進行深耕。你做哪類產品,就要對哪類產品的相關認證要求、政策導向、同行產品優缺點等重點關注。

比如,做醫療類就關注醫療類產品,做變頻器就關注變頻器相關,換工作時應聘單位實際上並不太注意你開發技術怎麼樣,而是注重你對所處產品行業的瞭解程度,這才是你真實能賣上好價的立足之本。

嵌入式、微控制器是否有前途?實際上應該問某個產業是否有前途。因為嵌入式只是一種工具。一個行業呆久了之後就會有本行業特有的直覺,這個比技能本身的經驗積累更重要。正是有這無形的財富,才不能輕易轉行。

TAG: 微控制器嵌入式行業Linux開發