- 嵌入式電路設(shè)計(jì)教程
- 馬洪連主編
- 9880字
- 2018-12-31 17:13:26
1.3 嵌入式系統(tǒng)簡(jiǎn)介
關(guān)于嵌入式系統(tǒng)的定義很多。例如,較通俗定義是嵌入到對(duì)象體系中的專用計(jì)算機(jī)系統(tǒng)。IEEE(國(guó)際電氣和電子工程師協(xié)會(huì))的定義為嵌入式系統(tǒng)是“用于控制、監(jiān)視或者輔助操作機(jī)器和設(shè)備的裝置”(devices used to control, monitor, or assist the operation of equipment, machinery or plants)。可以看出此定義是從應(yīng)用上考慮的,嵌入式系統(tǒng)是軟件和硬件的綜合體,還可以涵蓋機(jī)電等附屬裝置。國(guó)內(nèi)較權(quán)威機(jī)構(gòu)對(duì)嵌入式系統(tǒng)的定義是:以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟、硬件可裁剪,功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。
嵌入式系統(tǒng)本身是一個(gè)相對(duì)模糊的定義。手機(jī)、MP3、數(shù)碼相機(jī)、機(jī)頂盒、媒體播放器和一個(gè)PC104的微型工業(yè)控制計(jì)算機(jī)都可以認(rèn)為嵌入式系統(tǒng)。總之,嵌入式系統(tǒng)采用“量體裁衣”的方式把所需的功能嵌入到各種應(yīng)用系統(tǒng)中。
1.3.1 嵌入式系統(tǒng)組織結(jié)構(gòu)概述
嵌入式系統(tǒng)的組織架構(gòu)是由嵌入式處理器、存儲(chǔ)器等硬件,以及嵌入式系統(tǒng)軟件和嵌入式應(yīng)用軟件所組成的,如圖1-8所示。

圖1-8 嵌入式系統(tǒng)架構(gòu)圖
嵌入式系統(tǒng)一般由硬件系統(tǒng)和軟件系統(tǒng)兩大部分組成,其中,嵌入式系統(tǒng)硬件系統(tǒng)包括嵌入式處理器、存儲(chǔ)器、I/O系統(tǒng)和配置必要的外圍接口部件;嵌入式系統(tǒng)的軟件系統(tǒng)包括操作系統(tǒng)和應(yīng)用軟件。嵌入式系統(tǒng)的軟、硬件框架如圖1-9所示。
目前嵌入式系統(tǒng)一般是專用系統(tǒng),其功能專一,成本較低。而PC是通用計(jì)算平臺(tái),嵌入式系統(tǒng)的資源比PC少,軟件故障帶來(lái)的后果要比PC大。嵌入式系統(tǒng)一般采用實(shí)時(shí)操作系統(tǒng),嵌入式系統(tǒng)通常都有成本、功耗的要求。例外,嵌入式系統(tǒng)需要多種微處理體系的支持和需要專用的開(kāi)發(fā)工具。
嵌入式系統(tǒng)的開(kāi)發(fā)環(huán)境可分為硬件開(kāi)發(fā)工具和軟件開(kāi)發(fā)工具:硬件開(kāi)發(fā)工具有宿主機(jī)、在線實(shí)時(shí)仿真器和其他檢測(cè)工具(如示波器)等;軟件開(kāi)發(fā)工具包括編輯、交叉編譯、鏈接、定位軟件和調(diào)試軟件等。

圖1-9 嵌入式系統(tǒng)的軟、硬件框架
1.3.2 嵌入式硬件系統(tǒng)
嵌入式系統(tǒng)基本硬件架構(gòu)主要包括微處理器、外圍電路及外部設(shè)備三大部分,其中外圍電路一般由時(shí)鐘、復(fù)位電路、程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器和電源模塊等部件組成;外部設(shè)備一般應(yīng)配有USB、顯示器、鍵盤或觸摸屏等設(shè)備及接口電路;核心部件是微處理器。在一片嵌入式微處理器的基礎(chǔ)上增加電源電路、時(shí)鐘電路和存儲(chǔ)器電路(ROM和RAM等),就構(gòu)成了一個(gè)嵌入式核心控制模塊,其中操作系統(tǒng)和應(yīng)用程序都可以固化在ROM中,如圖1-10所示。嵌入式工業(yè)監(jiān)控系統(tǒng)的組成原理如圖1-11所示。
有關(guān)嵌入式硬件系統(tǒng)方面的具體電路設(shè)計(jì)、實(shí)現(xiàn)方法及設(shè)計(jì)實(shí)例,本書將作為重點(diǎn)內(nèi)容在后邊幾章中詳細(xì)介紹。

圖1-10 典型嵌入式系統(tǒng)的硬件組成

