何謂嵌入式系統?

嵌入式系統的定義

根據英國電機工程師協會的定義,嵌入式系統為控制、監視或輔助設備、機器或甚至工廠運作的裝置。它具備了下列的特性:
  1. 通常執行特定功能,與一般桌上型辦公設備或資料庫伺服系統有很大的區別。
  2. 以微電腦與周邊構成核心,其規模可由如8051單晶片到先進的x86晶片系統不等。
  3. 嚴格的時序與穩定度要求,例如在機器控制上,稍有不慎則可能失去控制,釀成災害。
  4. 全自動操作循環,例如斷電時的緊急處理,使復電後仍能回復原有的狀態。
嵌入式系統幾乎涵蓋所有微電腦控制的裝置,例如個人電腦中的磁碟機或光碟機的伺服控制與資料存取介面等。在美國工程發展的歷史上,1949年由J. Presper Eckrt及John Mauchly完成的BINVAC ( BINary Automatic Computer ) ,其中一項目的為操控長程飛彈,1944年由Jay W. Forrest 開始的WHIRLWIND計劃 ( 於1951年完成 ),則製作出全美第一台即時電腦 ( real-time computer ),其目的為指揮軍用飛行器的訓練設備。我們可以說,嵌入式系統設計的技術發展與微電腦技術的演進是相輔相成的,其中嵌入式系統的需求刺激,更是微電腦今日成功的主要動力
您如果想要知道世界上頂尖的嵌入式系統設計族群在說甚麼語言,或是目前熱衷於追求甚麼,請參閱Embedded System Programming

嵌入式系統設計的等級

嵌入式系統的設計可說是小規模的系統整合,較偏重於技術層面,不若系統整合,往往人的整合因素取決系統的成敗。以今日電子資訊的版圖而言,嵌入式系統的設計概分為幾個層次。我們以製作一個MP3 Player/Recorder來說明。假設此一裝置包含MP3壓縮/解壓縮技術MP3資料儲存及讀取音樂撥放與錄音,以及使用者介面四大部分。之所以取此例子,是因為音樂不能間斷,因此有一定程度的時序要求。
  1. 以現有的MP3壓縮/解壓縮晶片為主軸。此時所設計的微電腦,大部分的時間在作資料儲存及搬運的動作,其目的在〝服侍〞該MP3晶片及收集使用者命令。雖有即時性需求。但只要時間來得及就夠,微電腦本身無須複雜。
  2. 以韌體實現MP3功能。這時候設計的變化就相當多了。簡單的設計是使用如  1. 之Master-Slave架構,以一計算功能較強的晶片執行MP3計算。進一步的設計是使用單晶片。完全以韌體作到所述的四項功能。
  3. MP3韌體實現的差異。由於MP3並無規範如何執行壓縮及解壓縮。因此韌體的實現端看設計者的功力,如程式最佳化、定點數與浮點數的問題,以及可否運用一些技巧簡化計算流程等。注意嵌入式系統設計並非重新發明輪子,但必須遵守工程設計的原則──以最少的資源達到最大的效能。
  4. 是否使用即時多工核心。雖說這樣的一個小裝置牽涉的工作不多,但各項工作間有一定程度的interlock,也就是時序與優先權的關係。使用多工核心的目的,是將CPU資源的分配,與實際工作內容分開,並利用核心將韌體模組化,便於維護及管理。
  5. 是否朝SOC ( System On Chip ) 的方向發展。由於ASIC的設計製造日趨成熟,嵌入式系統的整合功能,在一定生產規模下,也可是ASIC的一部份,由於ASIC的設計彈性及初期成本仍不如使用微電腦,因此目前在較複雜概念系統的實現上,仍有些困難。
由這一例子可見,嵌入式系統的設計包含核心技術部分及整合部分。核心技術為其靈魂,但整合部分為其肉體。沒有核心技術實現能力,則沒有競爭力﹔缺乏有效的整合,則造成無謂的時間及成本的浪費,同樣的沒有競爭力。我們說一個人有三頭六臂,一組好的嵌入式系統設計團隊,就是要具備三頭六臂。

網路世代下的嵌入式系統

人們或許忙著注意網際網路對人的生活及消費行為的革命。但網路的發達將使幾乎所有具備微電腦的設備變成名符其實的嵌入式系統。想像一下你家裡的電冰箱微電腦系統與網路超級市場的電腦連線,在牛奶不足的時候自動訂貨﹔又如實際一點的,我們已經可以透過同步網路,使相距數百公尺的兩顆伺服馬達同步運轉

