第1章 嵌入式軟件概述
隨著計算機技術的發展,嵌入式系統的地位和作用顯得越來越重要,嵌入式軟件也形成了一個比較完整的體系。本章討論嵌入式系統和嵌入式軟件的一些基本概念。主要內容包括:什么是嵌入式系統、什么是嵌入式軟件、嵌入式系統和嵌入式軟件的特點、嵌入式軟件的組成、嵌入式軟件的發展過程、嵌入式軟件的應用領域等。
1.1 嵌入式系統的概念與特點
在我們日常的生活和工作中,都會接觸和使用到很多嵌入式系統。比如,我們所使用的手機中有一個嵌入式系統,用來聽音樂的MP3播放器中也有一個嵌入式系統。各種自動化程度較高的工業設備也都是由嵌入式系統控制的。那么究竟都有哪些東西屬于嵌入式系統的范疇呢?一個嵌入式系統又都有哪些特性呢?本節就來回答這些問題。
1.1.1 什么是嵌入式系統
嵌入式系統也叫嵌入式計算機,可對它做如下定義:嵌入式系統是指那些以應用為中心,以計算機技術為基礎,為適應應用對功能、可靠性、成本、體積、功耗的嚴格要求,可對系統的軟件和硬件進行配置的專用計算機系統。
嵌入式系統通常會帶有一些專用的外部設備,而不像通用計算機那樣一般只有顯示器、鍵盤、鼠標、打印機等一些外部設備。這些外部設備是為完成某種特定的功能而設計的,如一些專用的機械裝置。
嵌入式系統和嵌入式系統所控制的對象是兩個不同的概念。嵌入式系統只是一臺專用的計算機,而嵌入式系統所控制的對象則是一個有某種特定用途的設備或系統。在嵌入式系統所控制的對象規模很大時這兩個概念不會發生混淆。例如,我們只會把控制電梯的專用計算機稱為嵌入式系統,而不會把整部電梯稱為嵌入式系統。但當嵌入式系統所控制的對象規模很小時,兩者間的界限常常會變得模糊不清。例如,在一部手機中我們很難說清楚哪些部分應當屬于控制手機的嵌入式系統的范圍,而哪些部分又不屬于其范圍。手機中的通信部件,可以認為是嵌入式系統的外部設備,也可以認為是另外一個獨立的通信系統的一部分。即使在某些情況下難以區分,我們也不能把嵌入式系統和嵌入式系統所控制的對象這兩個概念混為一談。
嵌入式系統的應用面非常之廣,在數量上遠遠超過了通用計算機。例如,在一臺現代化程度較高的汽車上就包含有很多個嵌入式系統。汽車的發動機、ABS、安全氣囊、音響、導航器就都是由嵌入式系統控制的。通用計算機的外部設備中也離不開嵌入式系統,鍵盤、鼠標、軟驅、光驅、硬盤、顯示卡、顯示器、網卡、調制解調器、聲卡、打印機、掃描儀、USB集線器等設備中都包含有嵌入式系統。
如圖1.1所示,嵌入式系統由中央處理器、存儲器、外部接口與設備、軟件4個部分所組成。
中央處理器是嵌入式系統的核心,與通用計算機不同,嵌入式系統的中央處理器必須解決提高集成度和降低功耗等一系列問題。在實際應用中,嵌入式系統的處理器可以分成嵌入式微處理器、微控制器、嵌入式DSP處理器、片上系統等不同的類型。
外部接口與設備是嵌入式系統與外部相連接的通道。在嵌入式系統中,常見的外部接口有RS-232、RS-422、RS-485、USB、IrDA、I2C、以太網、IEEE1394等。常見的外部設備有閃存卡之類的外部存儲設備和單手鍵盤、輸入筆、LCD之類的輸入/輸出設備。在很多嵌入式系統中還帶有與系統用途緊密相關的專用外部接口與設備。
存儲器用于存儲系統中的程序代碼和數據。在嵌入式系統中,存儲器有3種類型:RAM、ROM及可在線寫入非易失存儲器。RAM家族中有兩個成員:靜態RAM(SRAM)和動態RAM(DRAM)。ROM家族中有3個成員:掩膜ROM、可編程ROM(PROM)、擦寫可編程ROM(EPROM)。可在線寫入非易失存儲器的主要成員有:EEPROM、NVRAM(Non Volatile RAM)和閃存。可在線寫入非易失存儲器的特點是既能隨意寫入、擦除,又能在斷電后保持數據不丟失。
嵌入式系統中的軟件分為3個層次:操作系統、支撐軟件和應用軟件。其中操作系統和支撐軟件是基礎,應用軟件則是最能體現整個嵌入式系統的特點和功能的部分。

