嵌入式工程師經(jīng)驗(yàn)常識(shí)分享
本文將從技術(shù)和就業(yè)經(jīng)驗(yàn)等角度為即將進(jìn)入嵌入式開(kāi)發(fā)的工程師們,詳細(xì)講述了嵌入式的概念,嵌入式開(kāi)發(fā)之間的異同以及應(yīng)該如何做出選擇。以下都是前輩的一些經(jīng)驗(yàn)之談,希望對(duì)大家有所幫助。
本文引用地址:http://butianyuan.cn/article/148097.htm第一.工程師眼中的“嵌入式系統(tǒng)”
在工程師看來(lái):著重理解“嵌入”的概念,主要從三個(gè)方面上來(lái)理解。
1.從硬件上,將基于CPU的處圍器件,整合到CPU芯片內(nèi)部,比如早期基于X86體系結(jié)構(gòu)下的計(jì)算機(jī),CPU只是有運(yùn)算器和累加器的功能,一切芯片 要靠外部橋路來(lái)擴(kuò)展實(shí)現(xiàn),象串口之類的都是靠外部的16C550/2的串口控制器芯片實(shí)現(xiàn)。目前的這種串口控制器芯片早已集成到CPU內(nèi)部,還有PC機(jī)有 顯卡,而多數(shù)嵌入式處理器都帶有LCD控制器,但其種意義上就相當(dāng)于顯卡。比較高端的ARM類Intel Xscale架構(gòu)下的IXP網(wǎng)絡(luò)處理器CPU內(nèi)部集成PCI控制器(可配成支持4個(gè)PCI從設(shè)備或配成自身為CPI從設(shè)備);還集成3個(gè)NPE網(wǎng)絡(luò)處理器 引擎,其中兩個(gè)對(duì)應(yīng)于兩個(gè)MAC地址, 可用于網(wǎng)關(guān)交換用,而另外一個(gè)NPE網(wǎng)絡(luò)處理器引擎支持DSL,只要外面再加個(gè)PHY芯片即可以實(shí)現(xiàn)DSL上網(wǎng)功能。IXP系列最高主頻可以達(dá)到 1.8G,支持2G內(nèi)存,1G×10或10G×1的以太網(wǎng)口或Febre channel的光通道。IXP系列應(yīng)該是目標(biāo)基于ARM體系統(tǒng)結(jié)構(gòu)下由 intel進(jìn)行整合后成Xscale內(nèi)核的最高的處理器了。
2、從軟件上前,就是在定制操作系統(tǒng)內(nèi)核里將應(yīng)用一并選入,編譯后將內(nèi)核下載到ROM中。而在定制操作系統(tǒng)內(nèi)核時(shí)所選擇的應(yīng)用程序組 件就是完成了軟件的“嵌入”,比如WinCE在內(nèi)核定制時(shí),會(huì)有相應(yīng)選擇,其中就是wordpad,PDF,MediaPlay等等選擇,如果我們選擇 了,在CE啟動(dòng)后,就可以在界面中找到這些東西,如果是以前PC上將的windows操作系統(tǒng),多半的東西都需要我們得新再裝。
3、把軟件內(nèi)核或應(yīng)用文件系統(tǒng)等東西燒到嵌入式系統(tǒng)硬件平臺(tái)中的ROM中就實(shí)現(xiàn)了一個(gè)真正的“嵌入”。
以上的定義是我在6、7年前給嵌入式系統(tǒng)下自話側(cè)重于理解型的定義,書(shū)上的定義也有很多,但在這個(gè)領(lǐng)域范圍內(nèi),誰(shuí)都不敢說(shuō)自己的定義是十分確切的,包括那些專家學(xué)者們,因?yàn)楫吘骨度胧较到y(tǒng)是計(jì)算機(jī)范疇下的一門綜合性學(xué)科。
二.嵌入式系統(tǒng)的分層及對(duì)口專業(yè)要求
嵌入式系統(tǒng)分為4層,硬件層、驅(qū)動(dòng)層、操作系統(tǒng)層和應(yīng)用層。
1.硬件層:是整個(gè)嵌入式系統(tǒng)的根本。如果現(xiàn)在單片機(jī)及接口這塊很熟悉,并且能用C和匯編語(yǔ)言來(lái)編程的話,從嵌入式系統(tǒng)的硬件層走起來(lái)相對(duì)容易,硬件 層也是驅(qū)動(dòng)層的基礎(chǔ),一個(gè)優(yōu)秀的驅(qū)動(dòng)工程師是要能夠看懂硬件的電路圖和自行完成CPLD的邏輯設(shè)計(jì)的,同時(shí)還要對(duì)操作系統(tǒng)內(nèi)核及其調(diào)度性相當(dāng)?shù)氖煜さ?。?硬件平臺(tái)是基礎(chǔ),增值還要靠軟件。
硬件層比較適合于電子、通信、自動(dòng)化、機(jī)電一體、信息工程類專業(yè)的人來(lái)搞。需要掌握的專業(yè)基礎(chǔ)知識(shí),有:?jiǎn)纹瑱C(jī)原理及接口技術(shù)、微機(jī)原理及接口技術(shù)、C語(yǔ)言等。
2.驅(qū)動(dòng)層:這部分相對(duì)而言比較難。驅(qū)動(dòng)工程師不僅要能看懂電路圖,還要能對(duì)操作系統(tǒng)內(nèi)核十分的精通,以便其所寫(xiě)的驅(qū)動(dòng)程序在系統(tǒng)調(diào)用時(shí),不會(huì)獨(dú)占操 作系統(tǒng)時(shí)間片,而導(dǎo)至其它任務(wù)不能動(dòng)行。若不懂操作系統(tǒng)內(nèi)核架構(gòu)和實(shí)時(shí)調(diào)度性、沒(méi)有良好的驅(qū)動(dòng)編寫(xiě)風(fēng)格、按大多數(shù)書(shū)上所說(shuō)添加的驅(qū)動(dòng)的方式,這樣可能連個(gè) 初級(jí)的驅(qū)動(dòng)工程師的水平都達(dá)不到,這樣所寫(xiě)的驅(qū)動(dòng)在應(yīng)用調(diào)用時(shí)就如同windows下我們打開(kāi)一個(gè)程序運(yùn)行后,再打開(kāi)一個(gè)程序時(shí),要不就是中斷以前的程 序,要不就是等上一會(huì)才能運(yùn)行后來(lái)打開(kāi)的程序。想做個(gè)好的驅(qū)動(dòng)人員沒(méi)有三、四年功底,操作系統(tǒng)內(nèi)核不研究上幾遍,不是太容易成功的,但其工資在嵌入式系統(tǒng) 四層中可是最高的。
驅(qū)動(dòng)層比較適合于電子、通信、自動(dòng)化、機(jī)電一體、信息工程類專業(yè)尤其是計(jì)算機(jī)偏體系結(jié)構(gòu)類專業(yè)的人來(lái)搞。當(dāng)然除硬件層所具備的基礎(chǔ)學(xué)科外,還要對(duì)數(shù)據(jù)結(jié)構(gòu)與算法、操作系統(tǒng)原理、編譯原理都要十分精通。
3.操作系統(tǒng)層:對(duì)于操作系統(tǒng)層而言目前可能只能說(shuō)是簡(jiǎn)單的移植,而很少有人來(lái)自已寫(xiě)操作系統(tǒng),或者寫(xiě)出缺胳膊少腿的操作系統(tǒng)來(lái),這部分工作大都由驅(qū) 動(dòng)工程師來(lái)完成。操作系統(tǒng)是負(fù)責(zé)系統(tǒng)任務(wù)的調(diào)試、磁盤和文件的管理,而嵌入式系統(tǒng)的實(shí)時(shí)性十分重要。據(jù)說(shuō),XP操作系統(tǒng)是微軟投入300人用兩年時(shí)間才搞 定的,總時(shí)工時(shí)是600人/年;中科院軟件所自己的女?huà)zHopen操作系統(tǒng)估計(jì)也得花遇幾百人/年才能搞定。因此這部分工作相對(duì)來(lái)講沒(méi)有太大意義。
4.應(yīng)用層:相對(duì)來(lái)講較為容易。如果會(huì)在windows下如何進(jìn)行編程接口函數(shù)調(diào)用,到操作系統(tǒng)下只是編譯和開(kāi)發(fā)環(huán)境有相應(yīng)的變化而已。如果涉及Jave 方面的編程也是如此的。嵌入式系統(tǒng)中涉及算法的由專業(yè)算法的人來(lái)處理的,不必歸結(jié)到嵌入式系統(tǒng)范疇內(nèi)。但如果涉及嵌入式系統(tǒng)下面嵌入式數(shù)據(jù)庫(kù)、基于嵌入式 系統(tǒng)的網(wǎng)絡(luò)編程和基于某此應(yīng)用層面的協(xié)議應(yīng)用開(kāi)發(fā)(比如基于SIP、H.323、Astrisk)方面又較為復(fù)雜,并且有難度了。
三.目標(biāo)與定位
先有目標(biāo),再去定位。
學(xué)ARM,從硬件上講,一方面就是學(xué)習(xí)接口電路設(shè)計(jì),另一方面就是學(xué)習(xí)匯編和C語(yǔ)言的板級(jí)編程。如果從軟件上講,就是要學(xué)習(xí)基于ARM處理器的操作系 統(tǒng)層面的驅(qū)動(dòng)和移植了。這些對(duì)于初學(xué)者來(lái)說(shuō)必須明確,要么從硬件著手開(kāi)始學(xué),要么從操作系統(tǒng)的熟悉到應(yīng)用開(kāi)始學(xué),但不管學(xué)什么,只要不是純的操作系統(tǒng)級(jí)以 上基于API的應(yīng)用層的編程,硬件的寄存器類的東西還是要能看懂的、基于板級(jí)的匯編和C編程還是要會(huì)的。因此針對(duì)于嵌入式系統(tǒng)的硬件層和驅(qū)動(dòng)層的人來(lái) 說(shuō),ARM的接口電路設(shè)計(jì)、ARM的C語(yǔ)言和匯編語(yǔ)言編程及調(diào)試開(kāi)發(fā)環(huán)境還是需要掌握的。
對(duì)于初學(xué)者必然要把握住方向,自己的目標(biāo)是什么,自己要在哪一層面上走。然后再著手學(xué)習(xí)才比較好,與ARM相關(guān)的嵌入式系統(tǒng)的較為實(shí)際的兩個(gè)層面硬件層和驅(qū)動(dòng)層,不管學(xué)好了那一層都會(huì)很有前途的。
如果想從嵌入式系統(tǒng)的應(yīng)用層面的走的話,可能與ARM及其它體系相去較遠(yuǎn),要著重研究基嵌入式操作系統(tǒng)的環(huán)境應(yīng)用與相應(yīng)開(kāi)發(fā)工具鏈,比如WinCe操 作系統(tǒng)下的EVC應(yīng)用開(kāi)發(fā) (與windows下的VC相類似),如果想再有突破就往某些音視頻類的協(xié)議上靠,比如VOIP領(lǐng)域的基于SIP或H.323協(xié)議的應(yīng)用層開(kāi)發(fā),或是基于 嵌入式網(wǎng)絡(luò)數(shù)據(jù)庫(kù)的開(kāi)發(fā)等等。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論