- 基于HCS12的嵌入式系統設計
- 吳曄 張陽 滕勤編著
- 338字
- 2018-12-27 19:59:19
第1章 嵌入式系統簡介
在信息化社會中,計算機和網絡已經全面滲透到我們生活的每一個角落。對于每個人,我們需要的已經不再僅僅是那種放在桌上處理文檔,進行工作管理和生產控制的計算機——“機器”;各種各樣的新型嵌入式系統設備在應用數量上已經遠遠超過通用計算機,任何一個人都可能擁有從小到大的各種使用嵌入式技術的電子產品,小到MP3、PDA等微型數字化產品,大到網絡家電、智能家電、車載電子設備等裝置,而在工業和服務領域中,使用嵌入式技術的數控機床、智能工具、工業機器人、各種類型的服務機器人等也將逐漸改變傳統的工業和服務方式。目前嵌入式系統技術已經成為最熱門的應用技術之一,嵌入式系統已經滲透到我們日常生活的方方面面。本章作為本書的開篇,主要介紹嵌入式系統的基本概念和嵌入式系統的開發學習方法。
1.1 嵌入式系統
1.1.1 系統
系統是一種根據固定的計劃、程序或者規則進行工作、組織或者執行一項或多項任務的方式。系統也是一種工作安排方法,其所有單元能夠按照一定的計劃或者程序裝配在一起,共同完成工作任務。
1.1.2 嵌入式系統
許多書籍都給出過嵌入式系統的定義,但是對于何為嵌入式系統,什么樣的技術又可以稱為嵌入式技術,仍在討論之中。以下給出一些文獻中對于嵌入式系統的定義:
《Computers as Components——Principles of Embedded Computing System Design》一書中指出:什么是嵌入式計算系統?如果不嚴格地定義,它是任何一個包含可編程計算機的設備,但是它本身卻不是一個通用計算機。
《Embedded Microcontrollers》一書作者認為:嵌入式系統是一種電子系統,它包含微處理器或者微控制器,但是我們不認為它們是計算機——計算機隱藏或者嵌入在系統中。
英國電機工程師協會定義:嵌入式系統是控制、監視或輔助某個設備、機器甚至工廠運行的設備。它具備4個特征:①用來執行特定的功能;②以微型計算機與外圍設備構成核心;③具有嚴格的時序與穩定度;④全自動操作循環工作。
還可以用以下文字總結嵌入式系統的概念:嵌入式系統一般指非PC系統,有計算機功能但又不稱為計算機的設備,它以應用為中心,軟硬件可裁減,適應應用系統對功能、可靠性、成本、體積、功耗等綜合性嚴格要求的專用計算機系統。簡單地說,嵌入式系統集系統的應用軟件和硬件于一體,類似于PC中BIOS的工作方式,具有軟件代碼小、高度自動化、響應速度快等特點,特別適合于要求實時和多任務的體系。嵌入式系統主要由嵌入式處理器、相關支撐硬件、嵌入式操作系統及應用軟件系統等組成,它是可獨立工作的“機器”或“器件”。
嵌入式系統的基本架構如圖1.1所示。

