學習嵌入式[轉]

我院同學若學習嵌入式,顯然應偏重於嵌入式軟件,特別是嵌入式操作系統方面,應是我們的強項。對於搞嵌入式軟件的人,最重要的技術顯然是(實際上很多公司的招聘廣告上就是這樣寫的):
(1) 掌握主流嵌入式微處理器的結構與原理
(2) 必須掌握一個嵌入式操作系統
(3) 必須熟悉嵌入式軟件開發流程並至少做過一個嵌入式軟件項目。

嵌入式軟件方面最重要的課程包括:
(1)
嵌入式微處理器結構與應用:這是一門嵌入式硬件基礎課程,我院用這門課取代了傳統的
“微機原理與接口”課程(目前國內已有少部分高校IT專業這樣做了,因爲講x86微機原理
與接口很難找到實際用處,只爲教學而已)。我們說過,嵌入式是軟硬件結合的技術,搞
嵌入式軟件的人應對ARM處理器工作原理和接口技術有充分了解,包括ARM的彙編指令系統
。若不瞭解處理器原理,怎麼能控制硬件工作,怎麼能寫出節省內存又運行高速的最優代
碼(嵌入式軟件設計特別講究時空效率),怎麼能寫出驅動程序(驅動程序都是與硬件打
交道的)?很多公司招聘嵌入式軟件人員時都要求熟悉ARM處理器,將來若同學到公司中從
事嵌入式軟件開發,公司都會給你一本該設備的硬件規格說明書
(xxx
Specification),您必須能看懂其中的內存分佈和端口使用等最基本的說明(就像x86彙編
一樣),否則怎麼設計軟件。有些同學覺得嵌入式處理器課程較枯燥,這主要是硬件課程
都較抽象的原因,等我們的嵌入式實驗室10月份建好後,您做了一些實驗後就會覺得看得
見摸得着。還有同學對ARM彙編不感興趣,以爲嵌入式開發用C語言就足夠了。其實不應僅
是將彙編語言當成一個程序設計語言,學彙編主要是爲了掌握處理器工作原理的。一個不
熟悉彙編語言的人,怎麼能在該處理器寫出最優的C語言代碼。在嵌入式開發的一些關鍵部
分,有時還必須寫彙編,如Bootloader等(可能還包括BSP)。特別是在對速度有極高要求
的場合(如DSP處理器的高速圖像採集和圖像解壓縮),目前主要還要靠彙編寫程序(我看
到過很多公司是這樣做的)。當您在一個嵌入式公司工作時,在查看描述原理的手冊時,
可能很多都是用匯編描述的(我就遇到過),這是因爲很多硬件設計人員只會寫或者喜歡
用匯編描述,此時您就必須看懂彙編程序,否則軟硬件人員可能就無法交流。很多嵌入式
職位招聘時都要求熟悉彙編。

(2) 嵌入式操作系統類課程
除了WinCE的實時性稍差外,大多數嵌入式操作系統的實時性都很強,所以也可稱爲實時操
作系統Real Time
Operating
System.從事嵌入式的人至少須掌握一個嵌入式操作系統(當然掌握兩個更好),這在嵌入式
的所有技術中是最爲關鍵的了。目前最重要的RTOS主要包括:

第一類、傳統的經典RTOS:最主要的便是Vxworks操作系統,以及其Tornado開發平臺。Vx
works因出現稍早,實時性很強(據說可在1ms內響應外部事件請求),並且內核可極微(
據說最小可8K),可靠性較高等,所以在北美,Vxworks佔據了嵌入式系統的多半疆山。特
別是在通信設備等實時性要求較高的系統中,幾乎非Vxworks莫屬。Vxworks的很多概念和
技術都和Linux很類似,主要是C語言開發。像Bell-alcatel、Lucent、華爲等通信企業在
開發產品時,Vxworks用得很多。但Vxworks因價格很高,所以一些小公司或小產品中往往
用不起。目前很多公司都在往嵌入式Linux轉(聽說華爲目前正在這樣轉)。但無論如何,
Vxworks在一段長時間內仍是不可動搖的。與Vxworks類似的稍有名的實時操作系統還有pS
OS、QNX、Nucleus等RTOS。

第二類、嵌入式Linux操作系統:Linux的前途除作爲服務器操作系統外,最成功的便是在
嵌入式領域的應用,原因當然是免費、開源、支持軟件多、呼擁者衆,這樣嵌入式產品成
本會低。Linux本身不是一個爲嵌入式設計的操作系統,不是微內核的,並且實時性不強。
目前應用在嵌入式領域的Linux系統主要有兩類:一類是專爲嵌入式設計的已被裁減過的L
inux系統,最常用的是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內核裁減和優化的人。我院在該嵌入式Linu
x方面的課程系列是:本科生操作系統必修課,然後是Linux程序設計選修課,最後是嵌入
式Linux系統選修課。我院在Linux方面目前已有較強力量,魏老師和張老師熟悉Linux開發
,金老師和唐老師熟悉Linux系統管理。