圖1.1 嵌入式系統的組成
1.1.2 嵌入式系統的特點
從嵌入式系統定義可以看到,嵌入式系統實際上是一種專用的計算機系統。與通用計算機系統相比,它主要有系統專用性強、系統實時性高、硬件與軟件的互相依賴性強、采用專用的嵌入式CPU、多種技術間結合更加緊密、系統對用戶透明、系統資源有限等一系列特點。
1. 系統專用性強
嵌入式系統是針對具體應用專門設計的計算機系統。系統中的硬件和軟件與具體應用密切相關。應用需求略有變化,往往就需要對系統的硬件和軟件進行較大更改。解決不同應用問題的嵌入式系統更是有很大的差別。
2. 系統實時性高
實時系統指對外部事件能在限定的時間內進行處理的系統。嵌入式系統中的相當一部分是實時系統,高實時性是這些系統的基本要求。
3. 硬件與軟件的互相依賴性強
嵌入式系統的專用性決定了它的硬件與軟件的相互依賴性很強。兩者應共同進行設計,以求達到共同完成預定功能的目的,并滿足性能、成本和可靠性方面的要求。
4. 采用專用的嵌入式CPU
嵌入式系統的CPU與通用計算機的CPU的最大不同之處是嵌入式系統的CPU一般是為某一特定用戶集合專門設計的。它通常都具有功耗低、體積小、集成度高等特點,能夠把許多在通用計算機上由板卡完成的功能集成在芯片內部,從而有利于嵌入式系統的小型化和增強系統的可移植能力。
5. 多種技術結合更加緊密
嵌入式系統是計算機技術、半導體技術、電子技術、機械技術與各個行業的具體應用相結合的產物。通用計算機系統雖然也離不開上述這些技術,但它們相互結合的緊密程度不如嵌入式系統。
6. 系統對用戶透明
嵌入式系統的外形與通用計算機系統有很大的不同。它的輸入裝置可能不是鍵盤、鼠標之類的設備。有的嵌入式系統可能就沒有用來輸出的顯示裝置。用戶可能根本不知道他所使用的設備中有一個嵌入式計算機系統存在。即使知道用戶也不會去關心這個計算機系統的設計細節,更不會、也不能去改變它。
7. 系統資源有限
嵌入式系統為了達到結構緊湊、堅固可靠和盡可能降低系統成本的目的,導致其存儲容量和CPU的處理速度都比較有限。
1.1.3 計算機技術的兩大分支
計算機系統可分為通用計算機系統和嵌入式系統兩類,與此相對應計算機軟件也分成了通用軟件和嵌入式軟件兩類。通用軟件指運行于通用計算機系統之上的軟件。嵌入式軟件指運行于嵌入式計算機系統之上的軟件。
通用計算機系統和嵌入式系統是現代計算機技術發展的兩個分支。這兩個分支有著不同的技術要求與技術發展方向。通用計算機系統的技術要求是高速的數值計算能力、海量的存儲能力;技術發展方向是速度的無限提升,存儲容量的無限擴大。而嵌入式計算機系統的技術要求則是對嵌入對象進行智能控制的能力;技術發展方向是提升滿足與嵌入對象密切相關的性能要求與可靠性要求能力。
通用計算機系統和嵌入式系統兩個技術分支的形成經歷了一個逐漸演變的過程。在嵌入式系統發展的初期,這種態勢并不明顯。那時專門用于研發嵌入式系統及其技術的費用比較有限。嵌入式系統主要是應用在工業控制、軍事等少數領域,使用量不多,創造的產值相對于通用計算機系統來說很少,離普通人的日常生活很遠,對社會生產和生活產生的影響比較有限。因此在整體上難以與通用計算機系統相匹敵。
自從20世紀90年代中期以來,對嵌入式系統的研究與應用得到了長足的發展。專門用于研發嵌入式系統及其技術的費用已經相當可觀。嵌入式系統在廣泛的領域中得到了應用,使用數量已經遠超過通用計算機系統,創造的產值也與通用計算機系統不相上下。這時它已不再僅僅與少數專業人員有聯系,而是與普通人的日常生活息息相關。我們每天使用的手機、MP3播放器都與嵌入式系統密不可分。嵌入式系統已經對社會生產和生活產生了巨大的影響,在整體上已經完全可以與通用計算機系統相匹敵。
1.1.4 嵌入式系統的類型
與通用計算機系統相比,嵌入式系統的用途更加廣泛,系統的形態也更加多樣化。因此嵌入式系統的分類方法也是多樣的。可以按照嵌入方式、嵌入程度、實時性和系統復雜程度等多種不同的準則進行分類。
根據嵌入式系統的嵌入方式,可以將嵌入式系統分為整機式嵌入的嵌入式系統、部件式嵌入的嵌入式系統、芯片式嵌入的嵌入式系統三類。
(1)整機式嵌入的嵌入式系統
整機式嵌入是將一個帶有專用接口的計算機嵌入到一個系統中,使其成為這個系統的核心部分。一般來說,這種計算機系統的功能完整且強大,有較完善的人機界面和外部設備,作用是完成系統中的關鍵工作。例如,一些大型設備的控制計算機就屬于這一類。
(2)部件式嵌入的嵌入式系統
部件式嵌入將計算機以部件(經常是一塊板卡)的方式嵌入到一個系統中,用以完成某種處理功能。它使計算機部件與其他硬件耦合的更加緊密,功能更專一。例如,雷達的數字信號處理部件采用的就是這種嵌入方式。
(3)芯片式嵌入的嵌入式系統
芯片式嵌入是將一個具有完整計算機功能的芯片嵌入到一個設備中。這種芯片上具有存儲器和完整的輸入/輸出接口,能完成專門的功能。例如,顯示控制器、微波爐控制器等采用的就是這種嵌入方式。
根據嵌入式系統的嵌入程度,可以將嵌入式系統分為深度嵌入的嵌入式系統、中度嵌入的嵌入式系統、淺度嵌入的嵌入式系統三類。
(1)深度嵌入的嵌入式系統
深度嵌入的嵌入式系統在運行的過程中不與用戶進行交互,用戶也不易察覺系統中有計算機存在。這種嵌入式系統對于資源和性能有嚴格的要求。例如,控制汽車發動機的嵌入式計算機就屬于深度嵌入的嵌入式系統。
(2)中度嵌入的嵌入式系統
中度嵌入的嵌入式系統在形態上與通用計算機已沒有共同之處。在這類系統上沒有鍵盤和鼠標等輸入裝置,也沒有普通的顯示器,但嵌入式系統的使用者可以明顯地感覺到設備中有起控制作用的計算機部件。例如,數控機床中的嵌入式計算機就屬于中度嵌入的嵌入式系統。
(3)淺度嵌入的嵌入式系統
淺度嵌入的嵌入式系統與通用計算機有很多相似之處,具有一定的通用性。其外表也很像一臺通用計算機,在系統之中有類似于鍵盤或鼠標的輸入裝置和類似于顯示屏幕的輸出裝置,具有人機交互能力。例如,PDA就是一種典型的淺度嵌入的嵌入式系統。
根據嵌入式系統是否為實時系統,可以將嵌入式系統分為實時嵌入式系統和非實時嵌入式系統兩類。
(1)實時嵌入式系統
實時嵌入式系統指那些產生系統輸出的時間對于系統來說至關重要的嵌入式系統。這種系統必須能對輸入事件在限定的時間內做出處理。對于實時嵌入式系統來說,如果在一定的時間之內未能對某個輸入及時地予以處理,就會導致系統失效,甚至全面崩潰。例如,控制汽車上的ABS的嵌入式系統就必須是一個實時系統。當汽車駕駛員剎車時,如果這個系統不能及時地響應,必然出現嚴重的交通事故。
(2)非實時嵌入式系統
非實時的嵌入式系統對輸入事件是否能在限定的時間內予以處理要求不嚴格,甚至根本沒有要求。
根據嵌入式系統的復雜程度,可以將嵌入式系統分為單微處理器嵌入式系統、組件式嵌入式系統、分布式嵌入式系統三類。
(1)單微處理器嵌入式系統
單微處理器嵌入式系統的規模一般很小,它所控制的對象比較簡單。控制這些對象既不需要很強的處理能力,也不需要復雜的算法,因此控制部件可以采用較低檔的處理器和存儲器,價格低廉。例如,MP3播放器和PDA中的嵌入式系統都屬于單微處理器嵌入式系統。
(2)組件式嵌入式系統
組件式嵌入式系統一般處于一個規模很大的系統之中。在這個系統中起控制作用的計算機是整個系統的一個局部組件。它輸入系統傳感器收集到的數據,并進行處理,然后輸出用于對系統進行控制的信號,或將輸出傳遞給系統的操作人員。在組件式嵌入式系統中,計算機裝置處理能力一般比較強,而且還經常用到一些比較復雜的控制算法和數據庫等一些功能很強的支撐軟件。例如,電話交換機、電梯、數據采集系統、醫療監視系統中的嵌入式計算機就都屬于組件式嵌入式系統。
(3)分布式嵌入式系統
分布式嵌入式系統由多個各自都具有處理能力的嵌入式計算機組成,每個嵌入式計算機控制一個獨立的子系統或設備。各個嵌入式計算機用通信線路連接起來,連接方式可以是通過高速線路所構成的緊耦合型,或通過低速線路所構成的松耦合型。例如,自動倉儲系統就需要由一個分布式嵌入式系統來控制。
1.1.5 嵌入式系統的處理器
嵌入式系統的核心部件是各種類型的處理器。現在幾乎每個半導體制造商都在生產用于嵌入式系統的處理器。據不完全統計,用于嵌入式系統的處理器已經超過了1000種。比較流行的也有30幾個系列。其中,8051系列的處理器使用最多,在數量上幾乎占到了一半。根據目前的現狀,可將使用在嵌入式系統上的處理器分成嵌入式微處理器、微控制器、嵌入式DSP處理器、片上系統4類。
1. 嵌入式微處理器
嵌入式微處理器(Embedded Micro Processor Unit,EMPU)由通用計算機的CPU演變而來,但與通用計算機的CPU所不同的是,它有體積小、功耗低、重量輕、成本低的特點。嵌入式微處理器和ROM、RAM、總線接口、外設接口等部件安裝在一塊電路板上。這種電路板只保留了和嵌入式應用有關的功能,而去掉了那些不必要的部分,這樣可以大幅度縮小系統的體積和功耗。
目前,嵌入式微處理器主要有ARM系列、MIPS系列、XScale系列和PowerPC系列等。
ARM的意思是Advanced RISC Machine。可以看出ARM系列是一種RISC結構的微處理器。不過從嚴格意義上講,ARM并不是一種微處理器芯片,而是一種微處理器體系架構技術。這種技術不涉及芯片的生產工藝。ARM的技術擁有權屬于ARM公司,但ARM公司本身并不生產芯片,而是將技術授權給其他公司進行生產。在ARM的內核中有多個可供選擇的功能模塊。被授權的公司在生產ARM系列微處理器芯片時,可以采用不同的半導體技術,并針對不同的應用需求配置和選擇芯片中所包含的功能模塊。目前全世界有幾十家大的半導體公司都在使用ARM公司的技術授權,生產基于ARM架構的微處理器芯片。
早期的ARM系列芯片(包括ARM1、ARM2、RAM3等)都是準32位的微處理器,其數據總線是32位的,但地址總線卻是26位的。到ARM6,才成為了完全的32位微處理器。從ARM7開始,ARM系列的芯片開始支持DPS模塊,所以可以認為ARM是一種嵌入式DSP處理器。目前經常使用的ARM系列芯片有ARM7、ARM9和ARM10。
MIPS系列芯片也是一種RISC結構的微處理器。MIPS(Microprocessor without Interlocked Piped Stages)的意思是“無內部互鎖流水級的微處理器”,它的研發者是MIPS公司。該公司成立于1984年,早期主要的方向是研發用于圖形工作站的處理器芯片,后來逐步轉向了研發嵌入式系統處理器芯片。MIPS公司的芯片主要有兩個架構體系:一個是適用于通用計算機的架構體系,如MIPS I、MIPS II、MIPS III、MIPS IV、MIPS V等;另一個是適用于嵌入式計算機的架構體系,如MIPS16、MIPS32到MIPS64等。除了MIPS公司之外,其他一些公司也在研發和生產基于MIPS架構的處理器芯片。
XScale是英特爾公司推出的一個用于嵌入式系統的處理器系列。XScale系列處理器采用ARM體系架構,相當于ARM體系結構處理器芯片的一套實際解決方案。到目前為止,英特爾公司已經推出了PXA25x、PXA26x和PXA27x三代XScale系列嵌入式處理器。
PowerPC(Performance Optimized With Enhanced RISC)是IBM公司、Apple公司和摩托羅拉公司聯合研發的一個處理器系列。按照PowerPC的體系架構規范,PowerPC系列是一種64位的處理器。其體系架構規范還定義了一個32位的子集,而且目前常用的PowerPC處理器也都是32位的(只有少數PowerPC處理器是64位的,如IBM RS/6000小型機和IBM P系列服務器上使用的處理器)。PowerPC系列處理器有PowerPC 400、PowerPC 600、PowerPC 700、PowerPC 900等一些子系列。它有非常廣的使用范圍,從小型機、高端服務器到嵌入式系統都在使用PowerPC系列的處理器做CPU。其中PowerPC 400系列適用于嵌入式系統。
2. 微控制器
微控制器(Micro Controller Unit,MCU)又稱單片機,顧名思義,就是將整個計算機系統集成到一塊芯片中。微控制器一般以處理器為核心,芯片內部集成有ROM/EPROM、RAM、總線邏輯、定時/計數器、看門狗計數器、串行口、A/D、D/A、閃存、EEPROM等各種必要功能邏輯、存儲器和外設接口。
與嵌入式微處理器相比,微控制器的最大特點是單片化,從而使體積減小,功耗和成本下降,可靠性提高。它上面外設接口資源一般比較豐富,適合用于控制方面,因此稱為微控制器。微控制器是目前在嵌入式系統中使用最多的處理器,有很多個系列,生產微控制器的廠商也很多。為適應不同的應用需求,一個系列的微控制器一般都有多個衍生產品。每個衍生產品的內核都是一樣的,不同的是存儲器和外設接口的配置及封裝。這樣可以使微控制器的功能最大限度地和應用需求相匹配,從而減少功耗和降低成本。
典型的微控制器產品有以下一些:
● 摩托羅拉公司:8位機M6805、M68HC05,16位機M68HC16,32位機M68300系列。
● 愛普生公司:4位機SMC62系列、SMC63系列、SMC60系列,8位機SMC88系列,32位機S1C33系列。
● Toshiba公司:4位機TMP47C系列,8位機870系列、90系列。
● 英特爾公司:8位機MCS-51系列,16位機MCS-96系列。
● 美國國家半導體公司:8位機COP8。
3. 嵌入式DSP處理器
DSP(Digital Signal Processor)是一種專門用于信號處理的處理器。這種處理器對系統結構和指令進行了特殊設計,使它更適合于執行DSP算法,編譯的效率和指令執行的速度也較高。
DSP算法的理論在20世紀70年代就已基本成熟,但由于那時專門的DSP處理器還未出現,所以只能在通用的微處理器上實現DSP算法,因而效率很低。1982年世界上誕生了第一枚DSP處理器。在信號處理方面,它的運算速度比一般的處理器高出幾十倍。目前DSP處理器在嵌入式系統中的應用已很廣泛。例如,進行數字濾波和快速傅里葉變換(Fast Fourier Transform,FFT)等。
用于嵌入式系統的DSP處理器有兩個發展來源:一是對DSP處理器進行單片化,增加片上外設接口,使之成為嵌入式DSP處理器。二是在通用單片機或SOC上增加DSP協處理器,使之成為嵌入式DSP處理器。
嵌入式DSP處理器的代表性產品是德州儀器公司的TMS320系列和摩托羅拉公司的DSP56000系列。TMS320系列又分為若干子系列,包括C2000系列,經常用于移動通信設備的C5000系列,以及性能更高的C6000和C8000系列。DSP56000系列則分為DSP56000、DSP56100、DSP56200和DSP56300等幾個不同的子系列。
4. 片上系統
片上系統(System On Chip,SOC)是一種在一塊硅片上實現一個復雜系統的芯片。在一個片上系統中可以集成許多功能單元,比如集成微處理器核心、USB、TCP/IP、GPRS、GSM、IEEE 1394、藍牙接口等單元。以往這些單元都是做成一個個獨立的芯片,比如,一個帶藍牙接口的系統,就是將藍牙接口芯片和嵌入式微處理芯片器做在一個電路板上。這種方法會耗費許多的電路空間,而且經濟成本也比較高。若是將嵌入式微處理器與藍牙接口單元做在同一個芯片之中,構成一個片上系統,就會大幅度地縮小整個系統所占的體積和降低系統的復雜度。在大量生產的情況之下,生產成本也會遠低于原本需要使用幾個芯片組成的電路系統。
片上系統可以分為通用和專用兩類。通用類產品有摩托羅拉公司的M-Core,以及基于ARM7、ARM9微處理器核心開發的某些芯片。專用類片上系統一般是針對于某種特定需求而設計的,一般的用戶對它們了解較少。