關於嵌入式系統研究方向

2021-08-13 04:03:35 字數 5656 閱讀 8088

嵌入式系統無疑是當前最熱門最有發展前途的it應用領域之一。嵌入式系統用在一些特定專用裝置上,通常這些裝置的硬體資源(如處理器、儲存器等)非常有限,並且對成本很敏感,有時對實時響應要求很高等。特別是隨著消費家電的智慧型化,嵌入式更顯重要。

像我們平常常見到的手機、pda、電子字典、可視**、vcd/***/*** player、數字相機(dc)、數字攝像機(dv)、u-disk、機頂盒(set top box)、高畫質電視(hdtv)、遊戲機、智慧型玩具、交換機、路由器、數控裝置或儀表、汽車電子、家電控制系統、醫療儀器、航天航空裝置等等都是典型的嵌入式系統。

嵌入式系統是軟硬結合的東西,搞嵌入式開發的人有兩類。

一類是學電子工程、通訊工程等偏硬體專業出身的人,他們主要是搞硬體設計,有時要開發一些與硬體關係最密切的最底層軟體,如bootloader、board support package(像pc的bios一樣,往下驅動硬體,往上支援作業系統),最初級的硬體驅動程式等。他們的優勢是對硬體原理非常清楚,不足是他們更擅長定義各種硬體介面,但對複雜軟體系統往往力不從心(例如嵌入式作業系統原理和複雜應用軟體等)。

另一類是學軟體、計算機專業出身的人,主要從事嵌入式作業系統和應用軟體的開發。如果我們學軟體的人對硬體原理和介面有較好的掌握,我們完全也可寫bsp和硬體驅動程式。嵌入式硬體設計完後,各種功能就全靠軟體來實現了,嵌入式裝置的增值很大程度上取決於嵌入式軟體,這佔了嵌入式系統的最主要工作(目前有很多公司將硬體設計包給了專門的硬體公司,稍複雜的硬體都交給台灣或國外公司設計,國內的硬體設計力量很弱,很多嵌入式公司自己只負責開發軟體,因為公司都知道,嵌入式產品的差異很大程度在軟體上,在軟體方面是最有"花頭"可做的),所以我們搞軟體的人完全不用擔心我們在嵌入式市場上的用武之地,越是智慧型裝置越是複雜系統,軟體越起關鍵作用,而且這是目前的趨勢。

從事嵌入式軟體開發的好處是:

(1) 目前國內外這方面的人都很稀缺。一方面,是因為這一領域入門門檻較高,不僅要懂較底層軟體(例如作業系統級、驅動程式級軟體),對軟體專業水平要求較高(嵌入式系統對軟體設計的時間和空間效率要求較高),而且必須懂得硬體的工作原理,所以非專業it人員很難切入這一領域;另一方面,是因為這一領域較新,目前發展太快,很多軟硬體技術出現時間不長或正在出現(如arm處理器、嵌入式作業系統、mpeg技術、無線通訊協議等),掌握這些新技術的人當然很找。嵌入式人才稀缺,身價自然就高,越有經驗**就越高。

其實嵌入式人才稀少,根本原因可能是大多數人無條件接觸,這需要相應的嵌入式開發板和軟體,另外需要有經驗的人進行指導開發流程。

(2) 與企業計算等應用軟體不同,嵌入式領域人才的工作強度通常低一些(但收入不低)。搞企業應用軟體的it企業,這個使用者的系統搞完了,又得去搞下乙個使用者的,而且每個使用者的需求和完成時間都得按客戶要求改變,往往疲於奔命,重複勞動。相比而言,搞嵌入式系統的公司,都有自己的產品計畫,按自己的節奏行事。

所開發的產品通常是通用的,不會因客戶的不同而修改。乙個產品型號開發完了,往往有較長一段空閒時間(或只是對軟體進行一些小修補),有時間進行充電和休整。另外,從事嵌入式軟體的每個人工作範圍相對狹窄,所涉及的專業技術範圍就是那些(arm、rtos、mpeg、802.

11等),時間長了這些東西會越搞越有經驗,賣賣老本,幾句指導也夠讓那些初入道者琢磨半年的。若搞應用軟體,可能下乙個客戶要換成乙個完全不同的軟體開發平台,那就苦了。

(3) 哪天若想創業,搞自已的產品,那麼嵌入式是乙個不錯的主意,這可不像應用軟體那樣容易被盜版。土木學院有乙個叫啟明星的公司開發出乙個好象叫「工程e」的掌上pda,施工技術人員用該pda可當場進行土木概預算和其它土木計算,據說銷路特好。我認識的某大學老師,他開發的飯館用的點菜pda(wince平台,可無線連網和上網),據他說銷路不錯,飯館點點pda讓客戶點菜,多顯派頭檔次。

我記得00級2+2班當年有一組同學在學windows程式設計課程時用vc++設計了乙個功能很強的點菜系統做為課程專案,當時真想建議他們將這個軟體做成pda,估計會有些銷路。這些pda的硬體設計一般都是請其它公司給訂做(這叫「貼牌」:oem),都是通用的硬體,我們只管設計軟體就變成自己的產品了。

