STM32收入高也好找工作,所以我學嵌入式linux終究是錯付了嗎
經常有同學糾結問我:我到底是學STM32還是學嵌入式linux。
這個問題很多人都會有自己的看法,今天我試著從多個角度,把了解到的事實講一下,希望對大家有所啟發。
///插播一條:我自己在今年年初錄製了一套還比較系統的入門單片機教程,想要的同學找我拿就行了免費的,私信我就可以哦~點我頭像黑色字體加我地球呺也能領取哦。最近比較閒,帶做畢設,帶學生參加省級或以上比賽///
正文開始:
STM32的確好
首先得承認STM32的確好,好到STM32都成了單片機MCU的代名詞了,此時很多人甚至說單片機時默認就說STM32,實際上還有很多單片機的啊。
STM32的第一大益處就是:就業時機的確多,社會需求多。
大家學點技術圖什麼?
還不是為了找工作賺工資。
當然我承認大家都有更遠大的理想,但是就算你想造火箭也得畢業後先能找到工作賺錢餬口初始。
所以假如你讓我學個東西都沒公司要,都找不到工作,那學它肯定錯了。
你不妨去各大招聘網站搜索一下,STM32相關崗位真的很多,你假如STM32玩的溜,找份工作真的不成問題。
而且大多數一二線城市都有工作時機,這一點更難得。
總結一下,學STM32肯定沒錯,這玩意至少能讓你有份工作。
STM32的第二大益處就是:他是很典型的MCU,能夠讓你掌握足夠的MCU開發才能。
也就是說即便你在工作中須要用到其他MCU,譬如說NXP的LPC系列,Cypress、TI的MCU系列,而這些你從來沒接觸過完全不會。
但是,只有你熟練掌握STM32,就能很快上手這些MCU的開發工作。
最後,STM32還有個優勢就是生態已成,影響力大。
目前很多國產MCU廠商如GD、國民技術等在推出的國產MCU也是對標STM32的,在開發方式甚至是固件庫方面都和STM32非常類似。
綜上,掌握STM32的確很有用,STM32最大的特點就是實在,掌握這項技能很有助你找到一份工作,在單片機軟硬體工程師這條路上能先上路,走出第一步。
STM32的局限性
不能說STM32不好,只能說有局限性。
STM32最大的局限性就是:它只是個單片機。
也就是說,你進修STM32,其實學的都是單片機相關的技術。
譬如GUI方面,你學STM32可能會學emWin,或者touchgfx,或者littlevgl等,但是你簡直肯定不會去學QT和android那些,由於STM32上一般不跑這些。(此時QT也有QT for MCU,也在STM32H7上做了合作,但是應用面有限,大局部人大局部項目不會使用)。
所以你學到的GUI技術全都是MCU領域使用的,而這些和主流的GUI的前端與業務邏輯別離的設計模式(典型的如微軟的WPF,Android,或web前端設計等)是有不同的,因此你學到的東西也是有局限的。
再譬如網絡應用方面,STM32大多數應用都不帶網絡,就算帶網絡往往也是用通信模組,很少會須要你基於socket層直接編程,而這才是網絡編程的關鍵技能。
所以很多做STM32多年的工程師,實際上對網絡很生疏,甚至是一竅不通。
客觀看待STM32
客觀去看,STM32開發的確是電子相關專業同學能夠去進修的一項技能。
或者說,假如你打算學單片機,那麼STM32絕對是首選。
當然了,首選不是說只學STM32,能夠來信盈達學院,單片機進修路徑是先用51入門,再進階到STM32,這樣更合乎進修規律,進修效率會更高。信盈達學院的單片機課程很熱門的哦。
所以說學STM32是沒錯的。
但是不是說只學STM32,這個必需搞清楚。
嵌入式Linux是STM32最好的延伸
假如你STM32已經學得不錯了,建議延伸進修linux。
很多人覺得linux使用沒有STM32廣泛,使用linux的設備遠沒有使用STM32的設備多,招聘崗位中linux相關也沒有STM32相關的多,所以不應該去學linux而應該去學STM32。
這個觀點是錯的。
由於這個觀點把STM32和linux拿來比照了,然而這2個東西根本沒有可比性。
你比照這2個就仿佛比照自行車和小汽車,你說自行車的優勢是便宜,好修理,不堵車,不用交停車費,不耗油等等,你能夠說出來自行車相對小汽車的很多優勢,然而該買小汽車的你給他個自行車行嗎?
小汽車是自行車的延伸,linux是STM32的延伸,是類似的道理。
後者相對前者是升級的關鍵,而不是平行的關係。
嵌入式Linux的優勢
其實進修linux還有很多優勢。
Linux內核能夠說是整個開源軟體社區的集大成者,在過去幾十年間有大量世界級優質程式設計師向linux kernel貢獻代碼和思想,也有大量的第三方開源項目基於linux的某些組件或linux的設計思想來構建。
譬如國內此時很火的國產物聯網操作系統rt-thread,你去讀它的源碼就會發現,這完全就是linux的味兒啊。你去看華為的物聯網操作系統LiteOS,他的源碼中各個組件之間分隔對接的osal設計,也是linux kernel中大量使用的技巧。
所以說為什麼要學linux?
由於它真的能夠讓你一勞永逸的攻克往後職業生涯中遇到的大局部技術需求。
我們進修技術有個很大問題就是:你今天永遠不知道明天會做什麼工作,會須要什麼技能。
可能你下個月開個新項目新任務,老大就會給你一個你根本沒聽過名字的東西讓你玩。你怎麼才能快捷上手呢?
以信盈達學員的經歷,最靠譜的就是學好linux。由於你會發現你遇到的任何東西都有linux的影子。
只有你學好了linux,有這個功底,你進修任何新東西時都會很快。
我當年下決心學好linux就是由於分配到一個指紋鎖研發的項目,用到的方案是一個新加坡科技公司開發的,他的開發環境是用cygwin,而我此前從未接觸過。折騰了半天搭建好環境我一看,這不就是linux的命令行嘛。還好我之前接觸過簡略的linux命令行,一下子感覺這個項目就不難了。
此後我就認識到linux的重要性了,下功夫好好學了linux,這麼多年過來,太多事實案例證明,當時的決策非常英明。
學51,學STM32這都沒錯,很實際,很接地氣。
假如你用盡了全力也就能湊合學好這些,那就做單片機開發,也能找到工作。
要相信社會不會虧待你,會用升職加薪來回饋你。