圖1.1 嵌入式系統的基本架構
1.1.3 嵌入式系統的分類
按照嵌入式系統的規模,可以將嵌入式系統分為以下三種類型:
(1)小型嵌入式系統
小型嵌入式系統采用一個8位或16位的微控制器設計;硬件和軟件復雜度小,需要進行板級設計。為這些系統開發嵌入式軟件時,主要的編程工具是所使用的微控制器或者微處理器專用的編輯器、匯編器和交叉匯編器等,通常利用C語言開發這些系統的軟件。
(2)中型嵌入式系統
中型嵌入式系統采用一個16位或32位的微控制器、數字信號處理器(DSP)或精簡指令集(RISC)計算機等設計,硬件和軟件復雜度都比較大。對于復雜的軟件設計,可以使用如下的編程工具:RTOS、源代碼設計工具、模擬器、調試器和集成開發環境(IDE)等,軟件工具往往還提供了硬件復雜性的解決和分析方法。
(3)復雜嵌入式系統
復雜嵌入式系統的軟件和硬件都非常復雜,需要可升級的處理器或者可配置的處理器和可編程邏輯陣列(如 FPGA、CPLD等器件)。它們用于邊緣應用,在這些應用中,需要硬件和軟件協同設計,并且都集成到最終的系統中,然而它們又受到硬件單元所提供的處理速度、存儲器等資源的限制。為了解決時間問題,提高系統運行速度,可以在硬件中實現一部分軟件功能,例如,加密和解密算法、TCP/IP協議棧和網絡驅動程序等功能。當然,系統中某些硬件資源的功能模塊同樣也可以用軟件來實現。這些系統的開發工具一般十分昂貴,有時還需要為這些系統開發編譯器或者重定目標的編譯器等。
由于嵌入式系統由硬件和軟件兩大部分組成,所以其分類也可以從硬件和軟件進行劃分。從硬件方面來講,嵌入式系統的核心是嵌入式微處理器,根據其現狀,嵌入式處理器可以分成嵌入式微處理器(Micro Processor Unit,MPU)、嵌入式微控制器(Microcontroller Unit, MCU)、嵌入式DSP處理器(Embedded Digital Signal Processor, EDSP)和嵌入式片上系統(System On Chip,SOC)等。
從軟件方面來講,主要依據使用的操作系統類型。目前嵌入式系統的軟件主要有兩大類:實時系統和分時系統,其中實時系統又分為硬實時系統和軟實時系統兩類。
1.2 嵌入式系統硬件
嵌入式系統的核心是嵌入式微處理器。嵌入式微處理器一般具備4個特點:
① 對實時和多任務有很強的支持能力,能完成多任務并且有較短的中斷響應時間,從而使內部的代碼和實時操作系統的執行時間減少到最低限度;
② 具有功能很強的存儲區保護功能,這是由于嵌入式系統的軟件結構已模塊化,而為了避免在軟件模塊之間出現錯誤的交叉作用,需要設計強大的存儲區保護功能,同時也有利于軟件診斷;
③ 可擴展的處理器結構,以便能夠迅速地擴展滿足應用的高性能的嵌入式微處理器;
④ 嵌入式微處理器的功耗要求必須很低,尤其是用于便攜式的無線及移動的計算和通信設備,對于靠電池供電的嵌入式系統更是如此,功耗往往為mW甚至μW級。
1.2.1 嵌入式微處理器
微處理器是一個集中取址和處理一組通用指令的單元。任何一個CPU必須包括一個控制單元和一個ALU單元。而嵌入式微處理器采用的是“增強型”通用微處理器。由于嵌入式系統通常應用于環境比較惡劣的環境中,因而嵌入式微處理器在工作溫度、電磁兼容性以及可靠性方面的要求較通用的標準微處理器高。根據實際嵌入式應用要求,將嵌入式微處理器裝配在專門設計的主板上,只保留和嵌入式應用有關的主板功能,這樣可以大幅度地減小系統的體積和功耗。
和工業控制計算機相比,嵌入式微處理器組成的系統具有體積小、重量輕、成本低、可靠性高等一系列優點,但在其電路板上必須包括ROM、RAM、總線接口、必要的外設等器件。由嵌入式微處理器及其存儲器、總線、外設等器件安裝在一塊電路主板上而構成的系統,就是通常所說的單板機系統。嵌入式微處理器目前主要有Am186/88、386EX、SC-400、Power PC、68000、MIPS、ARM系列等。
1.2.2 嵌入式微控制器
嵌入式微控制器又稱為單片機,它將整個計算機系統集成到一塊芯片中。嵌入式微控制器一般以某種微處理器內核為核心,根據某些典型的應用,在芯片內部集成了ROM/EPROM、RAM、總線、總線邏輯、定時/計數器、看門狗、I/O、串行口、脈寬調制輸出、A/D、D/A、Flash RAM、EEPROM等各種必要功能部件和外設。為適應不同的應用需求,對功能的設置和外設的配置進行必要的修改和裁減定制,使得一個系列的單片機具有多種衍生產品,每種衍生產品的處理器內核都相同,主要的不同在于存儲器、外設的配置和功能的設置等方面。這樣可以使單片機最大限度地和應用需求相匹配,從而減少整個系統的功耗和成本。
和嵌入式微處理器相比,微控制器的單片化使應用系統的體積大大減小,從而使功耗和成本大幅度下降,可靠性得到提高。由于嵌入式微控制器目前在產品的品種和數量上是所有嵌入式處理器中最多的,而且上述諸多優點決定了微控制器是嵌入式系統應用的主流,目前MCU占到嵌入式系統市場絕大多數的份額。微控制器的片上外設資源比較豐富,適合于控制,因此又稱為微控制器。通常,嵌入式微處理器可分為通用和半通用兩類,比較有代表性的通用系列包括S08/S12、8051、P51XA、MCS-251、MCS-96/196/296、C166/167、68000等,而比較有代表性的半通用系列,通常支持USB接口;支持SPI、I2C、CAN總線;支持LCD模塊等眾多專用的MCU和兼容系列。
1.2.3 嵌入式DSP處理器
在數字信號處理應用中,各種數字信號處理算法往往相當復雜,一般結構的處理器無法實時地完成這些運算功能。由于DSP處理器對系統結構和指令進行了特殊的設計,使其特別適合進行實時數字信號處理。在數字濾波、FFT(快速傅里葉變換)、譜分析等方面,DSP算法正大量進入嵌入式領域,DSP應用正逐步從通用單片機中以普通指令實現DSP功能,過渡到采用嵌入式DSP處理器。嵌入式DSP處理器有兩類:①DSP處理器經過單片化、EMC(電磁兼容性)改造、增加片上外設成為嵌入式DSP處理器,TI的TMS320C2000/C5000等屬于此范疇;②在通用單片機或SOC中增加DSP協處理器,例如Intel的MCS-296和Infineon的TriCore系列。另外,在有關智能方面的應用中,也需要嵌入式DSP處理器,例如各種帶有智能邏輯的消費類產品,生物信息識別終端,帶有加解密算法的鍵盤、非對稱數字用戶線路(Asymmetrical Digital Subscriber Line,ADSL)接入、實時語音壓解系統、虛擬現實顯示等各類應用。這類智能化算法一般都是運算量較大,特別是向量運算、指針線性尋址等較多,而這些正是DSP處理器的優勢所在。嵌入式DSP處理器比較有代表性的產品是TI的TMS320系列和Freescale的DSP56000系列等。TMS320系列處理器包括用于控制的C2000系列、移動通信的C5000系列,以及性能更高的C6000和C8000系列等。DSP56000目前已經發展成為DSP56000、DSP56100、DSP56200和DSP56300等多種不同系列的DSP處理器。
1.2.4 嵌入式片上系統
隨著EDA(電子設計自動化)的推廣和大規模集成電路(Large Scale Integrated Circuit, LSI)設計的普及化,以及半導體工藝的迅速發展,可以在一塊硅片上集成實現更為復雜的系統,這就產生了SOC技術。各種通用處理器內核可以作為SOC設計公司的標準庫,而嵌入式系統外設也成為了VLSI設計中的標準器件,可以通過標準的VHDL、Verilog等硬件語言描述保存在器件庫中,供用戶設計選擇使用。用戶根據需求定義應用系統,通過開發工具仿真、調試、驗證設計出的應用系統后,就可以將設計文檔等資料提交給半導體工廠制作樣品。這樣除某些無法集成的功能器件以外,整個嵌入式系統功能模塊的實現均可集成到一塊或幾塊芯片中,應用系統電路板設計將變得越來越簡潔,這對于減小整個應用系統的體積和功耗、提高可靠性等方面都非常有利。
1.3 嵌入式系統軟件
軟件是系統設計最重要的一部分,是嵌入式系統的核心。嵌入式系統需要開發給定系統的應用軟件,處理器執行指令代碼和處理數據,有效、準確地完成指定工作任務。在設計的最后階段,這些指令代碼和相關數據被放置到存儲器中,用于執行完成相應的工作。目前,大多數嵌入式系統的應用軟件開發都會使用高級語言,例如C、C++和Java等,其中C語言選用得最多。關于嵌入式系統的軟件程序設計,后文會有單獨章節論述。
1.4 嵌入式操作系統
嵌入式操作系統是一種支持嵌入式系統應用的操作系統軟件,它是嵌入式系統(包括硬、軟件系統)設計的重要組成部分,通常包括與硬件相關的底層驅動軟件、系統內核、設備驅動接口、通信協議、圖形界面、標準化瀏覽器等。嵌入式操作系統具有通用操作系統的基本特點,如能夠有效管理越來越復雜的系統資源;能夠硬件虛擬化,使得開發人員從復雜的驅動程序移植和維護中解脫出來;能夠提供庫函數、驅動程序、工具集以及應用程序等。與通用操作系統相比較,嵌入式操作系統在系統實時高效性、硬件的相關依賴性、軟件固態化以及應用的專用性等方面具有更為突出的特點。
1.4.1 嵌入式操作系統的種類
一般情況下,嵌入式操作系統可以分為兩類:一類是面向控制、通信等領域的實時操作系統,如WindRiver公司的VxWorks、ISI的pSOS、QNX系統軟件公司的QNX、ATI的Nucleus等;另一類是面向消費電子產品的非實時操作系統,這類產品包括個人數字助理(PDA)、移動電話、機頂盒、電子書、WebPhone等。
1.4.2 嵌入式操作系統的發展
嵌入式操作系統伴隨著嵌入式系統的發展大致經歷了4個階段。
第一階段是無操作系統的嵌入算法階段,是以單芯片為核心的可編程控制器形式的系統,同時具有與監測、伺服、指示設備相配合的功能。這種系統大部分應用于一些專業性極強的工業控制系統中,一般沒有操作系統的支持,通過匯編語言編程對系統進行直接控制,運行結束后清除內存。這一階段系統的主要特點是:系統結構和功能都相對單一,處理效率較低,存儲容量較小,幾乎沒有用戶接口。由于這種嵌入式系統使用簡便、價格很低,以前在國內工業領域應用較為普遍,但是已經遠遠不能適應高效的、需要大容量存儲介質的現代化工業控制和新興的信息家電等領域的需求。
第二階段是以嵌入式CPU為基礎、以簡單操作系統為核心的嵌入式系統。這一階段系統的主要特點是:CPU種類繁多,通用性比較差;系統開銷小,效率高;一般配備系統仿真器,操作系統具有一定的兼容性和擴展性;應用軟件較專業,用戶界面不夠友好;系統主要用來控制系統負載以及監控應用程序運行。
第三階段是通用的嵌入式實時操作系統階段,是以嵌入式操作系統為核心的嵌入式系統。這一階段系統的主要特點是:嵌入式操作系統能運行于各種不同類型的微處理器上,兼容性好;操作系統內核精簡、效率高,并且具有高度的模塊化和擴展性;具備文件和目錄管理、設備支持、多任務、網絡支持、圖形窗口以及用戶界面等功能;具有大量的應用程序接口(API),開發應用程序簡單;嵌入式應用軟件豐富。
第四階段是以基于Internet為標志的嵌入式系統,這是一個正在迅速發展的階段。目前大多數嵌入式系統還孤立于Internet之外,但隨著Internet的發展以及Internet技術與信息家電、工業控制技術等結合日益密切,嵌入式設備與Internet的結合將代表著嵌入式技術的真正未來。
1.4.3 使用實時操作系統的必要性
嵌入式實時操作系統在目前的嵌入式應用中用得越來越廣泛,尤其在功能復雜、系統龐大的應用中顯得越來越重要。
首先,嵌入式實時操作系統(RTOS)提高了系統的可靠性。在控制系統中,出于安全方面的考慮,不僅要求系統不能崩潰,還要有自愈能力;不僅要求在硬件設計方面提高系統的可靠性和抗干擾性,而且也應在軟件設計方面提高系統的抗干擾性,盡可能地減少安全漏洞和不可靠的隱患。長期以來的前后臺系統軟件設計在遇到強干擾時,運行的程序往往會產生異常、出錯、跑飛,甚至死循環,最終導致系統的崩潰。而實時操作系統管理的系統,這種干擾可能會引起若干進程中的一個被破壞,但可以通過運行的系統監控進程對其進行修復。通常情況下,這個系統監視進程用來監視各進程運行狀況,遇到異常情況時通過采取一些有利于系統穩定可靠的措施,如把有問題的任務清除掉等方法,能夠有效解決系統的干擾問題,一般系統不會出現崩潰。
其次,RTOS提高了開發效率,縮短了開發周期。在嵌入式實時操作系統環境下,開發一個復雜的應用程序,通常可以按照軟件工程中的解耦原則將整個程序分解為多個任務模塊。每個任務模塊的調試、修改幾乎不影響其他模塊。商業軟件一般都提供了良好的多任務調試環境。
再次,嵌入式實時操作系統充分發揮了32位CPU的多任務潛力。32位CPU比8位、16位CPU快,另外它是為運行多用戶、多任務操作系統而設計的,特別適合運行多任務實時系統。32位CPU采用利于提高系統可靠性和穩定性的設計,使其可靠性容易得到保障。例如,CPU運行狀態分為系統態和用戶態。將系統堆棧和用戶堆棧分開,以及實時地給出了CPU的運行狀態等,允許用戶在系統設計中從硬件和軟件兩方面對實時內核的運行實施保護。如果還是采用以前的前后臺方式,則無法發揮32位CPU的優勢。從某種意義上說,沒有操作系統的計算機(裸機)是沒有太多應用價值的。在嵌入式應用中,只有把CPU嵌入到系統中,同時又把操作系統嵌入進去,才是真正的嵌入式應用。
1.4.4 實時操作系統的優缺點
在嵌入式實時操作系統環境下,開發實時應用程序使程序的設計和擴展變得容易,不需要大的改動就可以增加新的功能。通過將應用程序分割成若干獨立的任務模塊,使應用程序的設計過程大為簡化,而且對實時性要求苛刻的事件易于得到快速、可靠的處理。通過有效的系統服務,嵌入式實時操作系統使得系統資源得到更好的利用。但是,使用嵌入式實時操作系統需要額外的ROM/RAM開銷,會增加CPU的額外負荷,以及內核的開銷等。
1.5 嵌入式系統開發方法
嵌入式系統的一般開發可以參照圖1.2所示的流程,但不同系統的開發應用并不一定完全一樣,該圖只表示出了嵌入式系統開發過程中可能包括的部分,對于復雜的系統,開發流程可能會更復雜一些。