第三類、 Windows
CE嵌入式操作系統:Microsoft也看準了嵌入式的巨大市場,MS永遠是最厲害的,WinCE出
來只有幾年時間,但目前已佔據了很大市場份額,特別是在PDA、手機、顯示儀表等界面要
求較高或者要求快速開發的場合,WinCE目前已很流行(據說有一家賣工控機的公司板子賣
得太好,以至來不及爲客戶裁減WinCE)。WinCE目前主要爲4.2版(.NET),開發平臺主要
爲WinCE Platform Builder,有時也用EVC環境開發一些較上層的應用,由於WinCE開發都
是大家熟悉的VC++環境,所以我院學過Windows程序設計課程的同學都不會有多大難度,這
也是WinCE容易被人們接受的原因,開發環境方便快速,微軟的強大技術支持,WinCE開發
難度遠低於嵌入式Linux。對於急於完成,不想拿嵌入式Linux冒險的開發場合,WinCE是最
合適了(找嵌入式Linux的人可沒那麼好找的),畢竟公司不能像學生學習那樣試試看,保
證開發成功更重要。根據不同的側重點 ,WinCE還有兩個特殊版本,一個是MS PocketPC操
作系統專用於PDA上(掌上電腦),另一個是MS SmartPhone操作系統用於智能手機上(帶
PDA功能的手機),兩者也都屬於WinCE平臺。在PDA和手機市場上,除WinCE外,著名的PD
A嵌入式操作系統還有Palm OS(因出現很早,很有名)、Symbian等,但在WinCE的強勁衝擊下,Palm和Symbian來日還能有多長?我院可能是全國高校中唯
一一家開設專門的“Windows CE嵌入式操作系統“課程的學校,這主要是基於以下原因:
我院本身前面便有Windows程序設計課程,同學學過VC++後再學WinCE,非常方便自然,通過
學習WinCE同樣也可瞭解嵌入式軟件的一般開發過程,對Linux有懼怕心理的同學也很合適
。很顯然,嵌入式Linux永遠不可能替代WinCE,而且將來誰佔份額大還很難講,畢竟很多
人更願意接受MS的平臺,就像各國政府都在大力推LINUX已好長時間,但您能看到幾個在P
C機上真正使用LINUX的用戶?據我觀察,目前在嵌入式平臺上,LINUX是叫得最響,但還是Wi
nCE實際用得更多.嵌入式LINUX可能更多地是一些有長遠產品計劃的公司,爲降低成本而進
行長遠考慮;
二是微軟亞洲研究院對我院WinCE課程的支持計劃,我們也很希望將來我院能有同學通過微
軟的面試去實習。WinCE和多媒體(如MPEG技術)是微軟亞洲工程院目前做得較多的項目領域
之一,他們很需要精通WinCE的人。

總結關於嵌入式操作系統類課程,若您覺得自己功底較深且能鑽研下去,則可去學嵌入式
Linux;若您覺得自己VC++功底較好且想短平快地學嵌入式開發,則我院的WinCE課程是最
好的選擇。

(3) 嵌入式開發的其它相關軟件課程

搞嵌入式若能熟悉嵌入式應用的一些主要領域,這樣的人更受企業歡迎。主要的相關領域
包括:
A、數字圖像壓縮技術:這是嵌入式最重要最熱門的應用領域之一,主要是應掌握MPEG編解
碼算法和技術,如DVD、MP3、PDA、高精電視、機頂盒等都涉及MPEG高速解碼問題。爲此,
我院已預訂了一位能開設數字圖像處理課程的博士。
B、通信協議及編程技術:這包括傳統的TCP/IP協議和熱門的無線通信協議。首先,大多數
嵌入式設備都要連入局域網或Internet,所以首先應掌握TCP/IP協議及其編程,這是需首
要掌握的基本技術;其次,無線通信是目前的大趨勢,所以掌握無線通信協議及編程也是
是很重要的。無結通信協議包括無線局域網通信協議802.11系列,Bluetooth,以及移動通
信(如GPRS、GSM、CDMA等)。
C、網絡與信息安全技術:如加密技術,數字證書CA等。我院有這方面的選修課。
D、DSP技術:DSP是Digital Signal
Process數字信號處理的意思,DSP處理器通過硬件實現數字信號處理算法,如高速數據採
集、壓縮、解壓縮、通信等。數字信號處理是電子、通信等硬件專業的課程,對於搞軟件
的人若能瞭解一下最好。目前DSP人才較缺。如果有信號與系統、數字信號處理等課程基礎
,對於學習MPEG編解碼原理會有很大幫助。

(4)嵌入式開發的相關硬件基礎

