嵌入式介面學習

I-IN發表於2007-11-11

學習嵌入式軟體開發大概有幾個部分.
一,要求精通C語言程式設計,最好有些彙編知識.
二,要求英語功底要好,因為一些晶片手冊都是英語寫的.
三,要有數位電路和類比電路的常識.因為在嵌入式系統後期測試的時候,都是依靠一些硬體裝置進行測試,例如:示波器.
四,要熟悉作業系統.當然,所說的作業系統並不一定是WINDOWS,當中有LINUX,WINCE等,也有一些不同的RTOS,例如三菱和NEC的系統就與LINUX,WINCE和WINDOWS不同,是單任務作業系統,並非實時作業系統.
五,要有良好的軟體工程知識.因為一切開發都是基於軟體工程來實施的.
六,瞭解系統移植.

[@more@]
搞嵌入式開發的人有哪兩類?

搞嵌入式開發的人有哪兩類?嵌入式系統無疑是當前最熱門最有發展前途的IT應用領域之一。嵌入式系統用在一些特定專用裝置上,通常這些裝置的硬體資源(如處理器、儲存器等)非常有限,並且對成本很敏感,有時對實時響應要求很高等。

答案

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

(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開發平臺。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核心裁減和最佳化的人。我院在該嵌入式Linux方面的課程系列是:本科生作業系統必修課,然後是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外,著名的PDA嵌入式作業系統還有Palm OS(因出現很早,很有名)、Symbian等,但在WinCE的強勁衝擊下,Palm和Symbian來日還能有多長?我院可能是全國高校中唯一一家開設專門的“Windows CE嵌入式作業系統“課程的學校,這主要是基於以下原因:我院本身前面便有Windows程式設計課程,同學學過VC++後再學WinCE,非常方便自然,透過學習WinCE同樣也可瞭解嵌入式軟體的一般開發過程,對Linux有懼怕心理的同學也很合適。很顯然,嵌入式Linux永遠不可能替代WinCE,而且將來誰佔份額大還很難講,畢竟很多人更願意接受MS的平臺,就像各國政府都在大力推LINUX已好長時間,但您能看到幾個在PC機上真正使用LINUX的使用者?據我觀察,目前在嵌入式平臺上,LINUX是叫得最響,但還是WinCE實際用得更多.嵌入式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核實現技術,這方面的人目前市場上也很缺。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10339634/viewspace-981723/,如需轉載,請註明出處,否則將追究法律責任。

相關文章