390 likes | 573 Views
嵌入式系統設計. 開課班級:夜四技機電四甲. 微控制器與嵌入式系統. 微控制器 (Microcontroller/Microprocessor) 是一種無所不在的內嵌型控制晶片,舉凡玩具、家電、汽車、房舍等各物各處中都有其存在,負責各種感測、監控工作 。 例如電視、錄放影機等遙控器的內部即有一顆,負責感應操作者的按鈕操控,並將按鈕訊號轉化成紅外線再發送給電視、錄放影機。
E N D
嵌入式系統設計 開課班級:夜四技機電四甲
微控制器與嵌入式系統 微控制器(Microcontroller/Microprocessor)是一種無所不在的內嵌型控制晶片,舉凡玩具、家電、汽車、房舍等各物各處中都有其存在,負責各種感測、監控工作。 例如電視、錄放影機等遙控器的內部即有一顆,負責感應操作者的按鈕操控,並將按鈕訊號轉化成紅外線再發送給電視、錄放影機。 又如熱水瓶、開飲機,其內部亦是由微控器負責感測水溫,並接受使用者的指示是否該加溫、沸騰,同樣的冷氣機的溫控也是用微控器來實現。此外如桌上電腦所用的鍵盤、滑鼠等也各有一顆,負責將敲打的鍵碼、指標的X/Y軸位移偏量等資訊回傳到電腦上。
微控制器與嵌入式系統 微控器的無所不在,因此其用量規模也相當可觀,單就最典型、大宗的8-bit、8051架構的微控器來說,全球一年的出貨需求就高達33億顆,且還有其他仍在強勁成長的16-bit、32-bit或非8051架構。 也因為市場的遍廣,使得微控器不易像其他泛用PC處理晶片般(如CPU、GPU)的形成寡佔、壟斷,研製微控器晶片的業者只要能貼近、切中某一產業或某一應用的控制需求,就能在市場上爭得一席。 但,近年來微控器的技術及市場又有了新需求、新演化,簡單性邏輯已漸難滿足所需,而開始朝智慧型演算的方向提升,且對控制力的要求也愈來愈高,這使得微控器界有了更多新的激盪 。
微控制器與嵌入式系統 從Intel的4004晶片問世4-bit MCU就已經存在,至今依然有許多應用是用4-bit MCU,如電子計算機、電子數字錶、電子玩具、LCD控制、紅外線遙控器、小型家電、電池充電器、來電顯示器(Caller ID)等。 目前MCU業者也仍持續在生產供貨4-bit MCU ,雖然數年前業界出現了「用8-bit MCU取代4-bit MCU」的呼聲 ,但微幅的單價差異即會造成極大的採購總額差,因此,4-bit MCU仍有其存續性,8-bit MCU仍難以完全取代 。 目前就用量規模或是市場銷售總額,8-bit MCU都是目前MCU中的第一主流,勝過16-bit MCU、32-bit MCU及前述的4-bit MCU,且應用的層面也最廣最多。 在8-bit MCU中又以8051架構獲得最多業者所採用 。
微控制器與嵌入式系統 • Microchip的第一代數位信號控制器:dsPIC30F系列,其定位訴求是成為16-bit MCU的超集合,並能兼具部份DSP及32-bit MCU才具備的能力。 當8-bit MCU的效能、資源無法滿足應用時就必須考慮改用16-bit MCU,如數位相機、VCD/DVD播放機之類的應用,或如汽車的安全氣囊、引擎控制、防盜系統等,都需要更快速與大量的運算控制。
微控制器與嵌入式系統 到了32-bit,MCU、MPU幾可合一而談,凡是訴求嵌入式應用的32-bit MPU/CPU多能算是32-bit MCU。因此,即便只論32-bit MCU/MPU的架構選擇都相當多樣,其中ARM架構的MCU目前相當熱門。 至於應用方面,32-bit MCU/MPU已具有充沛運算力及硬體資源,因此應用層面與類型也就特別多,小至PDA、PMP,大至電信機房的交換機、晶圓廠的製程設備都有運用,此外醫療儀器、軍用設施也都有使用。
微控制器與嵌入式系統 綜合來看MCU的趨勢,很明顯的8-bit MCU將會強勢持續,且同時持續用設計彈性與價格調降來爭取應用設計者從4-bit換用8-bit。 在8-bit MCU之外,另一個強勢已在32-bit的層次成形,即是以ARM為主的MCU/MPU,如今已有太多晶片業者採行ARM架構,在開發工具、範例程式、協力廠商等各項支援、資源方面都達堅穩陣容而不易搖撼,類似的強力產業生態已在8-bit MCU上可見,即是8051架構。 16-bit MCU,一方面缺乏如8051、ARM一般的明顯主流架構,另一方面在價格、效能上都難以凸顯其價值, 16-bit MCU的後市十分危急。
嵌入式處理器及開發板 目前嵌入式處理器常見的有ARM、PowerPC、MIPS、Motorola 68K、ColdFire等,但ARM佔據了絕對主流(資料說手機中幾乎100%都是ARM處理器)。ARM是一個只賣智慧產權的公司,目前獲得購買了ARM CPU核授權許可的大公司很多,包括Intel、Samsung、Atmel、Motorola、Philips等,他們都在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較便宜,可跑μclinux(是一個不支援高級記憶體管理功能的嵌入式Linux系統)、VxWorks、μc/os II等即時作業系統,但因處理器不帶記憶體管理單元MMU(無記憶體分頁和位址映射機制,所以不能使用虛擬記憶體),所以不能跑Windows CE,另外通用Linux中的某些記憶體管理功能也不能用在ARM 7上。 ARM 9是一個帶MMU功能的高階處理器,可跑WinCE或通用Linux的大多數功能。本嵌入式實驗室約有25套ARM 9系統(採用Samsung S3C2410x開發板,主要用於嵌入式處理器架構、嵌入式Linux課程實驗),每套實驗板都配了高速仿真器,很容易損壞 。
嵌入式系統 嵌入式系統無疑是當前最熱門最有發展前途的IT應用領域之一。 嵌入式系統用在一些特定專用設備上,通常這些設備的硬體資源(如處理器、存儲器等)非常有限,並且對成本很敏感,有的對即時回應要求很高等。特別是隨著消費家電的智慧化,嵌入式更顯重要。像我們平常常見到的手機、PDA、電子字典、視訊電話、VCD/DVD/MP3 Player、數位相機(DC)、數位攝影機(DV)、USB-Disk、機上盒(Set Top Box)、高畫質電視(HDTV)、遊戲機、智慧玩具、交換機、路由器、數位控制設備或儀表、汽車電子、家電控制系統、醫療儀器、太空/航空設備等等都是典型的嵌入式系統。
嵌入式系統 嵌入式系統是軟硬體結合的產物,參與開發的人有兩類。 一類是學電子工程、通信工程等偏硬體專業出身的人,他們主要是做硬體設計,但有時要開發一些與硬體關係最密切的最底層軟體,如Boot Loader、 Board Support Package(像PC的BIOS一樣,往下驅動硬體,往上支援作業系統),最初級的硬體驅動程式等。 他們的優勢是對硬體原理非常清楚,不足是他們雖然擅長定義各種硬體界面,但對複雜軟體系統往往力不從心(例如嵌入式作業系統原理和複雜應用軟體等)。
嵌入式系統 另一類是學軟體、計算機專業出身的人,主要從事嵌入式作業系統和應用軟體的開發。如果學軟體的人對硬體原理和界面有較好的掌握,也可寫BSP和硬體驅動程式。 嵌入式硬體設計完後,各種功能就全靠軟體來實現了,嵌入式設備的加值很大程度上取決於嵌入式軟體,這佔了嵌入式系統的最主要工作。 嵌入式產品的差異很大程度在軟體上,越是智慧設備越是複雜系統,軟體越起關鍵作用,而且這是目前的趨勢。
從事嵌入式系統開發的好處 目前國內外這方面的人才都很缺乏。一方面,是因為這一領域入門門檻較高,不僅要懂較底層軟體(例如作業系統級、驅動程式級軟體),對軟體專業水準要求較高(嵌入式系統對軟體設計的時間和空間效率要求較高),而且必須懂得硬體的工作原理,所以非專業IT人員很難切入這一領域 另一方面,是因為這一領域較新,目前發展太快,很多軟硬體技術出現時間不長或正在出現(如ARM處理器、嵌入式作業系統、MPEG技術、無線通信協議等),掌握這些新技術的人當然不多。人才缺少,身價自然就高,越有經驗身價就越高。其實人才稀少,根本原因可能是大多數人無機會接觸,這需要相應的嵌入式開發板和軟體,另外需要有經驗的人進行指導開發流程。
從事嵌入式系統開發的好處 與企業管理等應用軟體不同,嵌入式領域人才的工作密集度通常低一些(但收入不低)。開發企業應用軟體的IT企業,這個用戶的系統開發完了,又得去開發下一個用戶的,而且每個用戶的需求和完成時間都得按客戶要求改變,往往疲於奔命,重複勞動。相比而言,開發嵌入式系統的公司,都有自己的產品計畫,按自己的節奏行事。所開發的產品通常是通用的,不會因客戶的不同而修改。一個產品型號開發完了,往往有較長一段空閒時間(或只是對軟體進行一些小修補),有時間進行充電和休息。
從事嵌入式系統開發的好處 另外,從事嵌入式軟體的每個人工作範圍相對狹窄,所涉及的專業技術範圍就是那些(ARM、RTOS、MPEG、802.11等),時間長了這些東西會越開發越有經驗,賣賣老本,幾句指導也夠讓那些初入道者琢磨半年的。 若開發應用軟體,可能下一個客戶要換成一個完全不同的軟體開發平台,那就辛苦了。
從事嵌入式系統開發的好處 哪天若想創業,開發自已的產品,那麼嵌入式是一個不錯的主意,這可不像應用軟體那樣容易被盜版。例如在土木工程上開發出一個 “工程專用的掌上型PDA”,施工技術人員用該PDA可當場進行土木費用估算及其它的土木計算,或開發餐廳用的“點菜PDA”(WinCE平台,可無線連網和上網),讓客戶點菜。這些PDA的硬體設計一般都是由其它公司訂做(OEM),使用通用的硬體,我們只管設計軟體就變成自己的產品了。
從事嵌入式系統開發的缺點 入門起點較高,所用到的技術往往都有一定難度,若軟硬體基礎不好,特別是作業系統級軟體功夫不深,則可能不適於此行。 這方面的企業數量要遠少於PC類企業。從事嵌入式的系統小企業數量較多,知名大公司較少(大公司主要有Intel、Motorola、TI、Philips、Samsung、Sony、Fujitsu、Bell-Alcatel、意法半導體、Microtek、研華等製造類企業)。這些企業的習慣思惟模式是到電子、通信等偏硬專業找人。 有少數公司常需要碩士以上的人開發嵌入式系統,主要是基於系統的難度。但大多數公司也並無此要求,只要有經驗即可。
嵌入式系統學習重點 同學學習嵌入式系統,顯然應偏重於嵌入式系統軟體,特別是嵌入式作業系統方面,應是重點。對於開發嵌入式軟體的人,最重要的技術是︰ 掌握主流嵌入式微處理器的架構與原理 必須掌握一個嵌入式作業系統 必須熟悉嵌入式軟體開發流程並至少做過一個嵌入式軟體項目
嵌入式系統軟體課程 (1) 嵌入式微處理器架構與應用︰ 這是一門嵌入式硬體基礎課程,用這門課取代了傳統的“微機原理與界面”課程。我們說過,嵌入式是軟硬體結合的技術,開發嵌入式軟體的人應對ARM處理器工作原理和界面技術有充分了解,包括ARM的組合語言指令。若不了解處理器原理,怎麼能控制硬體工作,怎麼能寫出節省記憶體又高速執行的最佳代碼(嵌入式軟體設計特別講究時空效率),怎麼能寫出驅動程式(驅動程式都是與硬體打交道的)?
嵌入式系統軟體課程 若同學到公司中從事嵌入式軟體開發,公司都會給你一本該設備的硬體規格說明書 (xxx Specification),你必須能看懂其中的記憶體分佈和I/O埠使用等最基本的說明,否則怎麼設計軟體。有些同學覺得嵌入式處理器課程較枯燥,這主要是硬體課程都較抽象的原因,等做了一些實驗後就會覺得看得見摸得著。還有同學對ARM組合語言不感興趣,以為嵌入式開發用C語言就足夠了。其實不應僅是將組合語言當成一個程式設計語言,學組合語言主要是為了掌握處理器工作原理的。一個不熟悉組合語言的人,怎麼能在該處理器寫出最佳的C語言代碼。
嵌入式系統軟體課程 在嵌入式開發的一些關鍵部分,有時還必須寫組合語言,如Bootloader等(可能還包括BSP)。特別是在對速度有極高要求的場合(如DSP處理器的高速圖像擷取和圖像解壓縮),目前主要還要靠組合語言寫程式。當你在一個嵌入式系統公司工作時,在查看描述原理的手冊時,可能很多都是用組合語言描述的,這是因為很多硬體設計人員只會寫或者喜歡用組合語言描述,此時你就必須看懂組合程式,否則軟硬體人員可能就無法交流。很多嵌入式職位徵人時都要求熟悉組合語言。
嵌入式系統軟體課程 (1)嵌入式作業系統類課程︰ 除了WinCE的即時性稍差外,大多數嵌入式作業系統的即時性都很強,所以也可稱為即時作業系統Real Time Operating System。 從事嵌入式的人至少須掌握一個嵌入式作業系統 (當然能掌握兩個以上更好),這在嵌入式系統的所有技術中是最為關鍵的。
嵌入式系統軟體課程 目前最重要的RTOS主要包括︰ 第一類、傳統經典的RTOS︰ 最主要的便是VxWorks作業系統,以及其Tornado開發平台。VxWorks因出現稍早,即時性很強(可在1ms內回應外部事件請求),並且內核可極小(最小可到8K),可靠性較高等,所以在北美,VxWorks佔據了嵌入式系統的多半江山。特別是在通信設備等即時性要求較高的系統中,幾乎非VxWorkss莫屬。VxWorks的很多概念和技術都和Linux很類似,主要以C語言開發。像Bell-Alcatel、Lucent等通信企業在開發產品時,VxWorks用得很多。但VxWorks因價格很高,所以一些小公司或小產品中往往用不起。目前很多公司都在往嵌入式Linux轉換。但無論如何,VxWorks在一段長時間內仍是不可動搖的。與VxWorks類似的稍有名的即時作業系統還有pSOS、QNX、Nucleus等RTOS。
嵌入式系統軟體課程 第二類、嵌入式Linux作業系統︰ Linux的前途除作為伺服器作業系統外,最成功的便是在嵌入式領域的應用,原因當然是免費、源碼開放、支援軟體多、擁護者眾,這樣嵌入式產品成本會較低。Linux本身不是一個為嵌入式設計的作業系統,不是微內核的,並且即時性不強。目前應用在嵌入式領域的Linux系統主要有兩類︰一類是專為嵌入式設計的已被裁減過的Linux系統,最常用的是µclinux(不帶MMU功能),目前佔較大應用份額,可在ARM7上跑;另一類是跑在ARM 9上的,一般是將Linux 2.4.18內核移植在其上,可使用更多的Linux功能(當然µclinux也可跑在ARM 9上)。
嵌入式系統軟體課程 熟悉了Linux開發,不僅在嵌入式領域有用,對開發Linux應用軟體,對加深作業系統的認識也有幫助,可謂一舉多得。目前Intel、Philip都在大力開發ARM+LINUX的嵌入式開發,Fujitsu則是在自己的處理器上開發Linux。 目前在嵌入式Linux領域,以下幾個方面的人特別需要: 一是能將Linux移植到某個新型號的開發板上; 二是能寫Linux驅動程式的人; 三是熟悉Linux內核裁減和最佳化的人。
嵌入式系統軟體課程 目前最重要的RTOS主要包括︰ 第三類、 Windows CE嵌入式作業系統︰ Microsoft也看準了嵌入式系統的巨大市場,MS永遠是最厲害的,WinCE出來只有幾年時間,但目前已佔據了很大市場比例,特別是在PDA、手機、顯示儀表等界面要求較高或者要求快速開發的場合,WinCE目前已很流行。
嵌入式系統軟體課程 WinCE開發平台主要為WinCE Platform Builder,有時也用EVC環境開發一些較上層的應用,由於WinCE開發都是大家熟悉的VC++環境,所以學過Windows程式設計課程的同學都不會有多大難度,這也是WinCE容易被人們接受的原因,開發環境方便快速,微軟的強大技術支援,WinCE開發難度遠低於嵌入式Linux。對於急於完成,不想拿嵌入式Linux冒險的開發場合,WinCE是最合適了(找嵌入式Linux的人可沒那麼好找的),畢竟公司不能像學生學習那樣試試看,保證開發成功更重要 。
嵌入式系統軟體課程 根據不同的重點 ,WinCE還有兩個特殊版本,一個是MS Pocket PC作業系統,專用於PDA上(掌上電腦),另一個是MS Smart Phone作業系統,用於智慧型手機上(帶PDA功能的手機),兩者也都屬於WinCE平台。 在PDA和手機市場上,除WinCE外,著名的PDA嵌入式作業系統還有Palm OS(因出現很早,很有名)、Symbian等,但在WinCE的強勁衝擊下,Palm和Symbian來日不多了。
嵌入式系統軟體課程 很顯然,嵌入式Linux永遠不可能替代WinCE,而且將來誰佔的比例大還很難說,畢竟很多人更願意接受MS的平台,就像各國政府都在大力推廣LINUX已好長時間,但你能看到幾個在PC上真正使用LINUX的用戶?目前在嵌入式平台上,LINUX是叫得最響,但還是WinCE實際用得更多。 使用嵌入式LINUX可能更多的是一些有長遠產品計畫的公司,為降低成本而進行長遠考慮。 微軟亞洲研究院對WinCE課程有支援計畫,我們也很希望將來能有同學透過微軟的面試去實習。WinCE和多媒體(如MPEG技術)是微軟亞洲工程院目前做得較多的項目領域之一,他們很需要精通WinCE的人。
嵌入式系統軟體課程 總結關於嵌入式作業系統類課程,若你覺得自己功夫較深且能鑽研下去,則可去學嵌入式Linux;若你覺得自己VC++功夫較好且想短期快速地學嵌入式系統開發,則WinCE課程是較好的選擇。 但目前國內很少學校專門開設“Windows CE嵌入式作業系統”課程,主要原因可能是︰已開設了Windows程式設計課程 。
嵌入式系統相關軟體課程 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編解碼 原理會有很大幫助。
開發嵌入式系統相關硬體基礎 對於軟體工程專業的學生,從事嵌入式軟體開發,像數位電路、計算機組成原理、嵌入式微處理器架構等硬體課程是較重要的,主要目地是能看懂硬體工作原理。 已學過電子、通信類專業,有較好的類比電路和單晶片基礎,學嵌入式系統非常合適。嵌入式系統本身就是從單晶片發展過來的,只是單晶片不帶OS,而目前很多嵌入式系統應用越來越複雜,以至不得不引入嵌入式作業系統。另外,為追求更高速的信號處理速度,目前在一些速度要求較高的場合,有不少的DSP演算法,如MPEG壓縮解壓縮演算法等用硬體來實現,這就涉及到HDL數位電路設計技術及其FPGA/IP實現技術,這方面的人目前市場上也很缺。
嵌入式系統驅動程式開發 目前能寫驅動程式的人是非常缺少的(驅動程式也可歸於嵌入式系統範疇),包括桌面Windows中的DDK開發環境和WDM驅動程式。公司時時要推出新產品,每一個新產品出來了,若要能被作業系統所使用,則必須寫驅動程式。寫驅動程式就必須掌握作業系統(如Windows或Linux)的內部工作原理,還涉及到少量硬體知識,難度較大,所以這方面的人很難找。其實開發驅動程式的工作是很舒服的,開發完一個版本就會空一段時間,只有等公司新的晶片推出或新的OS出現後,才需要再去開發新一版程式。