從嵌入式系統的設計上,這意味著我們將可以輕易的透過網路,實現並行處理的功能。也同時代表嵌入式的特定功能,將因網路的發達而可隨時更改 ( 如工業機台的遠端維修與更新 )。

從許多微控制器將網路功能 ( 不一定是乙太網路 ) 內建的趨勢看,嵌入式系統設計工程師若不具備網路的觀念,將無法趕上這一波的革命•••

嵌入式系統的管家──即時多工核心

    即時多工核心 (real-time multi-tasking kernel) 是即時多工作業系統(Real-time Multi-tasking Operating System, 簡稱 RTOS) 的心臟部分。它主要負責的工作是掌管CPU時間的分配,記憶體的管理,以及作業系統下各工作之間的連繫。講到作業系統,一般人通常習慣於微軟的作業平台。但以專業的眼光來看,微軟的作業平台並非RTOS,對大多數的嵌入式應用而言是不夠的。其次,作業系統的一般設計理念是針對一般性的使用,因此附加許多如檔案系統模組等,使其大小動輒上百Mb。這對需精簡有效的嵌入式系統而言是龐大負擔。因此直接取即時多工作業系統的核心來整合是最直接的辦法。事實上除了微軟的作業平台外,其他大部分即時多工作業系統均已具有scalable的功能,也就是說視應用需求,該系統大小可由數百Kb至數百Mb。

    以Intel系列晶片而言,目前成長最快的非微軟作業系統首推Linux,由於是免費且open source,已有數個團隊將其核心修改以具備real-time能力。同時熟悉其安裝程序及核心運作機制後,可將其縮小至數百Kb還具備網路功能。對嵌入式系統而言,無疑是最理想的作業平台。至於非Intel系列晶片,其即時多工核心目前仍為百家爭鳴(相信未來也是),根據經驗,由於非Intel系列晶片嵌入式系統硬體變化太大,無法有一個即時多工核心敢號稱不用修改即可任意安裝使用。因此嵌入式系統設計團隊必須有能力修改或甚至創造即時多工核心,以強化競爭力。本實驗室於1995年即出版全台灣第一本以C/C++建構即時多工核心的專書。並實際在PC上實現此核心。同時亦針對德州儀器公司TMS320系列DSP晶片撰寫實用之micro kernel。

後PC時代的來臨

不容諱言的,由於個人電腦(PC)的強勢發展,在80與90年代,只要是稍微複雜的系統如工業控制器或甚至POS(point-of-sale)等,沒有人不會想到用PC為整合平台。這個潮流下,對嵌入式系統的發展有兩個重要的限制,一是Intel系列晶片的倚賴,其次是微軟作業平台的遷就(compromise)。許多嵌入式系統的發展均以具創意的小規模市場為起點,在"西瓜效應"下,很難抵抗潮流的強大壓力。像是近親繁衍般,Intel系列晶片與微軟作業平台不斷製造出來的應用,就像同一家族的後代,長相相似。從技術的發展來說,這往往是創意的殺手

這不是單就使用習慣與資源而言,想像有一個人設計了一種非微軟、非Intel的嵌入式系統,雖然具有創意,但由於其市場規模無法與個人電腦相比,其使用的作業系統,微處理器及週邊晶片,甚至整個電路板的成本,均較為昂貴。因此在後續發展上,前途暗淡。現實一點的會說,這個人是傻子,螳臂如何擋車?

事實上世界上存在許多這種傻子,而後PC時代的來臨,當Intel與微軟的組合不再是壟斷性的解決方案時,絢爛的嵌入式系統,才算誕生。這些傻子,不論是作業系統提供者(如 Linux, QNX, Psos, OS9, VRTXoc, JAVA等等),微晶片製造商(如 java chip, DSP),研發單位,技術服務,甚至名不見經傳的garage company,都將有大展身手的機會。

但由於PC-based的仰賴已深,短期內當你打開一個嵌入式系統,仍然會發現Intel的標誌,而其Flash ROM內燒錄的是Windows CE。但在更開放,更公平的競爭環境下,未來期待是百家爭鳴的時代,也使嵌入式系統設計的技術更上一層樓。