嵌入式硬(ying)件(jian)開發怎(zen)么學
時間:2018-08-14 來源(yuan):未(wei)知
學(xue)習某(mou)個(ge)(ge)學(xue)科,踏入某(mou)個(ge)(ge)行業,佳的(de)動(dong)力(li)是(shi)(shi)興趣,學(xue)習它(ta)能給你帶(dai)來快(kuai)樂(le),能夠愉悅自己,也(ye)就能走(zou)的(de)更遠(yuan);稍次一點的(de)動(dong)力(li)是(shi)(shi)可(ke)(ke)以帶(dai)來money,我們每個(ge)(ge)人(ren)都要(yao)生活(huo)(huo)的(de),賺錢(qian)是(shi)(shi)為了養活(huo)(huo)自己和家人(ren),所(suo)以這(zhe)個(ge)(ge)理由也(ye)是(shi)(shi)很充分的(de);也(ye)可(ke)(ke)以是(shi)(shi)周圍(wei)的(de)壓力(li),別人(ren)都會(hui),我也(ye)要(yao)會(hui),補(bu)齊和別人(ren)的(de)差距,這(zhe)個(ge)(ge)范圍(wei)就有點窄了。
在進入硬(ying)件(jian)這個行(xing)業的時(shi)候,更加注重進入的動力(li),因為它的特殊性(xing),如果你(ni)們(men)沒有很好的動力(li)支撐,很容易堅持不(bu)下來(lai)。
什么是嵌入式(shi)硬件(jian)?(硬件(jian)學習)
既然(ran)今天(tian)咱們(men)的(de)(de)話題是如何學習(xi)嵌入式(shi)硬(ying)(ying)(ying)(ying)件(jian)(jian)(jian),咱們(men)有必(bi)要先了解一(yi)下什么是嵌入式(shi)硬(ying)(ying)(ying)(ying)件(jian)(jian)(jian)。硬(ying)(ying)(ying)(ying)件(jian)(jian)(jian)(電(dian)(dian)子(zi)產(chan)品),顧(gu)名思(si)義就(jiu)是看的(de)(de)見得東西,是相(xiang)對于(yu)軟件(jian)(jian)(jian)這種看不到(dao)的(de)(de)東西來說(shuo)的(de)(de),一(yi)般(ban)是指電(dian)(dian)子(zi)產(chan)品中的(de)(de)PCB及(ji)之上的(de)(de)電(dian)(dian)子(zi)元器件(jian)(jian)(jian)。嵌入式(shi)硬(ying)(ying)(ying)(ying)件(jian)(jian)(jian),是硬(ying)(ying)(ying)(ying)件(jian)(jian)(jian)的(de)(de)一(yi)種,一(yi)般(ban)是指有微(wei)控制器及(ji)外部功能實現(xian)模塊的(de)(de)硬(ying)(ying)(ying)(ying)件(jian)(jian)(jian)集合。現(xian)在(zai)這兩種概念幾乎相(xiang)同(tong)。
目(mu)前可以(yi)說,只(zhi)要是涉及到(dao)電子(zi)控制的行業,都會用到(dao)嵌入式產品,就會包含嵌入式硬件。

