嵌入式開發(fā)怎么自學(xué)?有靠譜學(xué)習(xí)路線嗎?(嵌入式開發(fā)如何自學(xué))

嵌入式開發(fā)怎么自學(xué)?有靠譜學(xué)習(xí)路線嗎?(嵌入式開發(fā)如何自學(xué))

告訴你一個殘酷的現(xiàn)實,即便告訴你學(xué)習(xí)方法和路徑,能堅持下來的也寥寥無幾。

除此以外,還有學(xué)習(xí)過程中的突發(fā)情況,比如走彎路不知道,碰到問題沒人指導(dǎo)。

我覺得自學(xué)技術(shù)就是和人性弱點的博弈,枯燥、焦慮、迷茫、無助都是自學(xué)必經(jīng)的妖魔古怪。

能否取得西經(jīng),更多是對你魄力和毅力的考驗,哪怕你走過的彎路能繞地球一圈,最后還是能到達終點。

如果你明白這些,還想嘗試,請繼續(xù)往下看,否則不要輕易嘗試,半途而廢還不如不要開始。

以上,是我10年前自學(xué)轉(zhuǎn)行的感悟。

當(dāng)時,從電氣專業(yè)轉(zhuǎn)行到嵌入式單片機軟件開發(fā),最終找到工作花了4個多月。

雖然現(xiàn)在門檻不一樣,但是方法可以通用。

說到嵌入式開發(fā),大多數(shù)人想到的是ARM、LinuxSTM32。

這都太廣泛,嵌入式開發(fā)涵蓋的知識體系太龐大了,做了10年,我依然覺得我只是嵌入式開發(fā)這個知識海洋里的一根針而已。

但這不代表你需要花費1年,甚至幾年的時間才能學(xué)會。

只要定位清晰,學(xué)習(xí)路徑正確,再加點點堅持,3-5個月完全能從零基礎(chǔ)達到就業(yè)的程度。

先以找工作成功入行為首要目的,是一個成年人該有的覺悟,入行后有工資支撐了,同時也能在工作中深造,才能形成良性循環(huán)

千萬不要一上來就想學(xué)成專家,容易餓死。

一、定位

嵌入式開發(fā)分為很多方向,從大方向來看分為嵌入式硬件開發(fā)嵌入式軟件開發(fā)。

  1. 嵌入式硬件開發(fā)

主要負(fù)責(zé)設(shè)計產(chǎn)品電路、PCB layout、樣品焊接和調(diào)試、后期生產(chǎn)跟進。

學(xué)習(xí)硬件,我個人感覺性價比是比較低的,主要有幾點原因。

①.硬件主要還是要通過實物不斷實踐學(xué)習(xí),不同的電路你要搭建不同的配套硬件測試你的理論是否正確。

這就導(dǎo)致需要付出的成本比較大,比如說要買示波器、萬用表、電烙鐵、焊錫、面包板、元器件等等。

還有就是不一定每個人都有這種學(xué)習(xí)環(huán)境,在自己睡覺的小房間焊接可不是一件好事。

②.目前具備實際產(chǎn)品參考意義的硬件教程很少,大多都是幾年甚至十幾年前的老教材,早都用不上了。

③.大多數(shù)普通硬件工程師崗位的工資都低于嵌入式軟件工程師。

④.現(xiàn)在電路集成度很高,動不動就是芯片方案解決,一般公司很難接觸到核心技術(shù),都是拿別人現(xiàn)成的電路用。

這種一般軟件開發(fā)個幾年都能自己設(shè)計電路了。

⑤.硬件抄板代價小,幾千塊能完完整整把你的硬件電路抄出來,軟件抄襲比較難,需要的成本高。

所以,我一直強調(diào)先把軟件學(xué)好,如果想走全棧再針對性去學(xué)硬件。

2.嵌入式軟件開發(fā)

嵌入式軟件開發(fā)又分為很多方向,比如說主流的有單片機開發(fā)、Linux驅(qū)動開發(fā)、Linux應(yīng)用開發(fā)、安卓應(yīng)用開發(fā)、FPGA/DSP開發(fā)等等。

嵌入式開發(fā)怎么自學(xué)?有靠譜學(xué)習(xí)路線嗎?(嵌入式開發(fā)如何自學(xué))

兩大方向,還細(xì)分很多小方向,每個方向都是一個職位,每個方向所需要的學(xué)習(xí)的內(nèi)容體系都不同。

