近幾年來,隨著移動(dòng)互聯(lián)網(wǎng)、物聯(lián)網(wǎng)的迅猛發(fā)展,嵌入式技術(shù)日漸普及,在通訊、網(wǎng)絡(luò)、工控、醫(yī)療、電子等領(lǐng)域發(fā)揮著越來越重要的作用;在介紹嵌入式開發(fā)職業(yè)發(fā)展方向之前,先了解一下嵌入式設(shè)備的本質(zhì)。嵌入式設(shè)備的本質(zhì)就是一臺(tái)專用的、微型計(jì)算機(jī),所以就像計(jì)算機(jī)一樣由三個(gè)層次的東西組成:
1)硬件,包括cpu(如ARM)、存儲(chǔ)(如flash)、I/O(顯示模塊、通訊模塊、視音頻模塊、I/O控制電路等)。
2)系統(tǒng)級(jí)軟件,主要是操作系統(tǒng)也就是OS,以及I/O軟件如LCD、藍(lán)牙、wifi、CDMA、聲音等子系統(tǒng)。
3)應(yīng)用軟件,如基于linux的應(yīng)用開發(fā),基于的應(yīng)用開發(fā),基于iOS的應(yīng)用開發(fā)等。
事實(shí)上,所有帶有數(shù)字接口的設(shè)備,大到飛機(jī)火箭,小到手機(jī),電腦,甚至組成普通PC終端設(shè)備的鍵盤、鼠標(biāo)、硬盤,目前市場(chǎng)上各種智能硬件產(chǎn)品等都使用嵌入式系統(tǒng)。嵌入式系統(tǒng)是將先進(jìn)的計(jì)算機(jī)技術(shù)、半導(dǎo)體技術(shù)和電子技術(shù)和各個(gè)行業(yè)的具體應(yīng)用相結(jié)合后的產(chǎn)物。嵌入式系統(tǒng)無疑是當(dāng)前最熱門最有發(fā)展前途的 IT應(yīng)用領(lǐng)域之一。
嵌入式開發(fā)的發(fā)展方向有很多,門檻高低不一樣。下面主要介紹四大職業(yè)發(fā)展方向:
1. ARM + Linux/開發(fā)
據(jù)統(tǒng)計(jì),全世界99%的智能手機(jī)和平板電腦都采用ARM架構(gòu)。所有的和iPad都使用ARM的芯片,多數(shù)電子閱讀器和 設(shè)備也都采用這一架構(gòu)。大部分領(lǐng)先的網(wǎng)絡(luò)/電信制造商正積極地將其下一代平臺(tái)遷移到ARM平臺(tái)上來,有理由相信在今后的幾年中,ARM在行業(yè)中將扮演一個(gè)極為重要的角色。
嵌入式系統(tǒng)是軟硬結(jié)合的東西,搞ARM開發(fā)的人主要分為兩大類:
嵌入式軟件開發(fā)工程師
(1) 應(yīng)用程序開發(fā),包括應(yīng)用開發(fā)或者Linux上應(yīng)用開發(fā)(QT等),目前做的人很多,就業(yè)容易待遇也不錯(cuò),需要掌握C語言、C++、java等開發(fā)語言。
(2) 操作系統(tǒng)移植,比較復(fù)雜,Linux,等,現(xiàn)在很多手機(jī)廠商(如小米,魅族,樂視等)推出的操作系統(tǒng)也就是修改內(nèi)核,換皮膚,就業(yè)還是很容易的;
(3) 底層驅(qū)動(dòng)開發(fā),這個(gè)入門、深入都不容易,需要對(duì)硬件及OS有較深的了解,發(fā)展前景很不錯(cuò)。
嵌入式硬件開發(fā)工程師
1. 就像手機(jī)一樣在處理器上做整體的電路,比單片機(jī)入門難的多,做成技術(shù)大牛了不缺錢。
2. SOC,架構(gòu)開發(fā)。稱為系統(tǒng)級(jí)芯片,也有稱片上系統(tǒng),意指它是一個(gè)產(chǎn)品,是一個(gè)有專用目標(biāo)的集成電路,其中包含完整系統(tǒng)并有嵌入軟件的全部?jī)?nèi)容。同時(shí)它又是一種技術(shù),用以實(shí)現(xiàn)從確定系統(tǒng)功能開始,到軟/硬件劃分,并完成設(shè)計(jì)的整個(gè)過程。
2. FPGA開發(fā)
FPGA(現(xiàn)場(chǎng)可編程邏輯器件)產(chǎn)品的應(yīng)用領(lǐng)域非常廣泛,包括通信、消費(fèi)電子、汽車電子、工業(yè)控制、測(cè)試測(cè)量等。而應(yīng)用的變化也使FPGA產(chǎn)品近幾年的演進(jìn)趨勢(shì)越來越明顯:一方面,F(xiàn)PGA供應(yīng)商致力于采用當(dāng)前最先進(jìn)的工藝來提升產(chǎn)品的性能,降低產(chǎn)品的成本;另一方面,越來越多的通用IP(知識(shí)產(chǎn)權(quán))或客戶定制IP被引入FPGA中,以滿足客戶產(chǎn)品快速上市的要求。
FPGA的開發(fā)相對(duì)于傳統(tǒng)PC、單片機(jī)的開發(fā)有很大不同。FPGA以并行運(yùn)算為主,以硬件描述語言來實(shí)現(xiàn);相比于PC或單片機(jī)(無論是馮諾依曼結(jié)構(gòu)還是哈佛結(jié)構(gòu))的順序操作有很大區(qū)別,也造成了FPGA開發(fā)入門較難。
學(xué)習(xí)FPGA常見的四大誤區(qū):
1、不熟悉FPGA的內(nèi)部結(jié)構(gòu),不了解可編程邏輯器件的基本原理。
2、錯(cuò)誤理解HDL語言,怎么看都看不出硬件結(jié)構(gòu)。
3、FPGA本身不算什么,一切皆在FPGA之外。
4、數(shù)字邏輯知識(shí)是根本。
3. DSP開發(fā)
DSP( ,數(shù)字信號(hào)處理),是一門涉及許多學(xué)科而又廣泛應(yīng)用于許多領(lǐng)域的新興學(xué)科。全球DSP市場(chǎng)的前景非常廣闊,DSP產(chǎn)業(yè)將成為21 世紀(jì)最具發(fā)展?jié)摿Φ某柈a(chǎn)業(yè)。近年來,隨著DSP芯片產(chǎn)品價(jià)格的不斷下滑,使DSP能夠從以往的軍用領(lǐng)域迅速拓展到民用領(lǐng)域,例如應(yīng)用于計(jì)算機(jī)、網(wǎng)絡(luò)、移動(dòng)電話、調(diào)制解調(diào)器和磁盤驅(qū)動(dòng)器以及眾多的消費(fèi)電子產(chǎn)品。
DSP學(xué)習(xí)涉及內(nèi)容多,因此有的放矢,學(xué)以致用很重要。有幾個(gè)重要的部分是一定要學(xué)好的:硬件的制作及學(xué)習(xí);類/微驅(qū)動(dòng)模型;c/匯編程序的開發(fā);CSL/BSL的使用和理解;RF5算法構(gòu)架;圖像領(lǐng)域的知識(shí)等。
4. IC設(shè)計(jì)
你知道嗎?上班的公交IC卡,ATM取錢的銀行卡,樓宇的門卡等都是應(yīng)用IC設(shè)計(jì)的產(chǎn)品,在現(xiàn)代世界不可或缺。IC設(shè)計(jì)( ),或稱為集成電路設(shè)計(jì),是電子工程學(xué)和計(jì)算機(jī)工程學(xué)的一個(gè)學(xué)科,其主要內(nèi)容是運(yùn)用專業(yè)的邏輯和電路設(shè)計(jì)技術(shù)設(shè)計(jì)集成電路。
中國(guó)自2009年以來,透過強(qiáng)大的市場(chǎng)購買力與自有品牌的茁壯,中國(guó)IC設(shè)計(jì)業(yè)產(chǎn)值在全球市場(chǎng)的占有率逐步攀升。中國(guó)IC設(shè)計(jì)業(yè)者的訂單需求在未來三年內(nèi)有機(jī)會(huì)成為全球成長(zhǎng)性最高的地區(qū),為了搭上此波浪潮,2015~2017年將會(huì)是全球晶圓代工廠商爭(zhēng)相布局卡位的重要時(shí)刻。
如何學(xué)習(xí)IC設(shè)計(jì)?需要具有一定的模擬電路基礎(chǔ),有數(shù)模混合電路設(shè)計(jì)經(jīng)驗(yàn);良好的電子電路分析能力;具有SOC的設(shè)計(jì)和驗(yàn)證的經(jīng)驗(yàn);精通,Tcl,C,Perl等設(shè)計(jì)語言。
嵌入式系統(tǒng)設(shè)計(jì)是電子產(chǎn)品設(shè)計(jì)的重要組成部分,目前國(guó)內(nèi)外大部分科技公司、創(chuàng)客團(tuán)隊(duì)都建立了自己的嵌入式開發(fā)團(tuán)隊(duì)。團(tuán)隊(duì)所需的人員職位構(gòu)成包括:系統(tǒng)設(shè)計(jì)工程師 、硬件工程師、底層驅(qū)動(dòng)工程師、Linux系統(tǒng)工程師、應(yīng)用設(shè)計(jì)工程師等。華清遠(yuǎn)見教育集團(tuán)建議計(jì)算機(jī)、電子、通信、自動(dòng)化等相關(guān)專業(yè)的同學(xué)可把嵌入式開發(fā)作為未來職業(yè)發(fā)展的方向,不論從薪資待遇還是發(fā)展前景來看,都非常不錯(cuò)。從工程師起步,一般有幾個(gè)發(fā)展方向硬件開發(fā)轉(zhuǎn)嵌入式開發(fā)難嗎,一個(gè)是成為技術(shù)方面的核心,領(lǐng)域內(nèi)的專家; 另一個(gè)是從項(xiàng)目中鍛煉起來,成為項(xiàng)目主管或是管理型人才;再有就是利用自己的技術(shù)及行業(yè)經(jīng)驗(yàn)去創(chuàng)業(yè)。總之,在物聯(lián)網(wǎng)大的環(huán)境下,嵌入式開發(fā)將會(huì)成為最有發(fā)展前景的職業(yè)發(fā)展方向之一。
嵌入式開發(fā)要學(xué)什么
首先要明確,嵌入式的工作有分工,有做硬件的,也有做軟件的,硬件的工程如有做PCB的、SOPC技術(shù)和芯片設(shè)計(jì)等,市場(chǎng)上一般嵌入式軟件工程師的需求量比硬件工程師大,在大一點(diǎn)的公司,一般硬件工程師和軟件工程師的比例差不多是1:3到1:5,如果完全沒有基礎(chǔ)的同學(xué),我們建議學(xué)嵌入式軟件方向,因?yàn)樗木蜆I(yè)范圍廣,容易就業(yè)。
嵌入式軟件工程師也有多種分工,如嵌入式應(yīng)用工程師,嵌入式驅(qū)動(dòng)工程師, 嵌入式系統(tǒng)工程師。
這些都是需要不同的知識(shí),首先,嵌入式應(yīng)用工程師一般主要掌握嵌入式開發(fā)環(huán)境,linux下的C編程以及一些應(yīng)用的專業(yè)知識(shí),比如做界面的QT、等。
而嵌入式驅(qū)動(dòng)工程師和系統(tǒng)工程師,這個(gè)不僅要掌握上面的知識(shí)硬件開發(fā)轉(zhuǎn)嵌入式開發(fā)難嗎,還需要了解處理器的相關(guān)知識(shí),如ARM、MIPS等,當(dāng)然也需要了解他們的外設(shè),比如UART、 、flash、I2C、SPI等相關(guān)的知識(shí)。
嵌入式驅(qū)動(dòng)工程師和系統(tǒng)工程師一般待遇比應(yīng)用工程師高,但是并不是說新手一定要去找嵌入式驅(qū)動(dòng)和系統(tǒng)的職位,我們建議還是先做做嵌入式的應(yīng)用,有個(gè)一兩年的經(jīng)驗(yàn)再轉(zhuǎn)嵌入式驅(qū)動(dòng)的工作。
這些課程該怎么學(xué)呢?你可以按照我上面列舉的相關(guān)一一學(xué)習(xí),可以在網(wǎng)上找一些嵌入式的視頻教程,我們的教程就是從最基礎(chǔ)的C語言,linux基礎(chǔ)等課程開始的,而后是相關(guān)的驅(qū)動(dòng)和系統(tǒng)的課程,C++,最后會(huì)講到ARM體系結(jié)構(gòu)。
最后,嵌入式學(xué)習(xí)最重要的是要堅(jiān)持,不要學(xué)了兩天就放棄了,那永遠(yuǎn)學(xué)不會(huì)。
【基礎(chǔ)條件】
嵌入式行業(yè)因其相當(dāng)高的門檻,這也是造就了嵌入式人才稀缺,身價(jià)水漲船高的主要原因。到底學(xué)習(xí)嵌入式需要具備哪些基礎(chǔ)條件?嵌入式行業(yè)的門檻到底有多高?
1.積極向上的學(xué)習(xí)心態(tài)
想要學(xué)好嵌入式linux專業(yè)技術(shù),學(xué)習(xí)的心態(tài)和方法也是至關(guān)重要得。許多朋友只了解嵌入式Linux方向美好的發(fā)展前景,只關(guān)注高收入、就業(yè)機(jī)會(huì)多等熱點(diǎn),卻忽略了學(xué)習(xí)過程本身。為了能夠讓集中培訓(xùn)的效果發(fā)揮到最佳,建議大家在學(xué)習(xí)開始前更多地去了解嵌入式產(chǎn)品研發(fā)的特點(diǎn)、所需要掌握的技術(shù)規(guī)范和工作要點(diǎn),關(guān)注需具備基礎(chǔ)的補(bǔ)充和學(xué)習(xí),從而為后續(xù)的強(qiáng)化學(xué)習(xí)過程做好心態(tài)上的準(zhǔn)備,畢竟態(tài)度往往決定了最后做事的結(jié)果。
2.不怕苦不怕累的精神
很多人都知道對(duì)于四個(gè)月的時(shí)間去學(xué)好一門技術(shù),是十分具有挑戰(zhàn)性得,同時(shí)也是一個(gè)十分艱苦的過程,因?yàn)樵谡麄€(gè)集中學(xué)習(xí)過程中,既要保證課上認(rèn)真聽講、實(shí)戰(zhàn)演練,又要保證課下繼續(xù)實(shí)戰(zhàn)演練、查閱資料。只有經(jīng)過這種高強(qiáng)度的、實(shí)戰(zhàn)為主的訓(xùn)練,才能夠在比較短的時(shí)間內(nèi)掌握規(guī)范的嵌入式開發(fā)工作流程,讓自己符合嵌入式企業(yè)對(duì)應(yīng)崗位的需求。
3.一定的c語言基礎(chǔ)
在嵌入式linux領(lǐng)域中大部分開發(fā)都會(huì)用到C語言。C語言簡(jiǎn)潔、緊湊、使用方便靈活加上GNU在實(shí)際項(xiàng)目開發(fā)中所做的擴(kuò)展,使得C語言在整個(gè)嵌入式linux開發(fā)過程中起著至關(guān)重要的作用。所以想要學(xué)習(xí)linux,首先要有一定的c語言基礎(chǔ)。雖然目前很多的高校都有c語言相關(guān)的課程,但是還是要提醒一下大家,如果你真的想?yún)⒓?linux的學(xué)習(xí),一定要好好的復(fù)習(xí)一下c語言知識(shí),因?yàn)樵鷮?shí)的c語言基礎(chǔ)嫩更好的保證你后期的學(xué)習(xí)。
-END-