如何學習(xi)嵌入式硬件?
硬件學(xue)習實際(ji)上是一個很大的面(mian),你(ni)需(xu)要(yao)學(xue)習的知識有很多(duo),需(xu)要(yao)了(le)解(jie)的面(mian)也有很多(duo)。
大(da)體可以分為(wei)兩部分:硬件(jian)和(he)軟件(jian)。
1、硬(ying)件基礎。
學習嵌入式硬件,首先你需(xu)要有一定的硬件基礎。基本的電磁(ci)物(wu)理定律,電路,數電,模電等需(xu)要了解。
學(xue)會使用一(yi)種單片機,不論是8位(wei)、16位(wei)或(huo)者是32位(wei),學(xue)習單片機接口的應(ying)用,向UART、IIC、SPI、USB、CAN、RS232、RS485等(deng)。
應當熟練使用一種原理圖PCB繪制(zhi)軟件(jian),目前常(chang)用的(de)軟件(jian)有Altium Designer、PADS、OrCAD/Allegro,只要(yao)掌握其中的(de)一種即可(ke)。
熟練掌握(wo)各(ge)種元(yuan)器(qi)件(jian)(jian)的(de)原理(li)及電氣特(te)性(xing),并依(yi)據此綜合特(te)性(xing)、成本、供應等各(ge)個(ge)方面進行器(qi)件(jian)(jian)選型。
好有(you)一定的英語基礎,會(hui)看各種(zhong)芯片的數據手(shou)冊(ce)(datasheet),會(hui)使用(yong)翻譯軟件看懂也是可以的。
還要(yao)有良好的動手能(neng)力(li),熟(shu)練(lian)使(shi)用各(ge)(ge)種(zhong)調試儀器(qi)如(ru)萬用表、示(shi)波器(qi)、邏輯分析(xi)儀等,還要(yao)會使(shi)用EMC測試儀器(qi)如(ru)雷擊浪涌發生(sheng)器(qi)、脈(mo)沖群發生(sheng)器(qi)、靜電槍(qiang)等。一個硬件(jian)產品,各(ge)(ge)種(zhong)電磁(ci)兼容實驗(yan)是要(yao)過的。
還需要(yao)知道一(yi)些標(biao)(biao)(biao)準,這個就要(yao)要(yao)看你從事(shi)什么行業(ye)(ye)了,一(yi)般(ban)是看標(biao)(biao)(biao)準/標(biao)(biao)(biao)準,行業(ye)(ye)標(biao)(biao)(biao)準標(biao)(biao)(biao),企(qi)業(ye)(ye)標(biao)(biao)(biao)準等(deng)。
2、軟件基礎
軟(ruan)件(jian)(jian)的要求稍微簡(jian)單了就。一(yi)般嵌入式硬(ying)件(jian)(jian)所使用的是(shi)C語(yu)(yu)言,所以需(xu)要會用C語(yu)(yu)言調試你的硬(ying)件(jian)(jian)。如果是(shi)驅(qu)動方(fang)面,還要了解各(ge)種硬(ying)件(jian)(jian)接口的協議。
學習過程參考
如(ru)果是(shi)初學(xue)者(zhe),看到如(ru)此(ci)多的(de)知識學(xue)肯(ken)定會大吃一(yi)驚(jing),實際上完全不用(yong)擔心,因為(wei)硬件(jian)(jian)學(xue)習是(shi)一(yi)個(ge)積(ji)累的(de)過程,在應(ying)用(yong)中學(xue)習,用(yong)到什(shen)么學(xue)什(shen)么,當然提前儲備更好,不容易錯過機會。每一(yi)個(ge)優(you)秀的(de)硬件(jian)(jian)工程師都是(shi)經(jing)過時間積(ji)累練就的(de)。
當然(ran)必備(bei)的(de)(de)(de)基(ji)(ji)(ji)礎(chu)知識還是(shi)要(yao)學的(de)(de)(de)。如(ru)果你是(shi)零基(ji)(ji)(ji)礎(chu)的(de)(de)(de)話(hua),C語言(yan)是(shi)要(yao)學習(xi)(xi)(xi)的(de)(de)(de),還要(yao)學習(xi)(xi)(xi)至少一種單(dan)片(pian)(pian)機的(de)(de)(de)基(ji)(ji)(ji)本(ben)(ben)(ben)結(jie)構(gou)(gou)。C語言(yan),你可(ke)(ke)以(yi)(yi)不用(yong)全部都學,基(ji)(ji)(ji)本(ben)(ben)(ben)的(de)(de)(de)關鍵(jian)字熟記,基(ji)(ji)(ji)本(ben)(ben)(ben)語句會(hui)用(yong),基(ji)(ji)(ji)本(ben)(ben)(ben)的(de)(de)(de)數(shu)據結(jie)構(gou)(gou)明(ming)白(bai)即可(ke)(ke);單(dan)片(pian)(pian)機結(jie)構(gou)(gou)可(ke)(ke)以(yi)(yi)從51單(dan)片(pian)(pian)機的(de)(de)(de)結(jie)構(gou)(gou)學習(xi)(xi)(xi),因(yin)(yin)為比(bi)較(jiao)簡單(dan),相(xiang)對比(bi)較(jiao)容易學習(xi)(xi)(xi),也可(ke)(ke)以(yi)(yi)直接學習(xi)(xi)(xi)ARM單(dan)片(pian)(pian)機的(de)(de)(de)結(jie)構(gou)(gou),因(yin)(yin)為目前使(shi)用(yong)多,需要(yao)知道單(dan)片(pian)(pian)機的(de)(de)(de)小系統,了(le)解(jie)單(dan)片(pian)(pian)機的(de)(de)(de)中斷,會(hui)使(shi)用(yong)基(ji)(ji)(ji)本(ben)(ben)(ben)的(de)(de)(de)外設(she),像GPIO、定時器等。
學習(xi)完C語言及一種單(dan)片(pian)機的(de)使用,可以(yi)對單(dan)片(pian)機有個大體的(de)了(le)解及簡單(dan)的(de)應(ying)用。
此(ci)時(shi)可以(yi)開(kai)始學習(xi)簡單的原理圖PCB繪制軟件(jian),有條件(jian)可以(yi)畫一(yi)個(ge)單片機小系(xi)統板(ban)(ban)(ban),把所有接口引出(chu)來,作為后續學習(xi)使用。在(zai)自己(ji)做的板(ban)(ban)(ban)子上運行自己(ji)的代碼(ma)還是(shi)很(hen)有成就感的,當然你(ni)也可以(yi)買(mai)一(yi)個(ge)配套的開(kai)發(fa)板(ban)(ban)(ban),現在(zai)開(kai)發(fa)板(ban)(ban)(ban)有很(hen)多,買(mai)一(yi)個(ge)合適的開(kai)發(fa)板(ban)(ban)(ban)即(ji)可。
接下來就是拓展單片機的(de)外設使用(yong),UART、IIC、SPI等,不僅僅是學習(xi)它是如何使用(yong),還要知(zhi)道它的(de)硬件實現(xian)及(ji)電氣特性,當然學習(xi)所有的(de)接口(kou)都要這(zhe)樣(yang)。同時結(jie)合這(zhe)些(xie)接口(kou)的(de)使用(yong)深入C語言的(de)學習(xi)應(ying)用(yong)。
當(dang)這些基本外設都學(xue)(xue)習(xi)完成后,此(ci)時就可(ke)以(yi)依照(zhao)自(zi)己的(de)想法做一些特(te)定功能的(de)硬(ying)件了。如果是要找工(gong)作的(de)同學(xue)(xue),就可(ke)以(yi)加入(ru)相關單片機使用(yong)的(de)公司邊(bian)(bian)工(gong)作邊(bian)(bian)學(xue)(xue)習(xi),因為在(zai)實際的(de)應用(yong)項目(mu)中可(ke)以(yi)加速學(xue)(xue)習(xi)。如果是自(zi)學(xue)(xue)的(de)同學(xue)(xue),此(ci)時需(xu)要尋(xun)找一個(ge)團隊(dui)或者參加電子設計大賽來加速自(zi)己的(de)學(xue)(xue)習(xi)。
注意此(ci)處有一(yi)個職(zhi)位選擇的分叉點:硬(ying)件工程師&單片機工程師,當然實際應用中(zhong)可能(neng)沒(mei)有分這(zhe)么清,具體看公司的職(zhi)務范圍。
硬(ying)件工程師偏向于(yu)原理圖/PCB設計,硬(ying)件的(de)調試(shi),關(guan)注產(chan)品的(de)EMC性(xing)能。此時就需要好好學習一種原理圖/PCB設計軟件,然后開(kai)始儲備EMC相關(guan)的(de)知識了(le)。
單片機工程師偏向應用,主(zhu)要是(shi)如(ru)何高效、穩健的實現功能,至(zhi)于EMC等方面(mian)的知識了解即可。
當然,如果有(you)時間,好(hao)都學,你掌握的(de)知識越全(quan)面(mian),思考的(de)越全(quan)面(mian),做出的(de)產品就(jiu)越好(hao)。
PS:學習一(yi)定會有一(yi)個(ge)高原期或者幾個(ge)高原期,此時一(yi)定要堅持(chi)下去,應當有一(yi)種(zhong)不經歷風雨如(ru)何見彩(cai)虹的(de)信念。
當(dang)這些基本的(de)(de)單片(pian)機應(ying)用(yong)已經不(bu)能滿足你的(de)(de)求知(zhi)欲或(huo)者公司做的(de)(de)產品越(yue)(yue)來越(yue)(yue)復(fu)雜(za),此(ci)時(shi)可以考(kao)慮更高(gao)級的(de)(de)應(ying)用(yong)了。畢竟人總是(shi)要進(jin)步(bu)的(de)(de),但是(shi)前提是(shi)你的(de)(de)基礎(chu)要打的(de)(de)比較牢(lao)。可以學(xue)習(xi)一(yi)下多層板(ban)的(de)(de)繪制,高(gao)頻知(zhi)識的(de)(de)學(xue)習(xi)、PCB繪制(當(dang)然這個是(shi)比較費錢的(de)(de)),學(xue)習(xi)一(yi)下DSP、FPGA等相(xiang)關(guan)芯片(pian),用(yong)一(yi)下RTOS(不(bu)論是(shi)FreeRTOS還(huan)是(shi)uCosII/III還(huan)是(shi)其他)。學(xue)習(xi)如何使用(yong)嵌入式Linux操(cao)作(zuo)系統(tong)。有(you)機會可以學(xue)習(xi)一(yi)下操(cao)作(zuo)系統(tong)原(yuan)理(li)相(xiang)關(guan)知(zhi)識。
這(zhe)里需要(yao)(yao)(yao)說明(ming)一下(xia)Linux系(xi)(xi)統的(de)(de)(de)(de)學習。因(yin)為這(zhe)個是(shi)單片機裸跑(pao)與使用操作系(xi)(xi)統的(de)(de)(de)(de)分水嶺(RTOS只能(neng)(neng)算是(shi)裸跑(pao)的(de)(de)(de)(de)延伸)。Linux操作系(xi)(xi)統知(zhi)識比較多,學習的(de)(de)(de)(de)時候可能(neng)(neng)就需要(yao)(yao)(yao)有側重(zhong)點的(de)(de)(de)(de)學習了,可以選擇上層(ceng)應用的(de)(de)(de)(de)開發(fa)(fa),此時就是(shi)嵌入式軟件的(de)(de)(de)(de)開發(fa)(fa),也可以做(zuo)底層(ceng)驅動,跟硬件接觸(chu)還是(shi)比較密切的(de)(de)(de)(de)。當然還是(shi)之前那句話,有時間(jian)都學,對于你的(de)(de)(de)(de)發(fa)(fa)展是(shi)好的(de)(de)(de)(de)。無論側重(zhong)什么(me)方(fang)面,Linux基礎都是(shi)需要(yao)(yao)(yao)了解的(de)(de)(de)(de)。基本操作命令,系(xi)(xi)統裁剪等需要(yao)(yao)(yao)掌(zhang)握。好的(de)(de)(de)(de)學習就是(shi)邊(bian)(bian)實踐邊(bian)(bian)學習,這(zhe)應該是(shi)貫穿整個硬件學習的(de)(de)(de)(de)全過(guo)程。(硬件學習)
當你(ni)學習了(le)單(dan)片機(ji)應用,原理圖/PCB繪制,器件(jian)選型,Linux系(xi)統操作,產品EMC性(xing)能(neng)等后,恭喜你(ni),你(ni)的(de)嵌(qian)入式硬件(jian)知(zhi)識(shi)面廣度已(yi)經(jing)夠啦!你(ni)可以自(zi)由的(de)選擇(ze)想要(yao)(yao)去(qu)的(de)公司了(le)(因為你(ni)都懂,但是(shi)能(neng)不能(neng)去(qu)就要(yao)(yao)看你(ni)的(de)能(neng)力了(le))。當然技術是(shi)在(zai)不斷進步的(de),所以學習是(shi)不能(neng)終止的(de)。
接下(xia)來你(ni)(ni)(ni)就(jiu)需要選(xuan)(xuan)擇(ze)(ze)一個(ge)深度(du)了,一個(ge)人的(de)(de)精(jing)力是有(you)限的(de)(de),不管(guan)你(ni)(ni)(ni)承認(ren)不承認(ren)(當然(ran)天才除外(wai))。選(xuan)(xuan)擇(ze)(ze)一個(ge)你(ni)(ni)(ni)感興趣的(de)(de)方(fang)向,注意一定是感興趣的(de)(de)方(fang)向,深入下(xia)去,繼(ji)續學(xue)習,購買專(zhuan)(zhuan)(zhuan)業書籍、參加專(zhuan)(zhuan)(zhuan)業培訓(xun)……,抓住一切能提高你(ni)(ni)(ni)專(zhuan)(zhuan)(zhuan)業技能的(de)(de)機會,并且堅持下(xia)去,慢(man)(man)慢(man)(man)你(ni)(ni)(ni)會發現,你(ni)(ni)(ni)已(yi)經成為這個(ge)方(fang)面的(de)(de)專(zhuan)(zhuan)(zhuan)家了。你(ni)(ni)(ni)選(xuan)(xuan)擇(ze)(ze)的(de)(de)方(fang)向也決定了你(ni)(ni)(ni)的(de)(de)工作的(de)(de)行業,所以需要選(xuan)(xuan)擇(ze)(ze)一個(ge)有(you)發展前途(tu)的(de)(de)公司。
以上學(xue)(xue)習(xi)過程只是一(yi)(yi)個(ge)參考,除了基(ji)礎(chu)知(zhi)識是必須(xu)要(yao)(yao)學(xue)(xue)習(xi)外,其他順序是可(ke)(ke)以改變的(de)(de),而且也并不一(yi)(yi)定全部(bu)學(xue)(xue)完(wan),因為包含的(de)(de)內容太多。比如(ru)說(shuo),我(wo)學(xue)(xue)完(wan)C語言,然(ran)后直接去學(xue)(xue)習(xi)Linux操作,然(ran)后再(zai)學(xue)(xue)習(xi)硬(ying)件(jian)相關(guan)的(de)(de)知(zhi)識,也是可(ke)(ke)以的(de)(de)。如(ru)果項目中用不到DSP、FPGA相關(guan)的(de)(de)東(dong)西,可(ke)(ke)以先不學(xue)(xue),等(deng)以后實際用到了再(zai)開始學(xue)(xue)習(xi)。不過應該明(ming)白(bai)一(yi)(yi)點,硬(ying)件(jian)知(zhi)識的(de)(de)學(xue)(xue)習(xi)是一(yi)(yi)個(ge)積累的(de)(de)過程,越(yue)早學(xue)(xue)習(xi)對你后續(xu)的(de)(de)發(fa)展越(yue)好(hao),當然(ran)你要(yao)(yao)立志做一(yi)(yi)個(ge)軟件(jian)工程師就(jiu)當我(wo)沒說(shuo)。
以上(shang)都是我個(ge)人(ren)的理(li)解,個(ge)人(ren)能(neng)(neng)力有(you)限,所以有(you)什么不(bu)對之(zhi)處(chu)敬請原諒。另外每個(ge)人(ren)對于(yu)硬(ying)件的學習過(guo)程可能(neng)(neng)都不(bu)一樣,俗話說條條大路通羅馬,只希望給剛進入嵌入式硬(ying)件行(xing)業的人(ren)做一個(ge)參考,目(mu)的就達到了(le)。