圖1-11 嵌入式工業(yè)監(jiān)控系統(tǒng)的組成原理圖
1.3.3 嵌入式軟件系統(tǒng)
嵌入式系統(tǒng)的軟件部分包括操作系統(tǒng)軟件和應(yīng)用程序編程,但有時(shí)設(shè)計(jì)人員也會(huì)把這兩種軟件組合在一起進(jìn)行應(yīng)用。應(yīng)用程序控制著系統(tǒng)的動(dòng)作和行為,而操作系統(tǒng)控制著應(yīng)用程序編程與硬件的交互。
嵌入式操作系統(tǒng)通常包括與硬件相關(guān)的底層驅(qū)動(dòng)軟件、系統(tǒng)內(nèi)核、設(shè)備驅(qū)動(dòng)接口、通信協(xié)議、圖形界面、標(biāo)準(zhǔn)化瀏覽器等,具有編碼體積小、面向應(yīng)用、可裁剪和移植、實(shí)時(shí)性強(qiáng)、可靠性高、專用性強(qiáng)等特點(diǎn)。嵌入式系統(tǒng)的開(kāi)發(fā)工具,一般包含有程序編輯器、編譯器、鏈接定位器、調(diào)試器等。嵌入式系統(tǒng)的硬件和軟件位于嵌入式系統(tǒng)產(chǎn)品本身,而開(kāi)發(fā)工具和開(kāi)發(fā)系統(tǒng)則獨(dú)立于嵌入式系統(tǒng)產(chǎn)品之外。
1.嵌入式操作系統(tǒng)的分類
1)按實(shí)時(shí)性分類
“實(shí)時(shí)”表示一個(gè)非常短的時(shí)間間隔,具有“立即”之含義。當(dāng)計(jì)算機(jī)進(jìn)行實(shí)時(shí)處理時(shí),要求在接收到數(shù)據(jù)的同時(shí)執(zhí)行輸出操作并輸出計(jì)算結(jié)果,不能超出計(jì)算機(jī)系統(tǒng)所能容忍的時(shí)限。嵌入式系統(tǒng)的軟件主要有實(shí)時(shí)系統(tǒng)和分時(shí)系統(tǒng)(非實(shí)時(shí)系統(tǒng))兩大類,其中實(shí)時(shí)系統(tǒng)又分為硬(強(qiáng))實(shí)時(shí)和軟(弱)實(shí)時(shí)系統(tǒng)。實(shí)時(shí)嵌入式系統(tǒng)是為執(zhí)行特定功能而設(shè)計(jì)的,可以嚴(yán)格地按時(shí)序執(zhí)行功能,其最大的特征就是程序的執(zhí)行具有確定性。具體可分為三種形式:
(1)具有強(qiáng)實(shí)時(shí)特點(diǎn)的嵌入式操作系統(tǒng)。在實(shí)時(shí)系統(tǒng)中,如果系統(tǒng)在指定的時(shí)間內(nèi)未能實(shí)現(xiàn)某個(gè)確定的任務(wù),會(huì)導(dǎo)致系統(tǒng)的全面失敗,這樣的系統(tǒng)被稱為強(qiáng)實(shí)時(shí)系統(tǒng)或硬實(shí)時(shí)系統(tǒng)。強(qiáng)實(shí)時(shí)系統(tǒng)響應(yīng)時(shí)間一般在毫秒或微秒級(jí),如核反應(yīng)堆處理裝置、飛機(jī)控制器和數(shù)控機(jī)床控制器等。一個(gè)強(qiáng)實(shí)時(shí)系統(tǒng)往往在硬件上需要添加專門用于時(shí)間和優(yōu)先級(jí)管理的控制芯片,如μC/OS和VxWorks就是典型的強(qiáng)實(shí)時(shí)操作系統(tǒng)。
(2)具有弱實(shí)時(shí)特點(diǎn)的嵌入式操作系統(tǒng)。在弱實(shí)時(shí)系統(tǒng)中,雖然響應(yīng)時(shí)間同樣重要,但是超時(shí)卻不會(huì)發(fā)生致命的錯(cuò)誤。設(shè)計(jì)軟實(shí)時(shí)系統(tǒng)時(shí),也需要考慮系統(tǒng)可接受的超時(shí)限的次數(shù)和延遲。目前大多數(shù)實(shí)時(shí)操作系統(tǒng)都是弱實(shí)時(shí)系統(tǒng),它則主要是在軟件方面通過(guò)編程實(shí)現(xiàn)現(xiàn)實(shí)的管理。比如Windows CE、Linux是一個(gè)多任務(wù)分時(shí)系統(tǒng),其系統(tǒng)響應(yīng)時(shí)間在毫秒至秒的數(shù)量級(jí)上,其實(shí)時(shí)性的要求比強(qiáng)實(shí)時(shí)系統(tǒng)要差一些,具體應(yīng)用如對(duì)飯店電子菜譜的查詢等。
(3)沒(méi)有實(shí)時(shí)特點(diǎn)的嵌入式操作系統(tǒng)。
2)按開(kāi)發(fā)成本分類
大體上分為商用型和免費(fèi)型。商用型的實(shí)時(shí)操作系統(tǒng)功能穩(wěn)定、可靠,有完善的技術(shù)支持和售后服務(wù),但價(jià)格昂貴,如VxWorks、Windows CE、pSOS、Palm、OS-9、LynxOS和QNX等。免費(fèi)型的操作系統(tǒng)在價(jià)格方面具有優(yōu)勢(shì),目前主要有Linux和μC/OS操作系統(tǒng),但與商用型OS相比具有不可靠、無(wú)技術(shù)咨詢等特點(diǎn)。
3)按軟件結(jié)構(gòu)分類
按軟件結(jié)構(gòu)分類有兩種形式:最簡(jiǎn)單的軟件結(jié)構(gòu)是循環(huán)輪詢系統(tǒng)(Polling Loop),程序依次檢查系統(tǒng)的每一個(gè)輸入條件,一旦條件成立就進(jìn)行相應(yīng)的處理;事件驅(qū)動(dòng)系統(tǒng)是能對(duì)外部事件直接響應(yīng)的系統(tǒng),它包括前后臺(tái)、實(shí)時(shí)多任務(wù)、多處理器等,是嵌入式實(shí)時(shí)系統(tǒng)的主要形式。
應(yīng)用程序是一個(gè)無(wú)限的循環(huán),循環(huán)中調(diào)用相應(yīng)的函數(shù)完成相應(yīng)的操作,這部分可以看成后臺(tái)行為。中斷服務(wù)程序處理異步事件,這部分可以看成前臺(tái)行為。后臺(tái)也可以叫做任務(wù)級(jí),前臺(tái)也叫中斷級(jí)。很多基于微處理器的產(chǎn)品都采用前后臺(tái)系統(tǒng)設(shè)計(jì)的方法,如微波爐、電話機(jī)、智能玩具等。從省電的角度出發(fā),平時(shí)微處理器處在停機(jī)狀態(tài),所有的事都靠中斷服務(wù)程序來(lái)完成。
嵌入式軟件系統(tǒng)是實(shí)現(xiàn)嵌入式計(jì)算機(jī)系統(tǒng)功能的軟件,一般是由嵌入式系統(tǒng)軟件、支撐軟件和應(yīng)用軟件構(gòu)成。其中系統(tǒng)軟件的作用是控制、管理計(jì)算機(jī)系統(tǒng)的資源,具體包含嵌入式操作系統(tǒng)、嵌入式中間件(CORBA、OSGI)等。支撐軟件是輔助軟件開(kāi)發(fā)的工具,具體包括系統(tǒng)分析設(shè)計(jì)工具、仿真開(kāi)發(fā)工具、交叉開(kāi)發(fā)工具、測(cè)試工具、配置管理工具和維護(hù)工具等。應(yīng)用軟件面向應(yīng)用領(lǐng)域,隨著應(yīng)用目的的不同而不同,如手機(jī)軟件、路由器軟件、交換機(jī)軟件、視頻圖像、語(yǔ)音、網(wǎng)絡(luò)軟件等。應(yīng)用程序控制著系統(tǒng)的動(dòng)作和行為,而操作系統(tǒng)控制著應(yīng)用程序與嵌入式系統(tǒng)硬件的交互。
在嵌入式系統(tǒng)發(fā)展的初期,嵌入式系統(tǒng)的軟件是一體化的,即軟件中沒(méi)有把系統(tǒng)軟件和應(yīng)用軟件獨(dú)立開(kāi)來(lái),整個(gè)軟件是一個(gè)大的循環(huán)控制程序,設(shè)備控制功能模塊、人機(jī)操作模塊、硬件接口模塊等通常在這個(gè)大循環(huán)中。但是,隨著應(yīng)用的要求越來(lái)越復(fù)雜,例如需要嵌入式系統(tǒng)能連接Internet、需要嵌入式系統(tǒng)具有多媒體處理功能、需要嵌入式系統(tǒng)具有豐富的人機(jī)操作界面等,若再按照傳統(tǒng)方法把嵌入式系統(tǒng)設(shè)計(jì)成一個(gè)大的循環(huán)控制程序,不僅費(fèi)時(shí)、費(fèi)力,而且設(shè)計(jì)的程序可能不能滿足需求,因此,嵌入式系統(tǒng)的系統(tǒng)軟件平臺(tái)(即嵌入式操作系統(tǒng))得到了迅速的發(fā)展。
2.嵌入式系統(tǒng)軟件結(jié)構(gòu)
完整的嵌入式系統(tǒng)軟件結(jié)構(gòu)一般包含有四個(gè)層面,它們分別是設(shè)備驅(qū)動(dòng)層、操作系統(tǒng)(OS)層、中間件層、應(yīng)用程序?qū)印R灿行畬?yīng)用程序接口API歸屬于OS層。由于硬件電路的可裁減性和嵌入式系統(tǒng)本身的特點(diǎn),其軟件部分也是可裁減的。嵌入式軟件系統(tǒng)的體系結(jié)構(gòu)如圖1-12所示。
1)驅(qū)動(dòng)層
驅(qū)動(dòng)層程序是嵌入式系統(tǒng)中不可缺少的重要部分,使用任何外部設(shè)備都需要有相應(yīng)驅(qū)動(dòng)層程序的支持,它為上層軟件提供了設(shè)備的接口。上層軟件不用理會(huì)設(shè)備的具體內(nèi)部操作,只需調(diào)用驅(qū)動(dòng)層程序提供的接口即可。驅(qū)動(dòng)層程序一般包括硬件抽象層HAL(提高系統(tǒng)的可移植性)、板極支持包BSP(提供訪問(wèn)硬件設(shè)備寄存器的函數(shù)包)和相應(yīng)配置不同設(shè)備的驅(qū)動(dòng)程序。