圖1.2 嵌入式系統開發流程
第一步就是對系統的需求進行分析:確定設計任務和設計目標,一般分為功能性需求和非功能性需求兩個方面,功能需求主要包括輸入/輸出信號和系統的操作方式等;非功能需求主要包括系統的性能、成本、功耗、體積、重量等。
需求分析后很重要的一個步驟是設計選型,包括系統中用到所有元件的選型,而其中嵌入式處理器的選型尤為重要。據不完全統計,目前全世界嵌入式處理器的品種總量已經超過1 000種,流行的體系結構有30多個系列。面對如此眾多的處理器,設計者需要根據項目需要,綜合考慮,選擇出一款合適的處理器。在選擇的過程中不僅應考慮處理器的運算速度、程序存儲器容量、數據存儲器容量、能夠提供I/O口數量和功耗等問題,也應該考慮到開發工具的相關問題,比如開發工具是否容易獲取,開發者對于開發工具的熟悉程度等。
選型結束后,可以進行硬件設計、制作及調試工作,當然這幾步不一定一次成功,可能會有一些反復,直到硬件測試完成后,可以進入下一步軟件設計工作。
結合設計的軟件,進行系統測試,系統測試完畢后,并不意味著嵌入式系統的開發過程全部結束。系統交付用戶使用后,可能還會發現一些問題,所以之后根據用戶的使用反饋,還需要對系統進一步完善。