2019-02-15 10:16:17分類:嵌入式硬件開發(fā)設計6233
學習某個學科,踏入某個行業(yè),最佳的動力是興趣,學習它能給你帶來快樂,能夠愉悅自己,也就能走的更遠;稍次一點的動力是可以帶來money,我們每個人都要生活的,賺錢是為了養(yǎng)活自己和家人,所以這個理由也是很充分的;也可以是周圍的壓力,別人都會,我也要會,補齊和別人的差距,這個范圍就有點窄了。
在進入硬件這個行業(yè)的時候,更加注重進入的動力,因為它的特殊性,如果你們沒有很好的動力支撐,很容易堅持不下來。
什么是嵌入式硬件?
既然今天咱們的話題是如何學習嵌入式硬件,咱們有必要先了解一下什么是嵌入式硬件。硬件(電子產(chǎn)品),顧名思義就是看的見得東西,是相對于軟件這種看不到的東西來說的,一般是指電子產(chǎn)品中的PCB及之上的電子元器件。嵌入式硬件,是硬件的一種,一般是指有微控制器及外部功能實現(xiàn)模塊的硬件集合?,F(xiàn)在這兩種概念幾乎相同。
目前可以說,只要是涉及到電子控制的行業(yè),都會用到嵌入式產(chǎn)品,就會包含嵌入式硬件。
如何學習嵌入式硬件?
硬件學習實際上是一個很大的面,你需要學習的知識有很多,需要了解的面也有很多。
大體可以分為兩部分:硬件和軟件。
1、硬件基礎
學習嵌入式硬件,首先你需要有一定的硬件基礎?;镜碾姶盼锢矶?,電路,數(shù)電,模電等需要了解。
學會使用一種單片機,不論是8位、16位或者是32位,學習單片機接口的應用,向UART、IIC、SPI、USB、CAN、RS232、RS485等。
應當熟練使用一種原理圖PCB繪制軟件,目前常用的軟件有Altium Designer、PADS、OrCAD/Allegro,只要掌握其中的一種即可。
熟練掌握各種元器件的原理及電氣特性,并依據(jù)此綜合特性、成本、供應等各個方面進行器件選型。
最好有一定的英語基礎,會看各種芯片的數(shù)據(jù)手冊(datasheet),會使用翻譯軟件看懂也是可以的。
還要有良好的動手能力,熟練使用各種調(diào)試儀器如萬用表、示波器、邏輯分析儀等,還要會使用EMC測試儀器如雷擊浪涌發(fā)生器、脈沖群發(fā)生器、靜電槍等。一個硬件產(chǎn)品,各種電磁兼容實驗是要過的。
還需要知道一些標準,這個就要要看你從事什么行業(yè)了,一般是看國際標準/國家標準,行業(yè)標準標,企業(yè)標準等。
2、軟件基礎
軟件的要求稍微簡單了就。一般嵌入式硬件所使用的是C語言,所以需要會用C語言調(diào)試你的硬件。如果是驅(qū)動方面,還要了解各種硬件接口的協(xié)議。
學習過程參考
如果是初學者,看到如此多的知識學肯定會大吃一驚,實際上完全不用擔心,因為硬件學習是一個積累的過程,在應用中學習,用到什么學什么,當然提前儲備更好,不容易錯過機會。每一個優(yōu)秀的硬件工程師都是經(jīng)過時間積累練就的。
當然必備的基礎知識還是要學的。如果你是零基礎的話,C語言是要學習的,還要學習至少一種單片機的基本結(jié)構(gòu)。C語言,你可以不用全部都學,基本的關(guān)鍵字熟記,基本語句會用,基本的數(shù)據(jù)結(jié)構(gòu)明白即可;單片機結(jié)構(gòu)可以從51單片機的結(jié)構(gòu)學習,因為比較簡單,相對比較容易學習,也可以直接學習ARM單片機的結(jié)構(gòu),因為目前使用最多,需要知道單片機的最小系統(tǒng),了解單片機的中斷,會使用基本的外設,像GPIO、定時器等。
學習完C語言及一種單片機的使用,可以對單片機有個大體的了解及簡單的應用。
此時可以開始學習簡單的原理圖PCB繪制軟件,有條件可以畫一個單片機最小系統(tǒng)板,把所有接口引出來,作為后續(xù)學習使用。在自己做的板子上運行自己的代碼還是很有成就感的,當然你也可以買一個配套的開發(fā)板,現(xiàn)在開發(fā)板有很多,買一個合適的開發(fā)板即可。
接下來就是拓展單片機的外設使用,UART、IIC、SPI等,不僅僅是學習它是如何使用,還要知道它的硬件實現(xiàn)及電氣特性,當然學習所有的接口都要這樣。同時結(jié)合這些接口的使用深入C語言的學習應用。
當這些基本外設都學習完成后,此時就可以依照自己的想法做一些特定功能的硬件了。如果是要找工作的同學,就可以加入相關(guān)單片機使用的公司邊工作邊學習,因為在實際的應用項目中可以加速學習。如果是自學的同學,此時需要尋找一個團隊或者參加電子設計大賽來加速自己的學習。
注意此處有一個職位選擇的分叉點:硬件工程師&單片機工程師,當然實際應用中可能沒有分這么清,具體看公司的職務范圍。
硬件工程師偏向于原理圖/PCB設計,硬件的調(diào)試,關(guān)注產(chǎn)品的EMC性能。此時就需要好好學習一種原理圖/PCB設計軟件,然后開始儲備EMC相關(guān)的知識了。
單片機工程師偏向應用,主要是如何高效、穩(wěn)健的實現(xiàn)功能,至于EMC等方面的知識了解即可。
當然,如果有時間,最好都學,你掌握的知識越全面,思考的越全面,做出的產(chǎn)品就越好。
PS:學習一定會有一個高原期或者幾個高原期,此時一定要堅持下去,應當有一種不經(jīng)歷風雨如何見彩虹的信念。
當這些基本的單片機應用已經(jīng)不能滿足你的求知欲或者公司做的產(chǎn)品越來越復雜,此時可以考慮更高級的應用了。畢竟人總是要進步的,但是前提是你的基礎要打的比較牢??梢詫W習一下多層板的繪制,高頻知識的學習、PCB繪制(當然這個是比較費錢的),學習一下DSP、FPGA等相關(guān)芯片,用一下RTOS(不論是FreeRTOS還是uCosII/III還是其他)。學習如何使用嵌入式Linux操作系統(tǒng)。有機會可以學習一下操作系統(tǒng)原理相關(guān)知識。
這里需要說明一下Linux系統(tǒng)的學習。因為這個是單片機裸跑與使用操作系統(tǒng)的分水嶺(RTOS只能算是裸跑的延伸)。Linux操作系統(tǒng)知識比較多,學習的時候可能就需要有側(cè)重點的學習了,可以選擇上層應用的開發(fā),此時就是嵌入式軟件的開發(fā),也可以做底層驅(qū)動,跟硬件接觸還是比較密切的。當然還是之前那句話,有時間都學,對于你的發(fā)展是好的。無論側(cè)重什么方面,Linux基礎都是需要了解的?;静僮髅?,系統(tǒng)裁剪等需要掌握。最好的學習就是邊實踐邊學習,這應該是貫穿整個硬件學習的全過程。
當你學習了單片機應用,原理圖/PCB繪制,器件選型,Linux系統(tǒng)操作,產(chǎn)品EMC性能等后,恭喜你,你的嵌入式硬件知識面廣度已經(jīng)夠啦!你可以自由的選擇想要去的公司了(因為你都懂,但是能不能去就要看你的能力了)。當然技術(shù)是在不斷進步的,所以學習是不能終止的。
接下來你就需要選擇一個深度了,一個人的精力是有限的,不管你承認不承認(當然天才除外)。選擇一個你感興趣的方向,注意一定是感興趣的方向,深入下去,繼續(xù)學習,購買專業(yè)書籍、參加專業(yè)培訓……,抓住一切能提高你專業(yè)技能的機會,并且堅持下去,慢慢你會發(fā)現(xiàn),你已經(jīng)成為這個方面的專家了。你選擇的方向也決定了你的工作的行業(yè),所以需要選擇一個有發(fā)展前途的公司。
以上學習過程只是一個參考,除了基礎知識是必須要學習外,其他順序是可以改變的,而且也并不一定全部學完,因為包含的內(nèi)容太多。比如說,我學完C語言,然后直接去學習Linux操作,然后再學習硬件相關(guān)的知識,也是可以的。如果項目中用不到DSP、FPGA相關(guān)的東西,可以先不學,等以后實際用到了再開始學習。不過應該明白一點,硬件知識的學習是一個積累的過程,越早學習對你后續(xù)的發(fā)展越好,當然你要立志做一個軟件工程師就當我沒說。
以上都是我個人的理解,個人能力有限,所以有什么不對之處敬請原諒。另外每個人對于硬件的學習過程可能都不一樣,俗話說條條大路通羅馬,只希望給剛進入嵌入式硬件行業(yè)的人做一個參考,目的就達到了。