從事嵌入式軟體開發的缺點是:

(1) 入門起點較高,所用到的技術往往都有一定難度,若軟硬體基礎不好,特別是作業系統級軟體功底不深,則可能不適於此行。

(2) 這方面的企業數量要遠少於企業計算類企業。特別是從事嵌入式的小企業數量較多(小企業要搞自己的產品創業),知名大公司較少(搞嵌入式的大公司主要有intel、motorola、ti、philip、samsung、sony、futjtum、bell-alcatel、意法半導體、microtek、研華、華為、中興通訊、上廣電等製造類企業)。這些企業的習慣思維方式是到電子、通訊等偏硬專業找人。

(3)有少數公司經常要碩士以上的人搞嵌入式,主要是基於嵌入式的難度。但大多數公司也並無此要求,只要有經驗即可。

若學習嵌入式,顯然應偏重於嵌入式軟體,特別是嵌入式作業系統方面。對於搞嵌入式軟體的人,最重要的技術顯然是(實際上很多公司的招聘廣告上就是這樣寫的):

(1) 掌握主流嵌入式微處理器的結構與原理

(2) 必須掌握乙個嵌入式作業系統

(3) 必須熟悉嵌入式軟體開發流程並至少做過乙個嵌入式軟體專案。

嵌入式軟體方面最重要的課程包括:

(1) 嵌入式微處理器結構與應用:這是一門嵌入式硬體基礎課程,用這門課取代了傳統的「微機原理與介面」課程(目前國內已有少部分高校it專業這樣做了,因為講x86微機原理與介面很難找到實際用處,只為教學而已)。我們說過,嵌入式是軟硬體結合的技術,搞嵌入式軟體的人應對arm處理器工作原理和接**術有充分了解,包括arm的彙編指令系統。

若不了解處理器原理,怎麼能控制硬體工作,怎麼能寫出節省記憶體又執行高速的最優**(嵌入式軟體設計特別講究時空效率),怎麼能寫出驅動程式(驅動程式都是與硬體打交道的)?很多公司招聘嵌入式軟體人員時都要求熟悉arm處理器,將來若同學到公司中從事嵌入式軟體開發,公司都會給你一本該裝置的硬體規格說明書 (*** specification),您必須能看懂其中的記憶體分布和埠使用等最基本的說明(就像x86彙編一樣),否則怎麼設計軟體。有些同學覺得嵌入式處理器課程較枯燥,這主要是硬體課程都較抽象的原因,等我們的嵌入式實驗室10月份建好後,您做了一些實驗後就會覺得看得見摸得著。

還有同學對arm彙編不感興趣,以為嵌入式開發用c語言就足夠了。其實不應僅是將組合語言當成乙個程式語言,學彙編主要是為了掌握處理器工作原理的。乙個不熟悉組合語言的人,怎麼能在該處理器寫出最優的c語言**。

在嵌入式開發的一些關鍵部分,有時還必須寫彙編,如bootloader等(可能還包括bsp)。特別是在對速度有極高要求的場合(如dsp處理器的高速影象採集和影象解壓縮),目前主要還要靠匯編寫程式(我看到過很多公司是這樣做的)。當您在乙個嵌入式公司工作時,在檢視描述原理的手冊時,可能很多都是用彙編描述的(我就遇到過),這是因為很多硬體設計人員只會寫或者喜歡用彙編描述,此時您就必須看懂匯程式設計序,否則軟硬體人員可能就無法交流。

很多嵌入式職位招聘時都要求熟悉彙編。

[小知識] 目前嵌入式處理器常見的有arm、powerpc、mips、motorola 68k、coldfire(冷火)等,但arm佔據了絕對主流(資料說手機中幾乎100%都是arm處理器)。arm是乙個只賣智財權的公司,目前獲得購買了arm cpu核授權許可的大公司很多,包括intel、samsung、amstel、motorola、philip等,他們都在arm cpu核的基礎上進行了一些外圍擴充套件,形成自己的處理器(如samsung s3c2410,motorola i.mxl9328等處理器都是採用arm 9核心,指令一級是相同的)。

而眾多中小公司又購買了這些處理器,設計了各種各樣的開發板,如華恒等國內很多著名嵌入式公司都生產基於samsung s3c2410的開發板,供終端使用者使用或供教學實驗。在arm這個食物鏈上,arm公司是大魚,intel、samsung等公司是小魚,而華恒等則是蝦公尺,終端使用者(想我們要採購嵌入式開發板的實驗室)則是喂蝦公尺的。intel早期生產的是低端arm(strong arm,相當於arm 7),現在轉向主要生產高階arm(即intel xscale處理器,相當於arm 10,主要用在高階pda上,如hp和dell生產的pda都採用intel xscale,**較高)。