如果這個定位你不搞清楚,你就會覺得嵌入式開發(fā)很難,又要學(xué)硬件、又要學(xué)STM32、又要學(xué)ARM、又要學(xué)Linux,猴年馬月才能學(xué)完。

二、根據(jù)定位規(guī)劃學(xué)習(xí)路徑

當(dāng)初我處于對文憑、非本專業(yè)的自卑感,讓我選擇了比較好入門的單片機開發(fā)方向。

做的越久,我越發(fā)現(xiàn),單片機開發(fā)并不是和大家想象那樣比Linux方向簡單。

相反,Linux方向的開發(fā)很多都有現(xiàn)成的庫可以調(diào)用,而單片機開發(fā)大多數(shù)要從控制芯片引腳開始。

還有就是一些協(xié)議棧,比如說藍(lán)牙協(xié)議棧、Zigbee協(xié)議棧等等,也是非??简?zāi)愕木幊坦Φ椎摹?/span>

這些協(xié)議棧有非常多值得學(xué)習(xí)借鑒的地方,你完全可以剪裁、移植、改編、優(yōu)化成自己的程序架構(gòu)為自己產(chǎn)品所用。

嵌入式開發(fā)怎么自學(xué)?有靠譜學(xué)習(xí)路線嗎?(嵌入式開發(fā)如何自學(xué))

現(xiàn)成的系統(tǒng),不管是實時操作系統(tǒng),還是Linux,既要做到通用性、又要做到移植性等苛刻條件,所以普遍比較占用微控制器和處理器資源。

而自己寫架構(gòu)就不同,你完全可以根據(jù)自己的產(chǎn)品定制,這樣既保證系統(tǒng)的優(yōu)點,又能最大程度減少芯片資源浪費。

這比你直接用所謂的RTOS和操作系統(tǒng)水平高多了。

下面,針對我最熟悉的單片機開發(fā)方向,根據(jù)當(dāng)下市場對這個職位的需求,系統(tǒng)講解下這個方向的學(xué)習(xí)路徑。

嵌入式開發(fā)怎么自學(xué)?有靠譜學(xué)習(xí)路線嗎?(嵌入式開發(fā)如何自學(xué))

  1. c語言基礎(chǔ)

單片機支持c語言和匯編語言來編寫程序,目前主流都用c語言,匯編主要做小家電消費類產(chǎn)品,可能你10年都用不上,所以以學(xué)c語言為主。

這塊的教程也泛濫了,但是針對單片機的c語言不多,大多數(shù)以做純軟件為基礎(chǔ)講解的。

雖然都是c語言,實際還是有差別的,比如說寄存器配置這些。

無際單片機編程有一套針對單片機c語言編程的教程,結(jié)合了工作當(dāng)中最常用到的語法,節(jié)約大家學(xué)習(xí)時間。

教程也是完全開源的,可以到小坡站找無際單片機編程直接看。

嵌入式開發(fā)怎么自學(xué)?有靠譜學(xué)習(xí)路線嗎?(嵌入式開發(fā)如何自學(xué))

2. 電路基礎(chǔ)

這個環(huán)節(jié)進坑最多的就是死磕模電,我也走過這種坑,學(xué)到三極管放大就開始各種數(shù)學(xué)公式,學(xué)不動了。

為此也差點放棄,工作久了才發(fā)現(xiàn),書本教程數(shù)學(xué)公式都用不上,三極管實際應(yīng)用最多的就是開關(guān)作用。

假如是NPN型的三極管,你只要記住B極電壓大于E極電壓0.7V以上,三極管就能導(dǎo)通就行了。

不同型號的三極管可能不一定是0.7V導(dǎo)通,也有更小的,但實際電路設(shè)計要讓三極管導(dǎo)通時,E極一般接地,B極由單片機引腳控制,電壓都會遠(yuǎn)遠(yuǎn)大于0.7V。

就是這種細(xì)節(jié)的區(qū)別,如果你去死磕三極管截止、放大、飽和,學(xué)習(xí)效率會慢幾倍。

3. 51單片機

很多人說51單片機淘汰了,沒必要學(xué),純屬外行瞎扯。

越原始的單片機,你越能接觸到底層開發(fā),51單片機能讓你理解單片機的底層原理,如何配置使用芯片資源。

STM32單片機雖然火,但是都是封裝好的庫,做應(yīng)用多一點,一般不需要配置寄存器。

