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