一說到嵌入式開發(fā),大多數人想到的是ARM、Linux、C++、安卓等等。
看了很多相關的入門學習文章,一臉茫然,這學習的東西也太多了吧?門檻也太高了吧?
我做了這個行業(yè)10年,現在看到網上那些入門文章都感覺學習難度很大,很多新手就是這樣從入門到放棄的。
但真實的情況是,這個行業(yè)入門門檻低到讓你發(fā)指,只要你能堅持,*文憑照樣能玩得很溜。
如果你真的喜歡研究技術,喜歡做一個創(chuàng)客,通過自己掌握的技術把自己天馬行空的想象變成現實產品,那嵌入式開發(fā)*是你必學的技術。
1.嵌入式軟件開發(fā)是做什么的?
很多人可能還不知道,嵌入式軟件開發(fā)是做什么的。
簡單來說啊,就是你寫程序控制硬件電路去實現電子產品的智能控制功能。
相對純軟件,嵌入式開發(fā)更有意思,純軟件學習過程大多數都是在屏幕上打印一些冷冰冰的字符。
而嵌入式開發(fā)大多數是在開發(fā)板上面,你很快就能寫程序去控制一個LED燈,這是不是更有意思一些?
還有就是嵌入式開發(fā)是基于芯片開發(fā),比如說一些ARM芯片,這種芯片就像是電腦CPU一樣,只不過性能、成本、尺寸各方面比電腦CPU要精簡。
這種更適合去做定制化的電子產品,比如說豐巢快遞柜,平板電腦等等。
2.嵌入式開發(fā)要學習哪些課程?
很多新手從開始就已經走錯了方向,嵌入式涉及的技術太多了。
就像一個公司的組織架構一樣,一個公司分很多職位,比如說有做技術的、有做業(yè)務的、有做人力的等等。
同樣,嵌入式開發(fā)也分很多方向的,主流的方向就是:
單片機開發(fā)ARM+Linux開發(fā)還有別的FPGA/DSP等等就先不說了。
如果你前期方向不定位清楚,你基本不可能學會嵌入式開發(fā),因為學的東西太多了,你根本學不過來,長期學習沒結果肯定也會放棄。
但是如果我們定位很清晰,那學習的速度就像開掛一樣。
我經常和我們無際單片機編程的學員說,要活成一道激光一樣,聚焦一個點死磕,這樣才能快速有效做出成績。
那單片機開發(fā)和ARM+Linux開發(fā)有什么區(qū)別?
單片機開發(fā)主要做中低端產品,比如說大家一定接觸到的ofo共享單車、智能家居傳感器和網關、無人機、掃地機器人等等。
ARM+Linux主要做中高端產品,比如說平板電腦,智能機器人等等。
這兩個方向沒有誰比誰更好的說法,各自的應用場景和產品不同。
很多人說學嵌入式開發(fā)就學ARM、Linux,單片機開發(fā)沒前途,這種純粹是技術人和外行人的思維。
曾經我也是這樣想的,我這幾年一直在做單片機開發(fā),單片機開發(fā)總是比做ARM+Linux開發(fā)的工資低,心里也很不爽。
自從后面看到一些只會51單片機,年入幾百萬老板的時候,才徹底顛覆我的三觀。
技術再牛逼,做的東西再高端又如何?
認知和思維不進步,你的收入永遠都是打工水平。
所以,技術水平和收入并不是因果聯系,技術再好,從打工的層面都會有瓶頸,關鍵還是怎么通過技術這個工具去產生價值。
Ok,有點扯遠了,回到主題,嵌入式開發(fā)要學哪些課程?
我們前面說了方向,拿我*熟悉的單片機開發(fā)來說。
一個電子產品實際開發(fā)會有2個人共同開發(fā):硬件工程師和軟件工程師。
我們的定位就是軟件工程師,因為待遇會比硬件工程師好一點,現在硬件很多都是集成化,所以做硬件成長過程會比較坎坷,接觸不到核心的技術。
如果接觸不到核心技術,那硬件不如軟件工資高。
這樣一步步縮小我們的定位以后,再根據我們定位去收集學習的內容,*后你會發(fā)現你要學的東西其實并不多。
收集學習內容*好的方法就是去招聘平臺搜相關職位。
比如說我們可以搜:單片機工程師/嵌入式工程師。
這個是某鵬汽車的單片機開發(fā)職位,結合我從事這個行業(yè)10年的經驗總結出,必須要學習就是以下幾個課程:
C語言嵌入式和單片機開發(fā)主要是用c語言來編寫程序去控制硬件完成相應的產品功能。
其實匯編也可以,但是匯編寫的代碼維護起來很麻煩,現在一般很少用,所以主要學C為主。
我們無際單片機編程也錄制了一套單片機c語言的入門教程,非常適合新手。
這套本來是為零基礎的學員錄制的,后面感覺這塊教程已經泛濫,干脆分享出來了。
2.電路基礎
做嵌入式單片機開發(fā)主要就是寫程序控制硬件,所以需要有一定的電路基礎,學到看得懂電路就可以了。
3.單片機
目前市面上單片機的型號很多,基本都是大同小異,新手可以先從51單片機開始學起,比較容易上手,后面再進階到STM32。
*后,祝大家學有所成!