這樣,你永遠(yuǎn)無法知道單片機的原理。

這個階段必須要配備一個開發(fā)板或者通過項目去學(xué)習(xí)。

單片機是一門偏向硬件控制的技術(shù),不像純軟件一臺電腦就行。

建議新手從STC89C52RC單片機入手,目前市面上開發(fā)板很多也是用這個芯片做的,燒錄工具便宜、資料教程豐富。

4. 51單片機項目

這一個階段最重要,可以說比你后面學(xué)STM32還重要。

你熟練使用STM32,不一定有用51單片機做過2-3個項目的人牛逼。

單片機只是一個工具,怎么把這個工具通過自己天馬行空的想象做成落地產(chǎn)品才是我們最終目標(biāo)。

這個階段就是檢驗?zāi)闱懊鎸W(xué)習(xí)成果最好的時候,開頭會比較煎熬,因為腦子里沒有思路,有思路有不知道怎么用代碼去實現(xiàn)。

最好的方法就是先學(xué)習(xí)別人做的項目,看下別人功能實現(xiàn)思路是什么,代碼是怎么寫的。

最后自己再根據(jù)自己想法寫一遍,寫完分析一下自己的代碼和別人的代碼各有什么優(yōu)缺點。

就是這煎熬的過程,別去想捷徑了。

5. C語言進階

大多數(shù)51單片機程序還是比較簡單的,不用c語言的高級語法指針、結(jié)構(gòu)體也照樣能實現(xiàn)功能。

但是后面這些c語言高級語法的用法就顯得尤為重要了,可以說不懂指針、結(jié)構(gòu)體這些基礎(chǔ)知識,你永遠(yuǎn)只能停留在初級水平。

STM32單片機的固件庫也大量使用了指針、結(jié)構(gòu)體。

這塊我們無際單片機編程也有配套比較完善的系統(tǒng)教程,其中包括枚舉、指針、結(jié)構(gòu)體、回調(diào)函數(shù)、隊列算法、任務(wù)管理等非常使用的知識。

嵌入式開發(fā)怎么自學(xué)?有靠譜學(xué)習(xí)路線嗎?(嵌入式開發(fā)如何自學(xué))

為你后續(xù)學(xué)習(xí)STM32,RTOS打下扎實基礎(chǔ),教程也是完全開源的,在小破站直接找到。

當(dāng)然如果只是單純學(xué)習(xí)STM32,只需要學(xué)指針、結(jié)構(gòu)體就足夠了,如果你沒一定的項目經(jīng)驗,里面很多知識點可能聽不懂。

6. STM32單片機

我學(xué)STM32單片機是通過項目學(xué)會的,當(dāng)時公司有新產(chǎn)品,要把原來NXP的替換掉,價格太貴了。

有實際項目驅(qū)動,你學(xué)習(xí)會更有針對性一點,效率也更高。

當(dāng)然通過開發(fā)板學(xué)習(xí)也是可以的,不用把所有外設(shè)資源學(xué)完,只需要學(xué)習(xí)最常用的就可以了,后續(xù)工作需要了再針對性學(xué)習(xí)也很簡單。

具體要學(xué)哪些外設(shè),可以參考我上面那個思維導(dǎo)圖。

7. STM32項目

到這里,已經(jīng)是入門了,剩下的重點就是提高你的編程思維水平。

雖然我們最理想的自學(xué),省錢嘛..

但我建議最快的方法就是找一個大神帶項目,一個項目頂你自學(xué)幾年。

我并沒夸張的意思,因為自己做了10年,其實真正進步最大的也就那2,3年接觸到大神代碼的時候。

不過當(dāng)時他已經(jīng)離職了,完全靠自己死磕,磕了幾年才完全吃透。

如果實在不舍得花大錢,可以到某寶買一些項目套件自己DIY,比如說無人機、尋跡小車之類的項目。

不過這種項目只能讓你熟練編程,不能提升你的認(rèn)知水平,大多數(shù)都是以實現(xiàn)功能為主。

實際產(chǎn)品開發(fā)的時候需要考慮到程序可擴展性、可移植性、執(zhí)行效率這些東西。

不知不覺肝了3000多字,純手打原創(chuàng),如果對你有幫助,麻煩給我安排個三連鼓勵。

最后祝大家學(xué)有所成!

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
公眾號
公眾號
在線咨詢
分享本頁
返回頂部