嵌入式應(yīng)用工程師是一個軟硬件兼顧的職業(yè)。當(dāng)然,到了具體的工作崗位可能會有嵌入式硬件工程師和嵌入式軟件工程師之分等。不管怎么細分,只要是做嵌入式應(yīng)用開發(fā)的,你設(shè)計的軟件就要在硬件上跑,你不熟悉硬件平臺可以嗎?你設(shè)計的硬件,也要考慮軟件上面的事情,沒有一定軟件設(shè)計思維也是不行的。
對于一個嵌入式應(yīng)用開發(fā)的入門者來說,是沒有軟件和硬件的偏向之分的,至少我是這樣認為。因為對于基礎(chǔ)的技能,必要有一個全面的掌握,這樣你才能在嵌入式開發(fā)的道路上走得更遠,才能具備從入門走向優(yōu)秀的可能。
那么,如何才算是嵌入式工程師入門了呢?
我認為,至少能夠獨立設(shè)計和制作出一款嵌入式應(yīng)用系統(tǒng),就算是很少很小的系統(tǒng)也可以。
那么,要完成一款嵌入式應(yīng)用小系統(tǒng),你至少要做下面的一些工作:
1. 設(shè)計并確定系統(tǒng)的功能模塊,形成設(shè)計概要文檔。
2. 選擇嵌入式微處理器,確定系統(tǒng)的功能框圖。
3. 對主控芯片的引腳進行定義,形成引腳功能分配表。
4. 根據(jù)功能框圖,對主要的元器件進行選型。
5. 設(shè)計并確定各個功能模塊的電路原理圖。
6. 利用Protel等電路設(shè)計軟件,設(shè)計電路原理圖。
7. 原理核查無誤,開始設(shè)計PCB圖,并形成BOM表。
9. 焊接電路板,并進行簡單的測試,確保不短路、無虛焊等。
10. 編寫程序,對各個功能模塊進行測試,確定都能正常跑起來。
11. 編寫和測試相應(yīng)的應(yīng)用程序。
12. 整理資料,形成開發(fā)文檔,如有必要,還可以記錄自己的開發(fā)心得。
也許有人要問,入個門真的要這么復(fù)雜嗎?現(xiàn)在有很多培訓(xùn)機構(gòu),上來就學(xué)習(xí)操作系統(tǒng)移植、驅(qū)動程序編寫、項目應(yīng)用開發(fā),既高端又快速。我也不否認,這也是一條嵌入式應(yīng)用快速成長的途徑。如果你具備了上面描述的能力之后,再去接受培訓(xùn),那不是更容易理解培訓(xùn)內(nèi)容,成長的不是更快嗎?
《大學(xué)》里面有句話:“物有本末、事有終始,知所先后,則近道矣”。我始終認為,對于一個初學(xué)者或者人門的人,必須有扎實的基礎(chǔ),才能真正的從入門邁向優(yōu)秀。
【入門都需要學(xué)習(xí)哪些基礎(chǔ)技能呢?】
對于一個入門的初學(xué)者來說,再努力也不為過。我想要達到上面所描述的能力,成為一個真正嵌入式應(yīng)用開發(fā)的入門者,可能要掌握下面幾項基礎(chǔ)知識和必備技能,大家可以參考一下:
《1》理解三門基礎(chǔ)課程:電路分析、模擬電路和數(shù)字電路
嵌入式系統(tǒng),上面都是電子元器件,都離不開電流和電壓。在學(xué)習(xí)這些課程的時候,你可能覺得毫無用處。但當(dāng)你去設(shè)計一個系統(tǒng),或者處理一個系統(tǒng)的硬件故障時,你可能會發(fā)現(xiàn)需要借助這些課程的知識了。
在讀書的時候,我最討厭這三門課,而且當(dāng)時覺得都是理論,毫無實際用處。特別是電路分析,相當(dāng)?shù)某橄?。對于這三門課,我并不認為在開始就要把它們讀透,當(dāng)然你有這個毅力和能力最好不過。對于初學(xué)者,我倒覺得可以采用迭代學(xué)習(xí)的方法。
在初學(xué)的時候,最起碼要把基本的東西弄懂。相對來說,電路分析要求沒有太多,懂得簡單的電路分析方法就夠了。模電和數(shù)電要求會多一些,最起碼半導(dǎo)體、三極管、典型的運放電路、振蕩電路、濾波電路、電源電路、A/D轉(zhuǎn)換電路、數(shù)字編碼電路等等這些常用的電路要掌握。不然,你在設(shè)計電路的時候,就是無米之炊了。
在將來設(shè)計和處理問題的時候,如有需要,就回頭找資料,翻書本,既可以吸收學(xué)習(xí)新的知識,又可能加深鞏固舊的內(nèi)容。如此反復(fù)以往,在不久的將來,一定能都透徹理解這些課程,而且會有新的理解和深刻的認識。ADI公司的工程師寫了一本書《嵌入式系統(tǒng)中模擬設(shè)計》,我認為不錯,有興趣的不妨看看。
《2》掌握常用的元器件的選用方法與其典型的電路應(yīng)用
俗語講:巧婦難為無米之炊。一個理論知識豐富的工程師,如果對元器件的原理和應(yīng)用不熟悉,是很難設(shè)計出好的嵌入式應(yīng)用系統(tǒng)的。這就猶如一個好的醫(yī)生,能夠正確分析病理,找到病癥,可以不懂藥物,開不出藥方,一樣治不好病。
這個能力如何才能具備呢?
只能靠平時不斷積累,而且是貫穿整個嵌入式開發(fā)生涯,我想別無他法了。
在這個地方,我有一個經(jīng)驗可以和大家分享:養(yǎng)成做開發(fā)筆記的習(xí)慣。
拿一個好的筆記本,無論是學(xué)習(xí)還是開發(fā)過程中,遇到新的元器件應(yīng)用,就將其記錄在本子上。這個記錄至少包括:元器件的引腳圖,封裝圖,重要的電氣特性,結(jié)構(gòu)原理,應(yīng)用電路,如果涉及接口編程的,要把核心的程序記錄下來,最好還能將你的開發(fā)體會記錄下來,或者將別人的開發(fā)經(jīng)驗也可記錄下來。
倘若能夠一直堅持下去,這個筆記本就會成為你的一個嵌入式應(yīng)用開發(fā)寶典。日后在設(shè)計系統(tǒng)的時候,需要什么元器件,翻一下筆記本,就什么都有了,總比你去翻數(shù)據(jù)手冊強,要知道一本數(shù)據(jù)手冊可有好幾百頁的。
《3》熟練掌握一款電路設(shè)計軟件以及電路設(shè)計原則
嵌入式應(yīng)用系統(tǒng)首選要通過硬件表現(xiàn)出來,有了硬件平臺才能在上面編寫代碼,實現(xiàn)應(yīng)用。要制作硬件平臺,首選要設(shè)計硬件電路。這就要求你能熟練使用電路設(shè)計軟件,以及懂得一些軟件設(shè)計的規(guī)則。
目前常用的電路設(shè)計軟件有不少,不過常用的也就是Protel,也有很多公司用Designer,不過兩者很接近,會用其中一款,掌握另外一款很容易。對于工具軟件,只要多用就會熟練的了?,F(xiàn)在網(wǎng)上教程很多,很容易學(xué)習(xí)的。我在網(wǎng)上有一個文章《物聯(lián)網(wǎng)硬件技術(shù)實訓(xùn)-攻略手冊(2016版)》,不過講的是Protel99軟件的使用。這是一個99年的軟件工具,你可不要小看它,短小精悍,現(xiàn)在還有不少公司的工程師在使用能。初學(xué)者就應(yīng)該從簡單和經(jīng)典的入手。
對于電路設(shè)計原則,網(wǎng)上有很多文章,也有不少書籍。對于初學(xué)者來說,不會涉及高速和高頻的電路,在布局走線和地線設(shè)計上沒有太多的講究,只要合理、美觀就可以了,當(dāng)然線不能太細,線寬也不能太窄,起碼要符合制版公司的生產(chǎn)要求。這也是一個積累的過程,隨著你學(xué)習(xí)的深入,設(shè)計經(jīng)驗的豐富,這部分知識也就悄悄的多起來了。
電路板設(shè)計出來了,還要親自發(fā)出去生產(chǎn)一下,通過這個過程,你會了解到生產(chǎn)電路板的一些工藝要求,以及體會一個設(shè)計者如何與生產(chǎn)者溝通。在這個過程中,你知道了選擇多厚的板,為什么要開鋼網(wǎng),什么叫郵票孔,怎么樣拼板,要不要飛針測試,面積大的電路板原來還有菲林費。。。。。。。
《3》必須精通C語言程序設(shè)計和典型的設(shè)計思路
如果你不去做系統(tǒng)移植的工作,C語言基本可以滿足你對硬件系統(tǒng)的所有編程要求。C語言是嵌入式系統(tǒng)開發(fā)的一個工具,對工具使用的熟練程度,直接影響系統(tǒng)的開發(fā)程度。所以,我認為必須要精通C語言程序設(shè)計,而不是會或者掌握。嵌入式C語言程序設(shè)計和標(biāo)準(zhǔn)的C語言程序設(shè)計還是有一些不同的地方,這個大家需要體會一下。在標(biāo)準(zhǔn)C語言應(yīng)用中,宏定義、條件編譯、頭文件這些知識點并不被重視,但在嵌入式系統(tǒng)中卻確隨處可見。在嵌入式開發(fā)中,很多時候要對寄存器進行操作,所以在指針方面的應(yīng)用也會很多。如果是數(shù)據(jù)采集或者物聯(lián)網(wǎng)數(shù)據(jù)傳輸?shù)膽?yīng)用,可以涉及到到大數(shù)組的處理,而在進行協(xié)議解析的時候,又要在大數(shù)組中,對很多小字段進行處理,對于RAM區(qū)不足的處理器,你還不能夠定義小數(shù)組來處理小字段,只能運用指針設(shè)計算法。
對于簡單的嵌入式應(yīng)用系統(tǒng),我們可自己從頭到尾自己編寫一個系統(tǒng)應(yīng)用程序,而對于復(fù)雜的嵌入式應(yīng)用系統(tǒng),就需要移植一個操作系統(tǒng)來進行任務(wù)管理了。對于嵌入式初學(xué)者來說,能達到前者水平就可以了。要自己獨立編寫一個合理的應(yīng)用程序也不是一個簡單的事情。目前這方面的資料和書籍有很多,我三兩句也講不清楚,不妨推薦兩本書給大家參考一下:
1.安德魯。凱尼格的《C陷阱與缺陷》
2.周航慈的《基于嵌入式實時操作系統(tǒng)的程序設(shè)計技術(shù)(第2版)》
《4》理解51單片機的原理結(jié)構(gòu)并進行編程訓(xùn)練
對于這一點有不少人會提出質(zhì)疑,也有人認為沒有必要,這是在浪費時間,這說的有一定道理。但對于初學(xué)者,我認為還是要從最簡單、最經(jīng)典的入手。首先,51單片機的結(jié)構(gòu)簡單但是極具代表性,很多嵌入式微處理器都由51內(nèi)核演變過來;其二,關(guān)于51單片機的學(xué)習(xí)資料很多也很容易獲得,學(xué)習(xí)成本很低;其三,當(dāng)前不少SOC片上系統(tǒng)都是采用51內(nèi)核作為處理部分,不見得過時。
當(dāng)前不管是簡單的8微處理器還是32為ARM處理器,都是一種“內(nèi)核+外設(shè)”的結(jié)構(gòu),其中的差異是內(nèi)核的性能高低和外設(shè)的復(fù)雜程度。當(dāng)然,51單片機也是“內(nèi)核+外設(shè)”的結(jié)構(gòu),只不過性能低,外設(shè)少而已。雖然在實際應(yīng)用中已經(jīng)很少了,但作為學(xué)習(xí)平臺,特別是入門學(xué)習(xí)那是相當(dāng)合適的。我相信當(dāng)前很多高校都還在用51單片機作為主流的教學(xué)平臺呢。
51單片機雖小,但五臟俱全。4個8位的I/O端口,其中P3口作為復(fù)用端口;2個外部中斷輸入,2個定時計數(shù)器,1個串行接口。內(nèi)部有5路中斷,由IE寄存器進行使能選擇,由IP寄存器進行優(yōu)先級設(shè)定。看起來與現(xiàn)有主流的處理器結(jié)構(gòu)好像相差不大,只是少了一些外設(shè),中斷處理好像有些差別等等。
就我個人的經(jīng)驗來看,熟悉51單片機的原理和應(yīng)用之后,再去接觸當(dāng)前的主流單片機或32位的ARM處理器(沒有上操作系統(tǒng)的32為處理器只不過是款復(fù)雜的單片機),是相當(dāng)容易上手的。當(dāng)然,你不從51單片機入手,直接找一個主流的8位單片機入門學(xué)習(xí)也是可以的?,F(xiàn)在很多微處理器提供的集成開發(fā)環(huán)境都很智能了,可以輔助你生成一些程序框架。就開發(fā)者而言,能夠加快你開發(fā)的進度。然而,對于初學(xué)者來說,由于集成開發(fā)環(huán)境輔助做了一些工作,封裝了部分的代碼,反而不利于對知識的理解和學(xué)習(xí)。
《5》掌握一款主控微處理器的開發(fā)并掌握常用接口模塊的設(shè)計
上面說的51單片機學(xué)習(xí)只是讓你能更好的入門而已。在實際的應(yīng)用開發(fā)中,用到51單片機的場合并不多,所以,還得掌握一款主流微處理器的開發(fā)。由于有了前面單片機的學(xué)習(xí)基礎(chǔ),再去掌握一款新的微處理器會很容易。在這個部分,主要的精力不再是微處理器本身的學(xué)習(xí),而是借助這個微處理器去進行一個經(jīng)典應(yīng)用和常用接口模塊的學(xué)習(xí)。
如果說元器件電路模塊是硬件資源的積累,那么,常用接口模塊驅(qū)動程序則是軟件資源的積累。
將來在你的產(chǎn)品設(shè)計中,可能用到很多新的芯片和元器件,只要它的接口是SPI接口、IIC接口、設(shè)置串口等你熟悉的接口,那么對于你來說,它就是一個舊芯片和元器件。因為微處理器面對的不是芯片,而是接口。對外設(shè)芯片的操作本質(zhì)上就是通過數(shù)據(jù)接口設(shè)置外設(shè)芯片的寄存器而已。不管是多么先進或多么新穎的外設(shè)芯片,只要用的典型接口,那么通過接口驅(qū)動程序建立數(shù)據(jù)通道,按照數(shù)據(jù)手冊對寄存器進行操作,很快就可以應(yīng)用自如了。
所以說,熟練的掌握各種接口的編程和常用模塊的設(shè)計,是多么的關(guān)鍵。
《6》掌握一些常用工具的使用并具備一定的焊接能力
掌握一些常用的軟硬件工具,是調(diào)試必備的技能。對于初學(xué)者來說,不要急著去研究頻譜分析儀、數(shù)字毫伏表這些高端的工具,只需要掌握普通常用的工具就足夠了。硬件上面,萬用表和示波器是必須要掌握的,能用數(shù)字電源和信號發(fā)生器那是最好的了。對于一些特殊的工具,等你做到相應(yīng)的應(yīng)用的時候再去使用都不晚,當(dāng)你要設(shè)計一個高精度的熱電偶數(shù)據(jù)采集器,你才會使用到熱電偶校準(zhǔn)器。除了硬件工具之外,我們還得掌握一些常用的軟件工具,最典型的就是“串口助手”了,如果你要做以太網(wǎng)方面的應(yīng)用,你還得會使用以太網(wǎng)抓包工具,抓取網(wǎng)絡(luò)上的數(shù)據(jù)包進行數(shù)據(jù)分析。
另外,你還需要具備一定的焊接能力,至少能焊接0.65mm間距的SSOP封裝的芯片?,F(xiàn)在也有不少芯片采用QFN封裝的,看起來很難焊,實際上掌握了要點,手工焊接也是很快的。不用說對于初學(xué)者,就是是在小企業(yè)的嵌入式工程師來說,可能都沒有專門的焊接人員配備給你,所以,很多時候都得自己焊接元器件,最起碼在進行硬件調(diào)試的時候,要拆下來,焊接上去的時候,你總不能等別人幫忙,或者老是去麻煩別人呀。
《7》自己親自設(shè)計一個學(xué)習(xí)板并進行程序開發(fā)
我覺得這是每一個嵌入式應(yīng)用開發(fā)入門者的成人禮。當(dāng)你能夠按照上面所描述的步驟完整這個過程的時候,說明你已經(jīng)正真的踏進了嵌入式應(yīng)用開發(fā)的門檻。然而,完成嵌入式工程師入門僅僅是一個事業(yè)的開端,后面還需不斷進取,在入門的基礎(chǔ)上,進行操作系統(tǒng)的移植、驅(qū)動程序的編寫、實際項目的磨練,小步快跑,迭代升級,才能向一個真正優(yōu)秀嵌入式工程師邁進。
【小結(jié)及其他】
嵌入式應(yīng)用開發(fā)涉及的知識點很多,初次接觸往往感到無從下手。沒錯,與一些高級編程語言“易懂難精”的情況相比,嵌入式應(yīng)用開發(fā)的入門是比較難的,但是,隨著知識的積累和經(jīng)驗的豐富,后面的路會越走越寬,越走越順。廣大的嵌入式應(yīng)用開發(fā)入門者應(yīng)該充滿信心。我一直都認為嵌入式應(yīng)用開發(fā)就像一場馬拉松,必須一步一個腳印,積蓄能量,逐步進階,才能越走越遠的。
有一些朋友會參加知名培訓(xùn)機構(gòu)的嵌入式課程,一開始就在功能復(fù)雜的開發(fā)平臺上學(xué)習(xí)移植操作系統(tǒng),編寫底層驅(qū)動程序,切入大型嵌入式系統(tǒng)項目開發(fā)等等,起步很快,學(xué)習(xí)的內(nèi)容也很潮,做得實驗也很高端,當(dāng)然在他們之中,有很多人是相當(dāng)出色,工作也會非常優(yōu)秀。然而,他們的起點很高,效果可能也很好,但是,我始終認為還是要有一些扎實的基礎(chǔ)作為支撐的。如果在一場馬拉松中沒有足夠的能量儲備,一旦跑得太快,后面可能會跑得不遠。
時代不斷進步,科技不斷發(fā)展。嵌入式應(yīng)用工程師也應(yīng)該與時俱進,密切關(guān)注行業(yè)動向,偶爾要去參加一下芯片廠商舉辦的產(chǎn)品發(fā)布會或講座,更新知識,認識同行;每年去看看一些大型的電子展會,開拓思維,開開眼界。
編輯:hfy
-
元器件
+關(guān)注
關(guān)注
112文章
4722瀏覽量
92449 -
振蕩電路
+關(guān)注
關(guān)注
17文章
505瀏覽量
98832 -
數(shù)據(jù)采集器
+關(guān)注
關(guān)注
1文章
140瀏覽量
14942 -
嵌入式工程師
+關(guān)注
關(guān)注
1文章
37瀏覽量
16223
發(fā)布評論請先 登錄
相關(guān)推薦
評論