圖1-12 嵌入式軟件系統(tǒng)的體系結(jié)構(gòu)
板級(jí)初始化程序的作用是在嵌入式系統(tǒng)上電后初始化系統(tǒng)的硬件環(huán)境,包括嵌入式微處理器、存儲(chǔ)器、中斷控制器、DMA、定時(shí)器等的初始化。系統(tǒng)軟件相關(guān)的驅(qū)動(dòng)程序是操作系統(tǒng)和中間件等系統(tǒng)軟件所需的驅(qū)動(dòng)程序,它們的開(kāi)發(fā)要按照系統(tǒng)軟件的要求進(jìn)行。
2)操作系統(tǒng)(OS)層
操作系統(tǒng)可隱含底層不同硬件的差異,向上運(yùn)行應(yīng)用程序提供一個(gè)統(tǒng)一的調(diào)用接口,主要完成內(nèi)存管理、多任務(wù)管理和外圍設(shè)備管理三個(gè)任務(wù)。在設(shè)計(jì)一個(gè)簡(jiǎn)單的應(yīng)用程序時(shí),可以不使用操作系統(tǒng),僅有應(yīng)用程序和設(shè)備驅(qū)動(dòng)程序。比如,一個(gè)指紋識(shí)別系統(tǒng)要完成指紋的錄入和指紋識(shí)別功能,尤其是在指紋識(shí)別的過(guò)程中需要高速的算法,所以需要32位處理器。但是指紋識(shí)別系統(tǒng)本身的任務(wù)并不復(fù)雜,也不涉及煩瑣的協(xié)議和管理,對(duì)于這樣的系統(tǒng)就沒(méi)有安裝操作系統(tǒng)的必要,否則會(huì)帶來(lái)新的系統(tǒng)開(kāi)銷,降低系統(tǒng)的性能。因?yàn)檫\(yùn)行和存儲(chǔ)操作系統(tǒng)需要大量的RAM和ROM,啟動(dòng)操作系統(tǒng)需要時(shí)間。在系統(tǒng)運(yùn)行較多任務(wù)、任務(wù)調(diào)度、內(nèi)存分配復(fù)雜、系統(tǒng)需要大量協(xié)議支持等情況下,就需要一個(gè)操作系統(tǒng)來(lái)管理和控制內(nèi)存、多任務(wù)、周邊資源等。依據(jù)系統(tǒng)所提供的程序界面來(lái)編寫應(yīng)用程序,可大大減少應(yīng)用程序員的負(fù)擔(dān)。另外,如果想讓系統(tǒng)有更好的可擴(kuò)展性或可移植性,那么使用操作系統(tǒng)也是一個(gè)不錯(cuò)的選擇。因?yàn)椴僮飨到y(tǒng)里含有豐富的網(wǎng)絡(luò)協(xié)議和驅(qū)動(dòng)程序,這樣可以大大簡(jiǎn)化系統(tǒng)的開(kāi)發(fā)難度,并提高系統(tǒng)的可靠性。現(xiàn)代高性能嵌入式系統(tǒng)的應(yīng)用越來(lái)越廣泛,操作系統(tǒng)的使用成為必然的發(fā)展趨勢(shì)。
操作系統(tǒng)的功能簡(jiǎn)單來(lái)說(shuō)就是隱藏硬件細(xì)節(jié),只提供給應(yīng)用程序開(kāi)發(fā)人員抽象的接口。用戶只需要和這些抽象的接口打交道,而不用在意這些抽象的接口和函數(shù)是如何與物理資源相互聯(lián)系的,也不用去管那些功能是如何通過(guò)操作系統(tǒng)調(diào)用具體的硬件資源來(lái)完成的。如果硬件體系發(fā)生變化,只要在新的硬件體系下仍運(yùn)行著同樣的操作系統(tǒng),那么原來(lái)的程序還能完成原有的功能。
操作系統(tǒng)層包括嵌入式內(nèi)核、嵌入式TCP/IP網(wǎng)絡(luò)系統(tǒng)、嵌入式文件系統(tǒng)、嵌入式GUI系統(tǒng)和電源管理等部分,其中嵌入式內(nèi)核是基礎(chǔ)和必備的部分,其他部分要根據(jù)嵌入式系統(tǒng)的需要來(lái)確定。對(duì)于使用操作系統(tǒng)的嵌入式系統(tǒng)而言,操作系統(tǒng)一般以內(nèi)核映像的形式下載到目標(biāo)系統(tǒng)中。
3)中間件層
目前在一些復(fù)雜的嵌入式系統(tǒng)中也開(kāi)始采用中間件技術(shù),主要包括嵌入式CORBA、OSGI、嵌入式DCOM和面向應(yīng)用領(lǐng)域的中間件軟件,如基于嵌入式CORBA的應(yīng)用于軟件無(wú)線電臺(tái)的應(yīng)用中間件SCA等。
4)應(yīng)用層
應(yīng)用層軟件主要由多個(gè)相對(duì)獨(dú)立的應(yīng)用任務(wù)組成,每個(gè)應(yīng)用任務(wù)完成特定的工作,如I/O任務(wù)、計(jì)算的任務(wù)、通信任務(wù)等,由操作系統(tǒng)調(diào)度各個(gè)任務(wù)的運(yùn)行。實(shí)際的嵌入式系統(tǒng)應(yīng)用軟件建立在系統(tǒng)的主任務(wù)基礎(chǔ)之上。用戶應(yīng)用程序主要通過(guò)調(diào)用系統(tǒng)的API函數(shù)對(duì)系統(tǒng)進(jìn)行操作,完成用戶應(yīng)用功能開(kāi)發(fā)。在用戶的應(yīng)用程序中,也可創(chuàng)建用戶自己的任務(wù),任務(wù)之間的協(xié)調(diào)主要依賴于系統(tǒng)的消息隊(duì)列。
3.嵌入式軟件系統(tǒng)的設(shè)計(jì)與運(yùn)行流程
操作系統(tǒng)是為應(yīng)用程序提供基礎(chǔ)服務(wù)的軟件,而應(yīng)用程序是在CPU上執(zhí)行的一個(gè)或多個(gè)程序,在執(zhí)行過(guò)程中會(huì)使用輸入數(shù)據(jù)并產(chǎn)生輸出數(shù)據(jù)。應(yīng)用程序的管理包括程序載入和執(zhí)行,程序?qū)ο到y(tǒng)資源的共享和分配,并避免分配到的資源被其他程序破壞。
應(yīng)用程序的設(shè)計(jì)流程是先用編輯程序編寫源代碼,源代碼可以由多個(gè)文件組成,以實(shí)現(xiàn)模塊化。然后用編譯程序或匯編多個(gè)文件,使用鏈接程序?qū)⑦@些二進(jìn)制文件組合為可執(zhí)行文件。這些工作歸結(jié)起來(lái),可看成實(shí)現(xiàn)階段。最后通過(guò)調(diào)試程序提供的命令運(yùn)行得到的可執(zhí)行文件,以測(cè)試所設(shè)計(jì)的程序。有時(shí)可利用解析程序找出程序中存在的性能瓶頸。在此驗(yàn)證階段,如果找到錯(cuò)誤或性能瓶頸,可以返回到實(shí)現(xiàn)階段進(jìn)行改進(jìn),并重復(fù)該流程。
嵌入式軟件運(yùn)行流程可主要分為五個(gè)階段,它們分別是上電復(fù)位/板級(jí)初始化階段、系統(tǒng)引導(dǎo)/升級(jí)階段、系統(tǒng)初始化階段、應(yīng)用初始化階段、多任務(wù)應(yīng)用運(yùn)行階段。
1)上電復(fù)位/板級(jí)初始化階段
嵌入式系統(tǒng)上電復(fù)位后完成板級(jí)初始化工作,板級(jí)初始化程序具有完全的硬件特性,一般采用匯編語(yǔ)言實(shí)現(xiàn)。
2)系統(tǒng)引導(dǎo)/升級(jí)階段
根據(jù)需要分別進(jìn)入系統(tǒng)軟件引導(dǎo)階段或系統(tǒng)升級(jí)階段。軟件可通過(guò)測(cè)試通信端口數(shù)據(jù)或判斷特定開(kāi)關(guān)的方式分別進(jìn)入不同階段。在系統(tǒng)引導(dǎo)階段有如下三種不同的工作方式:
(1)將系統(tǒng)軟件從NOR Flash中讀取出來(lái)加載到RAM中運(yùn)行,這種方式可以解決成本及Flash速度比RAM慢的問(wèn)題,軟件可壓縮存儲(chǔ)在Flash中。
(2)不需將軟件引導(dǎo)到RAM中而是讓其直接在NOR Flash上運(yùn)行,進(jìn)入系統(tǒng)初始化階段。
(3)將軟件從外存(如NAND Flash、CF卡、MMC等)中讀取出來(lái)加載到RAM中運(yùn)行,這種方式的成本更低。
在進(jìn)入系統(tǒng)升級(jí)階段后,系統(tǒng)可通過(guò)網(wǎng)絡(luò)進(jìn)行遠(yuǎn)程升級(jí)或通過(guò)串口進(jìn)行本地升級(jí)。遠(yuǎn)程升級(jí)一般支持TFTP、FTP、HTTP等方式,本地升級(jí)可通過(guò)Console口使用超級(jí)終端或特定的升級(jí)軟件進(jìn)行。
3)系統(tǒng)初始化階段
在該階段進(jìn)行操作系統(tǒng)等系統(tǒng)軟件各功能部分必需的初始化工作,如根據(jù)系統(tǒng)配置初始化數(shù)據(jù)空間、初始化系統(tǒng)所需的接口和外設(shè)等。系統(tǒng)初始化階段需要按特定的順序進(jìn)行,如首先完成內(nèi)核的初始化,然后完成網(wǎng)絡(luò)、文件系統(tǒng)等的初始化,最后完成中間件等的初始化工作。
4)應(yīng)用初始化階段
在該階段進(jìn)行應(yīng)用任務(wù)的創(chuàng)建,信號(hào)量、消息隊(duì)列的創(chuàng)建和與應(yīng)用相關(guān)的其他初始化工作。
5)多任務(wù)應(yīng)用運(yùn)行階段
各種初始化工作完成后,系統(tǒng)進(jìn)入多任務(wù)狀態(tài),操作系統(tǒng)按照已確定的算法進(jìn)行任務(wù)的調(diào)度,應(yīng)用任務(wù)分別完成各自特定的功能。
嵌入式應(yīng)用軟件是由基于嵌入式操作系統(tǒng)開(kāi)發(fā)的應(yīng)用程序組成的,用來(lái)實(shí)現(xiàn)對(duì)被控對(duì)象的控制功能。功能層是要面對(duì)被控對(duì)象和用戶,為方便用戶操作,往往需要提供一個(gè)友好的人機(jī)界面。為了簡(jiǎn)化設(shè)計(jì)流程,嵌入式應(yīng)用軟件的開(kāi)發(fā)采用一個(gè)集成開(kāi)發(fā)環(huán)境供用戶使用。
在一般簡(jiǎn)易的嵌入式系統(tǒng)中常采用匯編語(yǔ)言來(lái)編寫應(yīng)用程序,而在較復(fù)雜的系統(tǒng)中,匯編語(yǔ)言很難勝任,故通常采用高級(jí)語(yǔ)言。C語(yǔ)言具有廣泛的庫(kù)函數(shù)支持,目前在嵌入式系統(tǒng)中是應(yīng)用最廣泛的編程語(yǔ)言。C++是一種面向?qū)ο蟮木幊陶Z(yǔ)言,在嵌入式系統(tǒng)設(shè)計(jì)中也得到了廣泛的應(yīng)用,但與C語(yǔ)言相比,C++的目標(biāo)代碼往往比較龐大和復(fù)雜,在嵌入式系統(tǒng)應(yīng)用中應(yīng)充分考慮這一因素。
4.常用的嵌入式操作系統(tǒng)簡(jiǎn)介
隨著集成電路的規(guī)模不斷提高,涌現(xiàn)出大量?jī)r(jià)格低廉、結(jié)構(gòu)小巧、功能強(qiáng)大的嵌入式微處理器,為嵌入式系統(tǒng)提供了豐富的硬件平臺(tái)。操作系統(tǒng)可以運(yùn)行較多任務(wù),進(jìn)行任務(wù)調(diào)度、內(nèi)存分配。在內(nèi)部具有大量協(xié)議支持,如網(wǎng)絡(luò)協(xié)議、文件系統(tǒng)和良好的圖形用戶接口(GUI)等功能,可以大大簡(jiǎn)化系統(tǒng)的開(kāi)發(fā)難度,提高系統(tǒng)的可靠性。
操作系統(tǒng)的移植是指一個(gè)操作系統(tǒng)經(jīng)過(guò)適當(dāng)?shù)男薷暮螅梢员话惭b在不同類型的微處理器上運(yùn)行。雖然一些嵌入式操作系統(tǒng)的大部分代碼都是使用C語(yǔ)言編寫的,但仍要用C語(yǔ)言和匯編語(yǔ)言共同完成一些與微處理器相關(guān)的代碼。比如,嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-II在讀寫處理器、寄存器時(shí)只能通過(guò)匯編語(yǔ)言來(lái)實(shí)現(xiàn),因?yàn)棣藽/OS-II在設(shè)計(jì)的時(shí)候就已經(jīng)充分考慮了可移植性。目前,在嵌入式系統(tǒng)中比較常用的操作系統(tǒng)有μC/OS-II、Linux、Windows CE、VxWorks、pSOS、QNX、Palm OS等。
1)μC/OS-II操作系統(tǒng)簡(jiǎn)介
μC/OS-II(Micro Control Operation System)是美國(guó)人Jean J. Labrosse開(kāi)發(fā)的實(shí)時(shí)操作系統(tǒng)內(nèi)核。這個(gè)內(nèi)核的產(chǎn)生與Linux有點(diǎn)相似,Labrosse利用一年多的時(shí)間開(kāi)發(fā)了這個(gè)最初名為μC/OS的實(shí)時(shí)操作系統(tǒng),并于1992年在《Embedded System Programming》雜志上發(fā)表了相關(guān)文章,并將源代碼公布在該雜志的網(wǎng)站上。1993年出版專著的熱銷以及源代碼的公開(kāi)推動(dòng)了μC/OS-II本身的發(fā)展。目前,μC/OS-II已經(jīng)被移植到Intel、Samsung、Motorola等公司的不同微處理器中。
作為一個(gè)實(shí)時(shí)操作系統(tǒng),μC/OS-II的進(jìn)程調(diào)度是按占先式、多任務(wù)系統(tǒng)設(shè)計(jì)的,即它總是執(zhí)行處于就緒隊(duì)列中優(yōu)先級(jí)最高的任務(wù)。μC/OS-II將進(jìn)程的狀態(tài)分為就緒狀態(tài)(Ready)、運(yùn)行(Running)、等待(Waiting)、休眠(Dormant)和中斷(ISR)共五個(gè)狀態(tài)。其應(yīng)用面覆蓋了如照相機(jī)、醫(yī)療器械、音響設(shè)備、發(fā)動(dòng)機(jī)控制、高速公路電話系統(tǒng)、自動(dòng)提款機(jī)等諸多領(lǐng)域。μC/OS-II操作系統(tǒng)有如下的特點(diǎn)和性能:
(1)公開(kāi)源代碼,全部核心代碼只有8.3 KB。它只包含了進(jìn)程調(diào)度、時(shí)鐘管理、內(nèi)存管理和進(jìn)程間的通信與同步等基本功能,而沒(méi)有I/O管理、文件系統(tǒng)、網(wǎng)絡(luò)等額外模塊。
(2)具有可移植性、可固化、可裁減性。在μC/OS-II操作系統(tǒng)中涉及系統(tǒng)移植的源代碼文件只有3個(gè),只要編寫4個(gè)匯編語(yǔ)言的函數(shù)、6個(gè)C函數(shù)、定義3個(gè)宏和1個(gè)常量,其代碼長(zhǎng)度不過(guò)二三百行,移植起來(lái)并不困難。
一般而言,μC/OS-II的源代碼絕大部分是用C語(yǔ)言編寫的,經(jīng)過(guò)編譯就能在宿主機(jī)(PC)上運(yùn)行,僅有與CPU密切相關(guān)的一部分是用匯編語(yǔ)言寫成的。這種操作系統(tǒng)的不足之處有如下幾個(gè)方面:只有多任務(wù)調(diào)度的簡(jiǎn)單內(nèi)核;內(nèi)存管理過(guò)于簡(jiǎn)單,幾乎沒(méi)有動(dòng)態(tài)內(nèi)存管理功能;文件系統(tǒng)和圖形界面需要外掛;對(duì)于設(shè)備驅(qū)動(dòng)程序沒(méi)有專門統(tǒng)一的接口。
2)Linux操作系統(tǒng)簡(jiǎn)介
Linux是由Linus Torvalds編寫及發(fā)布的、源代碼公開(kāi)、可免費(fèi)使用的操作系統(tǒng)。經(jīng)由Internet上成百上千的程序員的加入,Linux成為了一個(gè)幾乎支持所有主流32位CPU的操作系統(tǒng)。
嵌入式系統(tǒng)越來(lái)越追求數(shù)字化、網(wǎng)絡(luò)化和智能化。因此,原來(lái)在某些設(shè)備或領(lǐng)域中占主導(dǎo)地位的軟件系統(tǒng)已經(jīng)很難再繼續(xù)使用。這樣要求整個(gè)系統(tǒng)必須是開(kāi)放的、提供標(biāo)準(zhǔn)的應(yīng)用編程接口軟件API(Application Programming Interface),并且能夠方便地與眾多第三方的軟硬件溝通。
隨著Linux的迅速發(fā)展,嵌入式Linux現(xiàn)在已經(jīng)有了許多版本,包括強(qiáng)實(shí)時(shí)的嵌入式Linux(RT-Linux和KURT-Linux)和一般的嵌入式Linux(如μClinux和Pocket Linux等)。其中,RT-Linux通過(guò)把通常的Linux任務(wù)優(yōu)先級(jí)設(shè)為最低,而所有的實(shí)時(shí)任務(wù)的優(yōu)先級(jí)都高于它,以達(dá)到既兼容通常的Linux任務(wù),又保證實(shí)時(shí)性能的目的。
自由免費(fèi)軟件Linux的出現(xiàn)對(duì)目前商用嵌入式操作系統(tǒng)帶來(lái)了沖擊,它可以被移植到多個(gè)不同結(jié)構(gòu)的CPU和硬件平臺(tái)上,具有一定的穩(wěn)定性、各種性能的升級(jí)能力,而且開(kāi)發(fā)更加容易。其特點(diǎn)是:
● 開(kāi)放源代碼,不存在黑箱技術(shù),易于定制裁減,在價(jià)格上極具競(jìng)爭(zhēng)力;
● 內(nèi)核小、功能強(qiáng)大、運(yùn)行穩(wěn)定、效率高,不僅支持x86CPU,還可支持其他數(shù)十種CPU芯片;
● 有大量的且不斷增加的開(kāi)發(fā)工具和開(kāi)發(fā)環(huán)境,沿用了UNIX的發(fā)展方式,遵循國(guó)際標(biāo)準(zhǔn),可方便地獲得眾多第三方軟/硬件廠商的支持;
● Linux內(nèi)核的結(jié)構(gòu)在網(wǎng)絡(luò)方面是非常完整的,它提供了對(duì)十兆位以太網(wǎng)、百兆位以太網(wǎng)、千兆位以太網(wǎng)、無(wú)線網(wǎng)絡(luò)、令牌網(wǎng)、光纖網(wǎng)、衛(wèi)星等多種聯(lián)網(wǎng)方式的全面支持;此外,在圖像處理、文件管理及多任務(wù)支持等諸多方面也都非常出色;
● 一個(gè)可用的Linux系統(tǒng)包括內(nèi)核和應(yīng)用程序兩個(gè)部分,應(yīng)用程序包括系統(tǒng)的部分初始化、基本的人機(jī)界面和必要的命令等內(nèi)容;內(nèi)核為應(yīng)用程序提供了一個(gè)虛擬的硬件平臺(tái),以統(tǒng)一的方式對(duì)資源進(jìn)行訪問(wèn),并且透明地支持多任務(wù);
● Linux內(nèi)核一般可分為六個(gè)部分,進(jìn)程調(diào)度、內(nèi)存管理、文件管理、進(jìn)程間通信、網(wǎng)絡(luò)和驅(qū)動(dòng)程序。
另一種常用的嵌入式Linux是μClinux,它是指對(duì)Linux經(jīng)過(guò)小型化裁剪后,能夠固化在容量只有幾百KB或幾MB的存儲(chǔ)器芯片中,應(yīng)用于特定嵌入式場(chǎng)合的專用Linux操作系統(tǒng)。μClinux也是針對(duì)沒(méi)有存儲(chǔ)器管理單元MMU的處理器而設(shè)計(jì)的,它不能使用處理器的虛擬內(nèi)存管理技術(shù)。對(duì)內(nèi)存的訪問(wèn)是直接的,使用程序中的地址都是實(shí)際的物理地址。有關(guān)Linux操作系統(tǒng)的更詳細(xì)介紹,請(qǐng)參考有關(guān)書籍。
Linux具備一整套工具鏈,容易自行建立嵌入式系統(tǒng)的開(kāi)發(fā)環(huán)境和交叉運(yùn)行環(huán)境,可以跨越嵌入式系統(tǒng)開(kāi)發(fā)中仿真工具的障礙。傳統(tǒng)的嵌入式開(kāi)發(fā)的程序調(diào)試和調(diào)試工具是用在線仿真器(ICE)實(shí)現(xiàn)的。它通過(guò)取代目標(biāo)板的微處理器,給目標(biāo)程序提供一個(gè)完整的仿真環(huán)境,完成監(jiān)視和調(diào)試程序,但一般價(jià)格比較昂貴,只適合做非常底層的調(diào)試。使用嵌入式Linux,一旦軟硬件能夠支持正常的串口功能,即使不用仿真器,也可以很好地進(jìn)行開(kāi)發(fā)和調(diào)試。嵌入式Linux提供的工具鏈有利用GNU的gcc做編譯器,用gdh、kgdh、xgdb做調(diào)試工具,能夠很方便地實(shí)現(xiàn)從操作系統(tǒng)到應(yīng)用軟件各個(gè)級(jí)別的調(diào)試。
3)Windows CE操作系統(tǒng)簡(jiǎn)介
Windows CE是Microsoft公司專門為一些體積小、資源要求低的便攜式、手持式等信息設(shè)備而開(kāi)發(fā)出來(lái)的一個(gè)非常小巧精致的嵌入式軟實(shí)時(shí)操作系統(tǒng)。這個(gè)操作系統(tǒng)的核心全部是由C語(yǔ)言開(kāi)發(fā)的,操作系統(tǒng)本身還包含許多由各個(gè)廠家用C語(yǔ)言和匯編語(yǔ)言開(kāi)發(fā)的驅(qū)動(dòng)程序。Windows CE的內(nèi)核提供內(nèi)存管理、占先式多任務(wù)和中斷處理等功能。內(nèi)核的上面使用的是圖形用戶界面GUI和桌面應(yīng)用程序。在GUI內(nèi)部運(yùn)行著所有的應(yīng)用程序,而且多個(gè)應(yīng)用程序可以同時(shí)運(yùn)行,但是,Windows CE沒(méi)有DOS模式。
Windows CE以多種方式將一個(gè)虛擬的桌面計(jì)算機(jī)置于掌上或放置于口袋中,它可以被看成Windows 98/NT的微縮版,但是Windows CE和Windows 98/NT之間還存在著一些明顯的差別。作為Windows操作系統(tǒng)的嵌入式微型版本,Windows CE不得不放棄某些Windows操作系統(tǒng)中一些復(fù)雜的特性和功能。Windows CE操作系統(tǒng)的基本內(nèi)核需要至少200 KB的ROM。
Windows CE是針對(duì)有限資源的平臺(tái)而設(shè)計(jì)的多線程、完整優(yōu)先權(quán)、多任務(wù)的操作系統(tǒng),但它不是一個(gè)硬實(shí)時(shí)操作系統(tǒng)。高度模塊化是它的重要特性,它適合作為可裁減的32位嵌入式操作系統(tǒng)。Windows CE既適用于工業(yè)設(shè)備的嵌入式控制模塊,也適用于消費(fèi)類電子產(chǎn)品,如電話、機(jī)頂盒和掌上電腦等。針對(duì)不同的目標(biāo)設(shè)備硬件環(huán)境,可以在內(nèi)核基礎(chǔ)上添加各種模塊,從而形成一個(gè)定制的嵌入式操作系統(tǒng)。Windows CE的核允許每個(gè)進(jìn)程有256個(gè)優(yōu)先級(jí),采用占先式優(yōu)先權(quán)調(diào)度法。
對(duì)于應(yīng)用程序開(kāi)發(fā)者來(lái)說(shuō),Windows CE提供了Windows程序員熟悉的各種開(kāi)發(fā)環(huán)境,如Microsoft Win32 API、ActiveX控件、消息隊(duì)列、COM接口、ATL和MFC,它們不僅有助于提高開(kāi)發(fā)者的開(kāi)發(fā)效率,而且有利于從其他Microsoft平臺(tái)上移植各種成功的應(yīng)用程序。Windows CE通過(guò)ActiveSync實(shí)現(xiàn)嵌入式設(shè)備與臺(tái)式計(jì)算機(jī)之間的通信。Windows CE與Windows等桌面操作系統(tǒng)的區(qū)別表現(xiàn)在以下五個(gè)方面:
(1)Windows CE不能運(yùn)行現(xiàn)有的任何Windows應(yīng)用程序,這意味著所有建立在Windows CE上的實(shí)時(shí)應(yīng)用軟件都必須為Windows CE重新編譯、鏈接。
(2)Windows CE有嚴(yán)格的內(nèi)存限制。雖然目前PC的內(nèi)存容量驚人地快速增長(zhǎng),為Windows的運(yùn)行提供了充分的內(nèi)存空間,但在Windows CE下情況卻不同。Windows CE的內(nèi)存限制主要區(qū)別體現(xiàn)在減少物理內(nèi)存數(shù)量、用戶控制內(nèi)存的容量和能夠自動(dòng)處理調(diào)整內(nèi)存狀態(tài)三個(gè)方面。
(3)Windows CE有精簡(jiǎn)的運(yùn)行庫(kù)和API。Windows CE和Windows 98/NT平臺(tái)的一個(gè)很大區(qū)別是前者縮減了C/C++運(yùn)行庫(kù)和API。許多常見(jiàn)的ANSI函數(shù)已被Windows API函數(shù)代替或被完全刪除。也就是說(shuō),現(xiàn)有的Windows程序可能一開(kāi)始不能被Windows CE編譯,必須做一些相應(yīng)的修改。
(4)Windows CE設(shè)備通常沒(méi)有鼠標(biāo)。在Windows 98/NT中,鼠標(biāo)用來(lái)控制一個(gè)應(yīng)用程序及其顯示,或者說(shuō)改變對(duì)象、改變窗口大小、在屏幕上拖放目標(biāo)以及導(dǎo)航菜單條目。換句話說(shuō),用鼠標(biāo)可以完成Windows 98/NT下的所有操作。但是,大部分Windows CE設(shè)備沒(méi)有鼠標(biāo)。Windows CE設(shè)備中用一個(gè)被稱為指示筆的筆樣工具來(lái)代替鼠標(biāo)。與鼠標(biāo)不同,指示筆在屏幕上沒(méi)有固定的指示標(biāo)志,也就是所謂光標(biāo),Windows CE的指示筆只在用戶用它輕擊(敲擊或觸擊)屏幕時(shí)才與操作系統(tǒng)和應(yīng)用程序交互,但有些功能卻不能像鼠標(biāo)那樣實(shí)現(xiàn),如改變窗口大小和右鍵單擊。Windows CE的指示筆仍然能有效地選擇對(duì)象、導(dǎo)航菜單項(xiàng)等。Windows CE的窗口不能改變大小,窗口要么是最大化,要么是創(chuàng)建時(shí)的尺寸。
(5)Windows CE硬件不完全標(biāo)準(zhǔn)化。Windows操作系統(tǒng)可以運(yùn)行在任意標(biāo)準(zhǔn)配置的硬件上,如配備有Intel(或兼容)的芯片、適當(dāng)內(nèi)存、適當(dāng)彩色或分辨率的顯示器的計(jì)算機(jī)上。但Windows CE卻并非如此,每個(gè)Windows CE設(shè)備廠商以不同方式進(jìn)行設(shè)計(jì),因此Windows CE設(shè)備不像計(jì)算機(jī)那樣有標(biāo)準(zhǔn)配置。
Windows CE內(nèi)建了對(duì)多媒體、通信(TCP/IP、SNMP及TAPI等)和安全的支持,并已經(jīng)有了各種常用的應(yīng)用程序。利用這些開(kāi)發(fā)環(huán)境,可以比較容易地實(shí)現(xiàn)娛樂(lè)、通信和事務(wù)處理等嵌入式應(yīng)用。ActiveSync提供了從串行口、紅外線接口到網(wǎng)絡(luò)電纜的各種目前常用的通信手段。Windows CE提供了互聯(lián)網(wǎng)的瀏覽服務(wù)和其他服務(wù),使其適用于需要與互聯(lián)網(wǎng)連接的系統(tǒng)中。
Windows CE主要包括:內(nèi)核、存儲(chǔ)、圖形及多媒體、進(jìn)程間通信、通信服務(wù)、安全服務(wù)、用戶界面服務(wù)、Internet服務(wù)和本地化支持。使用Windows CE用戶需與Microsoft公司簽訂合同方可獲得源代碼。Windows CE 4.2、CE5.0和CE6.0等版本是一種針對(duì)小容量、移動(dòng)式、智能化、32位、連接設(shè)備的模塊化軟實(shí)時(shí)嵌入式操作系統(tǒng)。針對(duì)掌上設(shè)備、無(wú)線設(shè)備的動(dòng)態(tài)應(yīng)用程序和服務(wù)提供了一種功能豐富的操作系統(tǒng)平臺(tái)。
4)VxWorks操作系統(tǒng)簡(jiǎn)介
VxWorks操作系統(tǒng)是美國(guó)WindRiver公司于1983年設(shè)計(jì)開(kāi)發(fā)的一種嵌入式(無(wú)MMU)實(shí)時(shí)操作系統(tǒng)(RTOS),具有良好的持續(xù)發(fā)展能力、高性能的內(nèi)核以及友好的用戶開(kāi)發(fā)環(huán)境,在嵌入式實(shí)時(shí)操作系統(tǒng)領(lǐng)域牢牢占據(jù)著一席之地。
VxWorks操作系統(tǒng)基于微內(nèi)核結(jié)構(gòu),由400多個(gè)相對(duì)獨(dú)立的目標(biāo)模塊組成,用戶可以根據(jù)需要增加或減少模塊來(lái)裁剪和配置系統(tǒng),其鏈接器可按應(yīng)用的需要來(lái)動(dòng)態(tài)鏈接目標(biāo)模塊。操作系統(tǒng)內(nèi)部包括了進(jìn)程管理、存儲(chǔ)器管理、設(shè)備管理、文件管理、網(wǎng)絡(luò)協(xié)議及系統(tǒng)應(yīng)用等部分。VxWorks操作系統(tǒng)只占用很小的存儲(chǔ)空間,并可高度裁剪,保證了系統(tǒng)能以高的效率運(yùn)行。大多數(shù)VxWorks有專用API,采用GNU的編譯和調(diào)試器。
VxWorks系統(tǒng)是一個(gè)運(yùn)行在目標(biāo)機(jī)上的高性能嵌入式實(shí)時(shí)操作系統(tǒng),所具有的顯著特點(diǎn)是可靠性、實(shí)時(shí)性和可裁減性。VxWorks是目前嵌入式系統(tǒng)領(lǐng)域中使用最廣泛、市場(chǎng)占有率最高的系統(tǒng),它支持如x86、Sun Sparc、Motorola MC68xxx、MIPS、PowerPC等多種處理器。在美國(guó)的F-16和F-18戰(zhàn)斗機(jī)、B2隱形轟炸機(jī)、愛(ài)國(guó)者導(dǎo)彈和“索杰納”火星探測(cè)車上使用的都是VxWorks操作系統(tǒng)。
- PLC及電氣控制
- CRT顯示器現(xiàn)場(chǎng)維修實(shí)錄
- 供配電實(shí)用技術(shù)
- PLC電氣控制與組態(tài)設(shè)計(jì)
- 快學(xué)巧學(xué)電工識(shí)圖(雙色圖解版)
- 零起點(diǎn)超快學(xué)電子產(chǎn)品生產(chǎn)、裝配與調(diào)試
- 西門子S7-1500 PLC 完全精通教程
- 電路識(shí)圖從入門到精通
- 風(fēng)力發(fā)電機(jī)組機(jī)械裝調(diào)工:中級(jí)
- 電機(jī)和拖動(dòng)學(xué)習(xí)指導(dǎo)與鞏固練習(xí)
- 變頻空調(diào)器故障維修全程指導(dǎo)
- 萬(wàn)用表檢修邊學(xué)邊用
- 家用電器維修實(shí)用技能手冊(cè):熱水器、電磁爐、小家電
- 音響設(shè)備技術(shù)(第2版)
- 空調(diào)器維修自學(xué)寶典