目前應用最多的是arm 7和arm 9兩類處理器。 arm 7較便宜,可跑uclinux(是乙個不支援高階記憶體管理功能的嵌入式linux系統)、vxworks、uc/os ii等實時作業系統,但因處理器不帶記憶體管理單元mmu(無記憶體分頁和位址對映機制,所以不能使用虛擬記憶體),所以不能跑windows ce,另外通用linux中的某些記憶體管理功能也不能用在arm 7上。arm 9是乙個帶mmu功能的高階處理器,可跑wince或通用linux的大多數功能。

以上是我的一點了解,可能有不對的地方。我們學院正在建設的嵌入式實驗室(10月底到貨)包括30套arm 7系統(擬採用samsung s3c44b0x開發板,主要用於嵌入式處理器結構、嵌入式linux課程實驗),10套arm 9系統(擬採用samsung s3c2410x開發板,主要用於windows ce課程建設),每套實驗板都配了高速**器,**都很貴(比我們招標的dell pc還貴),很容易損壞,同學應愛護使用。

(2) 嵌入式作業系統類課程

除了wince的實時性稍差外,大多數嵌入式作業系統的實時性都很強,所以也可稱為實時作業系統real time operating system.從事嵌入式的人至少須掌握乙個嵌入式作業系統(當然掌握兩個更好),這在嵌入式的所有技術中是最為關鍵的了。目前最重要的rtos主要包括:

第一類、傳統的經典rtos:最主要的便是vxworks作業系統,以及其tornado開發平台。vxworks因出現稍早,實時性很強(據說可在1ms內響應外部事件請求),並且核心可極微(據說最小可8k),可靠性較高等,所以在北美,vxworks佔據了嵌入式系統的多半疆山。

特別是在通訊裝置等實時性要求較高的系統中,幾乎非vxworks莫屬。vxworks的很多概念和技術都和linux很類似,主要是c語言開發。像bell-alcatel、lucent、華為等通訊企業在開發產品時,vxworks用得很多。

但vxworks因**很高,所以一些小公司或小產品中往往用不起。目前很多公司都在往嵌入式linux轉(聽說華為目前正在這樣轉)。但無論如何,vxworks在一段長時間內仍是不可動搖的。

與vxworks類似的稍有名的實時作業系統還有psos、qnx、nucleus等rtos。

第二類、嵌入式linux作業系統:linux的前途除作為伺服器作業系統外,最成功的便是在嵌入式領域的應用,原因當然是免費、開源、支援軟體多、呼擁者眾,這樣嵌入式產品成本會低。linux本身不是乙個為嵌入式設計的作業系統,不是微核心的,並且實時性不強。

目前應用在嵌入式領域的linux系統主要有兩類:一類是專為嵌入式設計的已被裁減過的linux系統,最常用的是uclinux(不帶mmu功能),目前佔較大應用份額,可在arm7上跑;另一類是跑在arm 9上的,一般是將linux 2.4.

18核心移植在其上,可使用更多的linux功能(當然uclinux更可跑在arm 9上)。很多人**,嵌入式linux預計將佔嵌入式作業系統的50%以上份額,非常重要。缺點是熟悉linux的人太少,開發難度稍大。

另外,目前我們能發現很多教材和很多大學都以ucos/ii為教學用實時作業系統,這主要是由於ucos/ii較簡單,且開源,非常適合入門者學習實時作業系統原理,但由於ucos/ii功能有限,實用用得較少,要學習就應學直接實用的,比如 uclinux就很實用。況且熟悉了linux開發,不僅在嵌入式領域有用,對開發linux應用軟體,對加深作業系統的認識也有幫助,可謂一舉多得。據我所知,目前intel、philip都在大搞arm+linux的嵌入式開發,fujitum則是在自己的處理器上大搞linux開發。

目前在嵌入式linux領域,以下幾個方面的人特別難找,一是能將linux移植到某個新型號的開發版上;二是能寫linux驅動程式的人;三是熟悉linux核心裁減和優化的人。

嵌入式系統設計

課程學習 題目 基於arm嵌入式影象處理系統設計與實現 院系 資訊工程與自動化學院 專業 模式識別與智慧型系統 學生姓名 學號指導老師 2013年08月10日 摘要本文主要設計了一種基於arm的可攜式影象採集處理系統。該系統以arm7 s3c44box 為核心,配上外圍電路以實現影象處理功能,並結合...

嵌入式系統應用

電子資訊工程系實驗報告 課程名稱 嵌入式系統應用 實驗專案名稱 實驗3 gpio 中斷 定時器程式設計實驗時間 2012 10 10 班級 電信092姓名 學號 910706201 t span cr r 12 一 實驗目的 進一步熟悉ads1.2開發環境的使用方法,掌握利用ads1.2開發環境進行...

嵌入式系統設計

課程 設計 題目 基於51微控制器的秒錶的實現 電腦科學與技術王偉 摘要 本次設計內容為以stc89c52微控制器為核心的秒錶,它採用獨立鍵盤輸入 1602液晶顯示的特點。利用微控制器的定時器中斷的原理,用1602液晶以及獨立按鍵來設計秒錶。將軟 硬體有機地結合起來,使其擁有正確的計時 暫停 清零的...