嵌入式系統/簡介
嵌入式技術(Embedded Technology)現在正處於全盛期,其可用技術帶來了巨大的社會財富。然而,大多數的嵌入式系統工程師(Embedded Systems Engineer)都會有類似的抱怨:在互聯網上,關於這項技術的多種多樣的設計和實踐的資料少之又少。一些大公司的技術壟斷行為被認為是罪魁禍首,如晶片廠商、PC廠商、手機廠商。他們對本公司擁有的硬件資料、設計方法等嚴格保密,以打壓競爭對手。
在開始學習這本書之前,首先了解什麼是嵌入式系統(Embedded System),為什麼使用它們,以及它們如何被應用,是至關重要的。此教科書將嘗試覆蓋大量相關主題,它們中有的只應用於嵌入式系統,也有的適用於幾乎所有類型的計算機。就此而言,這本教科書的材料可能會與其他專門領域的維基教科書重疊,比如低級計算(Low-level Computing),匯編語言(Assembly Language),C語言(C Language),計算機結構(Computer Architecture)等。但我們將會首先介紹基本知識,試着解答一些問題,以便您能夠輕鬆地開始學習專門領域的維基教科書。
什麼是嵌入式系統
編輯嵌入式系統是嵌入式計算機系統的簡稱。顧名思義,它是一種嵌入在設備/系統內部,為特定應用而設計開發的專用計算機系統。英國電氣工程師協會(Institution of Electrical Engineers,IEEE)從應用的角度定義嵌入式系統是「控制、監視或協助設備、機器、工廠運行的裝置」(devices used to control, monitor, or assist the operation of equipment machinery or plants)。
通常,嵌入式系統有以下特徵:
- 專用性——嵌入式系統與具體應用緊密結合,具有很強的專用性。它按照特定的應用需求進行設計,完成預定的任務。正因為目標明確,所以嵌入式系統往往能做到最優化的設計和剪裁。因此其運行效率一般很高。
- 隱蔽性——嵌入式系統通常是非計算機系統/設備的一部分,隱藏在後者內部,不為人知。人們一般只關注宿主系統/設備的功效、性能及操作使用,而並不關注隱藏在其中的嵌入式系統。
- 實時性——嵌入式系統廣泛用於過程控制、數據採集、通信傳輸等領域,承擔着測量、控制、調節、報警等要求及時作出反應的任務。因而嵌入式系統一般都有一定的實時性,即:必須在一個可預測和有保證的時間段內對外部事件作出正確反應。按照對實時性的要求,嵌入式系統還可以分為非實時系統(對響應時間基本沒有要求,如電子書中的嵌入式系統)、軟實時系統(對響應時間有一定要求;但即使系統的響應時間未能達到要求,也不會產生嚴重後果,如遙控玩具中的嵌入式系統、火車站台上的列車時刻表顯示系統)和硬實時系統(對響應時間有嚴格的要求;一旦系統的響應時間未能達到要求,便可能產生嚴重後果,如數控機床、汽車和飛機上的檢測控制系統)三大類。
- 高可靠性——嵌入式系統大多面向控制應用,任何誤動作都可能帶來嚴重後果。因此系統的可靠性十分重要。前面提到的實時性也是可靠性的一部分。
- 軟件固化——嵌入式系統是軟硬件高度結合的產物,其中的軟件一般都固化到只讀存儲器(ROM)中。用戶一般無法變動嵌入式系統的程序功能。
- 資源受限——嵌入式系統通常都有小型化、輕量化、低功耗和低成本的要求。因此其軟硬件資源會受到嚴格限制。大多數嵌入式系統的軟硬件都剛好僅能滿足宿主設備的所有需求。由於這一特性,嵌入式系統的開發有着苛刻的要求。
嵌入式系統可以被定義為一個為某個特定任務而設計的控制系統或者計算機系統。通常的例子包括:MP3播放器、飛機導航系統和入侵報警系統等。嵌入式系統也可以被認為是具有單一目的的計算機。
嵌入式計算機是什麼
編輯這是一個困難的問題。嵌入式計算機(Embedded Computer)的確切概念並不是很容易理解的。然而,「什麼不是嵌入式計算機」的答案卻簡單易懂。嵌入式計算機通常指被應用於特殊目的的計算機,而計算機本身不是主要目的。相反地,通常的PC、伺服器和大型機的主要目的即是提供計算能力,目的在於計算機本身,因此不能稱為嵌入式計算機。嵌入式系統通常目的單一,而通用計算機往往具有多種功能與目的。
嵌入式計算機很常見,每個家庭都能找到一些應用的例子。比如洗衣機、彩色電視機、DVD機,甚至電子鐘。每個嵌入式計算機的應用產品都有數字時鐘(Digital Clock,與傳統的鐘表不同,它實際上是一個微型的晶體震盪器,沒有指針或者顯示屏)。現代的汽車都有數十塊甚至數百塊微處理器,它們都屬於嵌入式計算機。這些晶片被用來控制汽車完成多種任務,如ABS(Anti-lock Brake System)、點火、車載多媒體設備等。嵌入式計算機從傳感器獲得信號,然後控制電機、液壓系統等完成一定功能。
嵌入式計算機通常沒有通用接口(Generic Interface)。即便嵌入式系統包含鍵盤、控制面板和LCD顯示器,它們也幾乎不會支持多種多樣的輸入輸出方式。一個典型的例子是需要輸入密碼的防盜門,它擁有小鍵盤和LCD顯示器。您不會在它上面找到USB接口或者HDMI接口。
嵌入式計算機與通用計算機
編輯通用計算機通常指PC、伺服器、工作站、小型機、大型機、超級計算機等以計算作為主要目的,應用廣泛而非單一用途的計算機。通用計算機也能被應用到嵌入式系統中。比如一些化工設備使用PC作為中央控制器,一些智能機械人使用通用計算機的CPU和主板。
嚴 格劃分嵌入式計算機與通用計算機越來越困難。由於個人數碼助理(PDA,Personal Digital Assistant)及手持設備在硬件上設計的特性,即使在軟件上的擴充性比其他裝置來得好,但普遍被認為是嵌入式裝置。但是這個定義也逐漸模糊。舉例來 說,Intel 公司的凌動(ATOM)微處理器原本是為了流動互聯網設備(MID,Mobile Internet Device)這一類的嵌入式系統設計的,但是現在更多的被應用於上網本(Netbook),而上網本屬於使用Windows或者Linux的個人計算 機,因此嵌入式系統的定義又更模糊了。
從本質上,嵌入式計算機和通用計算機的界限是模糊的,兩個概念具有重疊。在實際過程中對其進行區分,主要依據是硬件和軟件資源。
嵌 入式系統的核心是由一個或幾個預先編程好以用來執行少數幾項任務的微處理器或者微控制器組成。與通用計算機能夠運行用戶選擇的軟件不同,嵌入式系統上的軟 件通常是暫時不變的;所以經常稱為「固件」。通用計算機的軟件資源是可擴展的,通用的;嵌入式計算機的軟件資源是單一的,專用的。比如典型的嵌入式系統——MP3播放器,只具有播放音樂和管理音樂文件的程序,而我們的筆記本電腦或者智能手機,不僅可以播放音樂,還可以瀏覽網頁,收發郵件,玩遊戲,其功能取決於安裝的軟件。
一 般的,嵌入式計算機的硬件資源(處理器速度、內存、總線寬度等)不及通用計算機。由於只需完成單一任務,且受到功耗和散熱量的限制,嵌入式系統的硬件資源 高度集約化。比如,一般家用電器中的微控制器為8位,主頻幾MHz,擁有幾KB的ROM;而桌上型電腦通常採用32位或64位CPU,主頻1~4GHz, 擁有數十或數百GB硬盤存儲。
實時系統
編輯大多數嵌入式系統是時序應用(Time Critical Application),這意味着對嵌入式系統工作來說時間非常重要。判斷一個操作的結果的方法是,它們有沒有在特定時間框架內發生。飛機中的自動駕駛 儀就是一個時序嵌入式系統。如果自動駕駛儀探測到飛機由於某種原因失速,它就會採取一些步驟糾正錯誤。整個過程只需要數毫秒,如果時間過長就會產生災難性的後果。
實時系統被定義為:系統的正確性嚴格地取決於其能否在規定時間限制內做出響應,則這個系統是實時系統。
因此實時系統具有一個突出特點——延遲即失敗。以汽車防抱死制動系統(ABS, 德語Antiblockiersystem)為例,系統必須在規定的時間內釋放剎車,不能有任何延遲;如果到達時間限制仍未釋放剎車,將視為失敗,重新執 行釋放剎車。反之,如果採用非實時系統,可能由於系統繁忙,一些任務在等待處理,釋放剎車的任務一直在等待。這個等待時間存在不確定性,就可能會導致剎車 無法釋放,車輪鎖死,發生事故。
嵌入式系統被用來做什麼
編輯嵌入式系統的應用幾乎是沒有界限的,因為每一天都會有基於嵌入式計算機的新產品上市。最近幾年,硬件(如微處理器、微控制器、FPGA晶片)開始變得越來越廉價。所以,當需要一種控制系統的時候,人們會明智地買一塊通用晶片,然後給它編寫程序。而傳統的支持單一功能的電路、專用晶片則需要多得多的時間和費用。很多嵌入式計算機甚至擁有大量庫(Librarie),因此編寫程序會非常容易。
從實際應用的角度來看,計算機和嵌入式系統有一個主要的區別。嵌入式系統通常需要提供實時響應(Real-Time Response)。實時系統(Real-Time System)被定義為其準確性依賴於響應時機的系統。這類系統的實例有飛機的飛行控制系統,核反應爐的檢測系統等。對這些系統來說,響應的延遲是致命性的錯誤。而更加寬鬆的實時系統可以接受微小的延遲。例如火車站台上的列車時刻表顯示系統。