對於軟件工程專業的學生,從事嵌入式軟件開發,像數字電路、計算機組成原理、嵌入式
微處理器結構等硬件課程是較重要的。另外,彙編語言、C/C++、數據結構和算法、特別是
操作系統等軟件基礎課也是十分重要的。我們的主要目地是能看懂硬件工作原理,但重點
應是在嵌入式軟件,特別操作系統級軟件,那將是我們的優勢。
我們的研究生裏有些是學電子、通信類專業過來的,有較好的模擬電路和單片機基礎,學
嵌入式非常合適。嵌入式本身就是從單片機發展過來的,只是單片機不帶OS,而現在很多
嵌入式應用越來越複雜,以至不得不引入嵌入式操作系統。另外,爲追求更高速的信號處
理速度,現在在一些速度要求較高的場合,有不少公司是將一些DSP算法,如MPEG壓縮解壓
縮算法等用硬件來實現,這就涉及到HDL數字電路設計技術及其FPGA/IP覈實現技術,這方
面的人目前市場上也很缺。

題外話
另外,能寫驅動程序的人目前是非常緊缺的(驅動程序也可歸於嵌入式範疇),包括桌面
Windows中的DDK開發環境和WDM驅動程序。公司每時每刻都要推出新產品,每一個新產品出
來了,要能被操作系統所使用,是必須寫驅動程序的。寫驅動程序就必須掌握操作系統(如
Windows或Linux)的內部工作原理,還涉及到少量硬件知識,難度較大,所以這方面的人很
難找。想成爲高手的同學,也可從驅動程序方面獲得突破。我可說一下自己的經歷,三年
前我曾短暫地在一家公司寫過WinCE驅動程序(正是因爲知道這方面的人緊缺,所以纔要做
這方面的事),儘管那以前從未做過驅動程序,應聘那個職位時正是看準了公司是很難招
聘到這方面的人,既然都找不到人,驅動還得有人做,這正是可能有機會切入這一領域的
大好機會。面試時大講自己寫過多少萬行彙編程序,對計算機工作原理如何清楚,簡歷中
又寫着我曾閱讀完兩本關於Windows Driver Model的兩本英文原版書,寫過幾個小型的驅
動程序練習程序(其實根本沒寫過,我們的同學將來千萬不要像我這樣,早練就些過硬功
夫,就不至於淪落到我這等地步,就不用像我那樣去“欺騙”公司了,我這是一個典型的
反面教材),居然一切都PASS(當然最重要的是筆試和麪試問題還說得過去),這隻能說明這一領域找人的困難程度。公司本就未指望找到搞過驅動的人,
腋鮎邢喙鞀〉娜司退悴淮砹恕W雋艘院螅⑾忠膊⒉皇竊躚訓摹F涫蹈闈絛虻墓
ぷ魘嗆蓯娣模閫暌桓靄奼揪突崢找歡問奔洌揮械裙拘碌男酒瞥齷蛐碌腛S出現後
,才需要再去開發新一版驅動,那時有將近一個月時間空閒着在等WinCE .NET Beta版推出
,準備將驅動程序升級到CE .NET上,現在在軟件學院工作整日忙,無限懷念那段悠閒時光

很巧合,最近本人無意中再次體會到了嵌入式的迷人之處。上週我那用了3年的手機終於不
能WORK了。此次更新,除要求有手機常見功能外,最好有MP3功能(現在很多英語聽力都有
MP3文件),最好有英漢詞典,最好還能讀WORD文檔。最後選了個滿足以上條件的最便宜的
手機DOPOD 515(斬了我2.2K,但想想這也算自己對嵌入式事業的支持,這樣便也想開了)
,算得上最低檔的智能手機了。回來一查,手機的about顯示,本手機Processor是ARM,其
OS是MS Smartphone(即WinCE .NET 4.2),這麼巧合,簡直可做爲學習嵌入式課程的產品
案例了(等我們的WinCE課程開得有聲有色後,希望能從微軟研究院搞些Smartphone來開發
開發)。有OS的手機果然了得,金山詞霸、WORD、EXCEL、REGEDIT等居然都有smartphone
版的,PC上的MP3、DOC等居然在download時都可被自動轉換成smartphone格式,真是爽。
完全可用Windows CE自己開發一些需要的程序download到自己的手機上。現在市面銷售PD
A智能手機火爆,MS總是財源滾滾。但我已發現國產的ARM+LINUX手機出現在市面上,價格
只1.2K。

在GOOGLE網上能搜索太多的關於嵌入式系統的討論了,我剛發現一個http://www.embyte.com非常不錯,有很多有經驗者談自己的體會,投入到其中的論壇中,你會切身感到嵌入式
學習的熱潮。

要麼走ARM+WinCE,要麼走ARM+LINUX,要麼走ARM+VXWORKS。每個搞嵌入式的人都可選一條
路,條條大路通羅馬  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章