前言這可以說是一個經(jīng)典問題了,經(jīng)常有同學(xué)私信我,stm32學(xué)多少程度才能學(xué)linux?今天就我自己的學(xué)習(xí)經(jīng)驗給大家一個參考
對于單片機和linux的學(xué)習(xí),一定要明確學(xué)習(xí)目的是什么!??!
其實這個問題很多同學(xué)都問過我,但是我的建議一直都是看自己的目的,還有自己所處的時間段是什么!
我自己是從大二就開始學(xué)習(xí)單片機,從stc51,PIC16,msp430,瑞薩,飛思卡爾K60,stm8,stm32都學(xué)習(xí)過,也做過項目,直到大四畢業(yè)我還在繼續(xù)研究,粗略的算學(xué)習(xí)時間也有兩年多,要是把我學(xué)習(xí)的程度算上,那可能相當(dāng)于業(yè)余學(xué)習(xí)5年甚至更多時間才行,而且不管是哪種技術(shù)原則上都可以一直學(xué)習(xí),是的,一直學(xué)習(xí)。
比較通用的學(xué)習(xí)進(jìn)階路線是51>32>arm
第一階段-51:
這里的51就是51單片機,因為51單片機外圍電路比較簡單,芯片的功能也相對簡單,可以比較好入門硬件和匯編編程,還有基礎(chǔ)的C語言編程,如果這個階段學(xué)的比較好,對于之后的學(xué)習(xí)好處頗多,我自己就是大一下的時候因為參加實驗室的選拔比賽,了解并深入學(xué)習(xí)了51單片機,這段經(jīng)歷幫助我進(jìn)入了實驗室,而后的一年我又用51做了些作品得了幾個獎,也是我嵌入式之路的啟蒙。(如果你時間緊迫,也可以調(diào)過這步)
第二階段-32:
再然后就是32,這里的32常規(guī)可以理解為stm32,但是其他比如(PIC16,msp43,瑞薩,飛思卡爾K60)也都是可以的,雖然不都是32位處理器(pic和msp30是16位),但是這一階段最重要的技能就是C語言庫函數(shù)編程和操作系統(tǒng)使用,stm32說實話是做的最好的一類,現(xiàn)在HAL庫使用也很方便,但是這其實也是弊端,如果目標(biāo)是Linux,那就別太癡迷于庫函數(shù)編程了,多體會精神即可,一換芯片代碼都得重構(gòu)。。。我第一次參加電賽的時候指定用瑞薩單片機就是折在這了,第二次比賽選的控制組stm32就拿了國一(主要還是高估了自己的學(xué)習(xí)能力,三天想把代碼移植到瑞薩單片機真的難度頗大)
在32這一階段其實很多同學(xué)就止步不前了,這里邊也包括我(我的第一份工作是無人機飛控開發(fā),主控就是stm32,這也得益于我參加電賽的經(jīng)驗,當(dāng)時的項目就是無人機)
第三階段-arm:
這里說的arm不是指stm32,我們實驗室當(dāng)時主要是指arm9,雖然現(xiàn)在已經(jīng)很落后了,現(xiàn)在arm11,甚至arm-a才是主流,但是有一點是一直沒變的,就是linux開發(fā),arm9是可以運行Linux的,當(dāng)時實驗室是有兩塊開發(fā)板的,當(dāng)時我只是大致的了解了下,沒有深入學(xué)習(xí)!
可能會比較奇怪,我為什么不學(xué)arm,進(jìn)而學(xué)習(xí)linux,原因主要是兩個,一個就是我的32學(xué)的太好了,我可以用32輕松的做項目,參加比賽,得獎,當(dāng)時的我沒什么意識為什么一定要學(xué)Linux。還一個原因是當(dāng)時實驗室用linux主要項目的都是研究生,做的基本也都是圖像識別,信號處理這種純軟件的項目,當(dāng)時的我沒太大興趣。雖然也挺可惜的,但是我也不后悔,試想就算我學(xué)了linux,畢業(yè)的時候大概率還是會找單片機開發(fā),linux技術(shù)還是會被放下,過一陣就忘了。
這里如果你還在讀研,希望更加進(jìn)階一步,歡迎參加我的一對一指導(dǎo),可以幫你繞過很多坑,節(jié)約大量的時間,對于這些時間來說,小小的支出真的不算什么,明白的同學(xué)自然懂。
契機:
我開始學(xué)習(xí)linux是我畢業(yè)半年之際,算上大四實習(xí),我已經(jīng)做了一年無人機開發(fā),雖然已經(jīng)很順利了,但是說句實話收入還遠(yuǎn)沒到達(dá)我的期望,工作環(huán)境也著實有點惡劣,各種原因推動下,我開始學(xué)習(xí)linux,我學(xué)習(xí)的方法不是直接看書,我一貫的習(xí)慣是直接上手,然后我就買了塊英飛凌的核心板,自己畫了塊底板,移植了uboot,燒錄了ubuntu系統(tǒng),開始從裸機,linux系統(tǒng)編程,多線程編程,網(wǎng)絡(luò)編程等這個路子把linux趟了個水,半年后我跳槽到了目前的單位(知名的通信外企)。環(huán)境是非常的好,也很人性化,收入比之前也多了好幾倍,這也算是實現(xiàn)了當(dāng)時的希望,期間也在不斷的升職加薪,轉(zhuǎn)眼已經(jīng)快7年了,我基本實現(xiàn)了自己的夢想,也算對自己努力的獎勵。
下邊是我當(dāng)時為了自學(xué)畫的linux底板(左下角還集成了stm32f4,可以協(xié)同做外部控制),當(dāng)然了,這是我畢業(yè)一年的水平,現(xiàn)在硬件基本上是荒廢了,哈哈。
說回問題本身,從我自己的經(jīng)驗想給各位同學(xué)一個參考,并不是單片機學(xué)到什么程度就能學(xué)linux,而是你為什么要學(xué)linux??還一個你有什么基礎(chǔ)可以支撐你學(xué)習(xí)linux,這些點上文我都提到過,如果時間比較充裕,完全也是可以參考的,當(dāng)然更多的細(xì)節(jié)每個人可能不同,也是需要定制的部分,這部分歡迎參加我的付費咨詢.
未完待續(xù),持續(xù)更新!以防后邊找不到可以點贊收藏下!