{eval=Array;=+count(Array);}
謝謝邀請,作為一名嵌入式開發工程師,由我來回答這個問題。
STM32軟件工程師和linxu軟件工程師,都是使用C語言進行程序開發,但linux可以分為linux驅動開發和linux應用開發。
linux開發比STM32軟件開發要復雜,從事linux開發,需要學習linxu gcc和shell指令,makefile編程,系統移植,文件系統,linux驅動,QT等等相關知識,門檻比stm32開發難度高。需要掌握的知識點更多更復雜。學習難度非常大。
學習stm32的工程師,等到工作年限,一定會遇到職業瓶頸,這個時候,如果你會linux開發,操作系統,那么職業道路將會走的很寬,二則,工作待遇來講,普遍linux開發會比STM32開發的福利待遇要好一些。
如果本身有一定的linux系統基礎,那么強烈建議選擇linux,因為linux整體工資要比stm32開發要高。學完linux后,如果項目需要stm32單片機,那么再去做STM32,會覺得十分簡單。
如果沒有任何的linux基礎,公司沒有師傅帶著做linux的話,或者公司對linux項目有較高的要求和時間限制,那么不建議轉linux,先將STM32學好,再過半年一年后,自學合作參加培訓linux。不至于打擊學習的自信心,二則對于后續找工作也有一定的好處,至少有一項技能能夠在畢業后找到工作。
總之,因為處在即將畢業的時間點,先要根據自身條件,結合自己的興趣愛好,保障畢業能夠找到好工作為前提
我是科技電小二,一名嵌入式開發工程師,歡迎點個贊,并加個關注吧。
我覺得,剛出來實習的話最好就是能找到一個能讓你成長的平臺。但前提是你現在所擁有的知識和技術是否能夠讓你所選擇的提供職位的公司能夠錄用你。
STM32與Linux兩者都是屬于嵌入式,而后者比前這更高級,目標可以訂在Linux,STM32只是一個過渡,兩者的相關理論都是有所系系,初始階段可以先通過STM32來搞明白常用的一些外設,STM32搞明白了,自己的編程能力那也就提升了,再入手Linux也就簡單多了,如果你一開始就入手Linux的話估計會比較難而且復雜。
就我自己來說,剛實習的時候找了一份搞STM32的硬件開發工程師的職位,這也是找了一個多月才找到的一份工作,這也是因為我拿出了我畫的不咋地的一份PCB設計才被錄用下來的。
錄用我的公司是一家小公司,一開始就是做一些設備的組裝和畫一下PCB這些工作,因為我的C語言編程能力實在是太差了,在大學學的是8051的單片機,而且學的也不怎么樣。所以看到STM32程序項目的程序那么多看明白的就沒幾行。后來我通過stn32開發板提供的配套視頻教程了解了整個程序項目的結構和作用后,就看得懂了,那時就可以改改程序了。后來來就不單單是搞硬件了,什么都要搞。最后公司所使用的產品性能要升級,就用到了Linux,一開始老板安排工作直接叫我在Linux上用qt開發一個軟件,當時我就愣了一下,因為我都沒搞過C++。而且還說沒完成要追究責任。沒辦法只能硬著頭皮開干了。用了兩天去了解QT項目工程的結構。最后搞了兩個多月算是完成了,過程中搞過Linux內核編譯,底層驅動移植,驅動添加等等,感覺在這段時間學到了很多。
所以說STM32到Linux只是一個過程,是一個由淺入深的過程。如何抉擇先看你自己現在能力在那個階段。
都要會,實際上區別不是太大的,都能用C。實際上用系統會簡單點,但在對單片機性能要求高,主頻至少幾百兆,裸機只要幾十兆就夠了
天下代碼不分家. 如果基于Linux 系統工作環境,命令行+M0-M3單片機手冊,基于OpenOCD裸機開發M0/3程序,寫驅動代碼和GCC makefile,寫匯編啟動代碼,手動編寫GCC鏈接符號表,生成ELF文件刷Flash, 如果能玩任意一款哪怕Openocd不支持的M0/4單片機,基本上Linux和STM之流都可以入門了... 有人說Linux比單片機復雜,宏觀看是對的,但是拿到一款openocd不支持的單片機直接愣逼,如果真正掌握linux, 開發單片機完全可以拋棄Windows MDK和IAR開發環境,如果不行,說明Linux學了皮毛
嵌入式軟件開發領域,主要分為MCU開發和SOC開發兩個大類別。具體的細分情況如下圖所示。其中,MCU開發主要涉及到一般的RTOS系統開發,而SOC開發就具體需要Linux操作系統的支持了。
題主上面問題中,STM32屬于MCU開發的范疇,而嵌入式Linux 開發是屬于SOC開發的范疇。兩個領域來說,編程語言都是標準的C語言;MCU與SOC芯片硬件差異有,但是不是影響開發的因素。兩者主要的區別在于:Linux操作系統遠遠復雜于STM32上常見的RTOS操作系統。而且,在Linux 開發領域,還更加細分為應用開發與BSP驅動開發兩個子類別。
所以說,Linux開發的復雜度遠遠高于STM32上RTOS的軟件開發。至于如何選擇,需要題主根據自身的技術能力(是否有Linux的開發經驗),參考個人的技術發展方向(未來從事MCU還是SOC),具體問題具體分析來決定。
根據答主的嵌入式開發經歷,如果題主對Linux操作系統沒有開發經歷。建議您選擇從STM32的RTOS系統開發做起,然后擴展到嵌入式Linux的應用開發,最后在涉足Linux的BSP開發的技術發展道路。這個也是答主,以及很多朋友的常見技術發展道路。
以上僅代表個人建議,僅供題主參考。
都可以學,學到夠用就行,不用太專,后期關鍵還是要對一個行業技術理論以及難點突破點的深度挖掘與突破,然后在這些平臺上實現功能需求。stm32和linux只是一個平臺工具而已,有人用來點燈,有人用來搞人工智能,這就是區別,雖然大家都會這兩個平臺!
Stm32要會看電路圖,有可能要畫板子,要熟悉各種硬件外設和軟件庫,linux的話注重軟件開發,跟windows開發一個套路,如果想了解硬件,那就stm32,否則就干linux
STM32更貼近底層硬件,重點在底層設備和器件;Linux更貼近應用層,重點在驅動和應用
前者開發所需要的知識偏散偏底層,要做好需要沉下心來積累幾年才行,要求經驗; 后者開發所需的知識面很廣,好在與互聯網或普通計算機所需的知識高度復合,因此上手快。
在工作的前期,linux開發待遇高,后期STM32所代表的高級硬件開發待遇高,且可遇不可求。
以上
這里不針對樓主所謂哪個平臺,只是想提醒一下在讀書的同學。實際上一個工程人員的核心競爭力難度不在于平臺,在于基礎知識積累。通信原理,數字信號處理,微機原理,英語好,理解能力強也是很重要的。
弄Linux大部分功能都是現成的,原廠提供了bsp在上面改就行了。要增加一些什么功能,有非常多的開源代碼直接換個交叉編譯工具就可以移植了。linux只有個芯片手冊就能把系統搭建起來的恐怕鳳毛麟角了。不過linux就業機會確實比單片機多點,我從事單片機開發,這點有體會。另外就是單片機,這是完全可以靠gcc和makefile搞起來的。但一般都用原廠的sdk,沒必要自己搞。
說了這么多,想表達的意思是平臺不是問題,入門成本不高。當然,硬是要搞得非常徹底,那還是算了吧,估計一般人早晚都會放棄。站在巨人肩膀上做事才會更好。
真正的牛人不是用哪個平臺,而是基礎知識積累怎樣。舉個例子,移植驅動寫makefile好像逼格很高吧?但一般人依樣畫葫蘆一樣可以搞定。但是,牽涉到基礎理論的代碼,別說寫了,一般人看都看不懂,函數在那里都不知道怎么用。不相信的同學可以隨便去看看各種解壓縮算法,各種通信協議。另外想表述到是英語跟重要,因為99%的有價值的文檔都是英文的。舉個例子,各種標準化組織的spec都是英文的,沒人給你翻譯中文。國內的論壇,大部分情況下問題解決了不會說解決方法,國外的就不一樣了,大部分情況下解決了會詳細解決方法描述。不相信的同學等你們工作了就會有感觸。
因此,讀書的時候積累好基礎知識,哪個平臺是基本技能,花一年左右時間補短就好了。以后的工作中,基礎知識扎實的同學肯定能脫穎而出。這也是為什么牛逼企業招985的多一些。哪個平臺寫代碼是大磚小磚的區別,而基礎理論知識才是設計圖紙。
0
回答0
回答5
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答