百科解釋
目錄·嵌入式系統(tǒng)實(shí)例·歷史·特性·嵌入式系統(tǒng)設(shè)計(jì)·嵌入式軟件架構(gòu)的類型·外部鏈接·常見的嵌入式操作系統(tǒng) Soekris net4801, 適用于網(wǎng)絡(luò)應(yīng)用程序 嵌入式系統(tǒng)(Embedded system),是一種“完全嵌入受控器件內(nèi)部,為特定應(yīng)用而設(shè)計(jì)的專用計(jì)算機(jī)系統(tǒng)”。與個(gè)人計(jì)算機(jī)這樣的通用計(jì)算機(jī)系統(tǒng)不同,嵌入式系統(tǒng)通常執(zhí)行的是帶有特定要求的預(yù)先定義的任務(wù)。由于嵌入式系統(tǒng)只針對(duì)一項(xiàng)特殊的任務(wù),設(shè)計(jì)人員能夠?qū)λM(jìn)行優(yōu)化,減小尺寸降低成本。由于嵌入式系統(tǒng)通常進(jìn)行大量生產(chǎn)。所以單個(gè)的成本節(jié)約,能夠隨著產(chǎn)量進(jìn)行成百上千的放大。 個(gè)人行動(dòng)數(shù)碼助理(Personal digital assistants )及手持式計(jì)算機(jī)(handheld computers)由于它們?cè)谟布显O(shè)計(jì)的特性,即使在軟件上的擴(kuò)充性比其他設(shè)備來得好,但普遍被認(rèn)為是嵌入式設(shè)備。但是這個(gè)定義也逐漸模糊。舉例來說,OQO Model 2被引進(jìn)了Windows XP操作系統(tǒng)(operating system)上、以及使用像USB port--以上兩種特性皆屬于一般用途計(jì)算機(jī),因此嵌入式系統(tǒng)的定義又更模糊了。 嵌入式系統(tǒng)的內(nèi)核是由一個(gè)或幾個(gè)預(yù)先編程好以用來執(zhí)行少數(shù)幾項(xiàng)任務(wù)的微處理器或者微控制器組成。與通用計(jì)算機(jī)能夠運(yùn)行用戶選擇的軟件不同,嵌入式系統(tǒng)上的軟件通常是暫時(shí)不變的;所以經(jīng)常稱為“固件(firmware)”。 嵌入式系統(tǒng)實(shí)例 自動(dòng)柜員機(jī)(ATM) 航空電子,例如慣性導(dǎo)航系統(tǒng)、飛行控制硬件和軟件以及其他飛機(jī)和導(dǎo)彈中的集成系統(tǒng) 手提電話和電信交換 計(jì)算機(jī)網(wǎng)絡(luò)設(shè)備,包括路由器、時(shí)間服務(wù)器和防火墻 打印機(jī) 復(fù)印機(jī) 磁盤驅(qū)動(dòng)器(軟盤驅(qū)動(dòng)器和硬盤驅(qū)動(dòng)器) 汽車發(fā)動(dòng)機(jī)控制器和防鎖死系統(tǒng)(ABS) 家庭自動(dòng)化產(chǎn)品,如恒溫器、冷氣機(jī)、灑水裝置和安全監(jiān)視系統(tǒng) 手持計(jì)算器 家用電器,包括微波爐、洗衣機(jī)、電視機(jī)、DVD播放器和錄制器 醫(yī)療設(shè)備 測試設(shè)備,如數(shù)字存儲(chǔ)示波器、邏輯分析儀、頻譜分析儀 多功能手表 多媒體電器:因特網(wǎng)無線接收機(jī)、電視機(jī)頂盒、數(shù)字衛(wèi)星接收器 多功能打印機(jī)(MFPs) 個(gè)人數(shù)碼助理(PDA),也就是帶有個(gè)人信息管理和其他應(yīng)用程序的小型手持計(jì)算機(jī) 帶有其他能力移動(dòng)電話,如帶有蜂窩電話、PDA和Java的移動(dòng)數(shù)字助理(MIDP) 用于工業(yè)自動(dòng)化和監(jiān)測的可編程邏輯控制器(PLCs) 固定游戲機(jī)和便攜式游戲機(jī) 可穿戴計(jì)算機(jī) 歷史 第一個(gè)被大家認(rèn)可的現(xiàn)代嵌入式系統(tǒng)是麻省理工學(xué)院儀器研究室的查爾斯·斯塔克·德雷珀開發(fā)的阿波羅導(dǎo)航計(jì)算機(jī)。在兩次月球飛行中他們?cè)谔振{駛艙和月球登陸艙都是用了這種慣性制導(dǎo)系統(tǒng)。 在計(jì)劃剛開始的時(shí)候,阿波羅導(dǎo)航計(jì)算機(jī)被認(rèn)為是阿波羅計(jì)劃風(fēng)險(xiǎn)最大的部分。為了減小尺寸和重量而使用的當(dāng)時(shí)最新的單片集成電路加大了這種風(fēng)險(xiǎn)。 民兵I導(dǎo)彈上的D-17自動(dòng)導(dǎo)航控制計(jì)算機(jī) 第一款大批量生產(chǎn)的嵌入式系統(tǒng)是1961年發(fā)布的民兵I導(dǎo)彈上的D-17自動(dòng)導(dǎo)航控制計(jì)算機(jī)。它是由獨(dú)立的晶體管邏輯電路建造的,它帶有一個(gè)作為主內(nèi)存的硬盤。當(dāng)民兵II導(dǎo)彈在1966年開始生產(chǎn)的時(shí)候,D-17由第一次使用大量集成電路的更新計(jì)算機(jī)所替代。這個(gè)項(xiàng)目自己就將方塊與非門集成電路的價(jià)格從每個(gè)1000美元降到了每個(gè)3美元,使得集成電路的商業(yè)應(yīng)用稱為可能。 民兵計(jì)算機(jī)至關(guān)重要的設(shè)計(jì)特性是它的制導(dǎo)算法能夠在項(xiàng)目后期重新編程以獲得更高的導(dǎo)彈精度,并且計(jì)算機(jī)能夠測試導(dǎo)彈,從而節(jié)省電纜和接頭的重量。 由于這些二十世紀(jì)六十年代的對(duì)于價(jià)格沒有要求的早期應(yīng)用,嵌入式系統(tǒng)的價(jià)格開始下降,同時(shí)處理能力和功能也獲得了巨大的增長。這個(gè)趨勢就是摩爾定律。 第一款微處理器是英特爾4004,它在計(jì)算器和其他小型系統(tǒng)中找到了用武之地。但是,它仍然需要外部的內(nèi)存芯片和其他的外部支持邏輯電路。更加強(qiáng)大的微處理器,如英特爾8080被開發(fā)出來用于軍事項(xiàng)目和其他用途。 到了二十世紀(jì)七十年代末期,8位微處理器已經(jīng)變得普通,但是它們通常需要外部內(nèi)存芯片和解碼輸入輸出的邏輯電路。然而,價(jià)格在快速下降,更多的應(yīng)用領(lǐng)域采用小型的嵌入式系統(tǒng)取代當(dāng)時(shí)常見的專門邏輯設(shè)計(jì)。一些容易見到的應(yīng)用是儀器和昂貴的設(shè)備。 到了二十世紀(jì)八十年代中期,許多以前是外部系統(tǒng)的組件被集成到同一個(gè)處理器芯片中。這樣的結(jié)果就是嵌入式系統(tǒng)尺寸和成本的大幅下降。這樣的集成電路稱為微控制器而不是微處理器,嵌入式系統(tǒng)的大規(guī)模應(yīng)用成為可能。 隨著微控制器的價(jià)格已經(jīng)跌落到低于工程師一個(gè)小時(shí)的工資,嵌入式系統(tǒng)數(shù)量和不同廠商提供的嵌入式系統(tǒng)配件數(shù)量出現(xiàn)了大爆發(fā)。例如,許多新的特殊功能的集成電路開始使用較少插針的串行編程接口而不是傳統(tǒng)的并行接口來來連結(jié)微控制器。I2C也在這個(gè)時(shí)候出現(xiàn)。 隨著微控制器的價(jià)格跌落到1美元以下,使用小型微控制器控制的數(shù)字電路取代如分壓計(jì)和可變電容這樣的昂貴模擬組件成為可能。 到了八十年代末期,嵌入式系統(tǒng)已經(jīng)出現(xiàn)在幾乎所有的電子設(shè)備中,這個(gè)趨勢依然在繼續(xù)。 特性 嵌入式系統(tǒng)在最廣的意義上說就是計(jì)算機(jī)系統(tǒng),它包括除了專門用于通用目的之外的所有計(jì)算機(jī)。從便攜式的音樂播放器到航天飛機(jī)的實(shí)時(shí)控制子系統(tǒng)都能見到嵌入式系統(tǒng)的應(yīng)用。 多數(shù)商業(yè)嵌入式系統(tǒng)都是為了以低成本完成任務(wù)而設(shè)計(jì)的。其中絕大多數(shù)都有實(shí)時(shí)系統(tǒng)約束的要求,但并不是所有的嵌入式系統(tǒng)都有這些要求。對(duì)于其中一些過程來說它們要很快地完成,而其他一些功能可能并沒有嚴(yán)格的時(shí)間要求。這些系統(tǒng)通過與特定目的的硬件和根據(jù)系統(tǒng)要求配置的軟件組合在一起滿足實(shí)時(shí)要求。 很難根據(jù)速度或者成本描述嵌入式系統(tǒng)的特點(diǎn),但是對(duì)于大批量生產(chǎn)的系統(tǒng)來說,降低成本通常是設(shè)計(jì)的首要考慮。嵌入式系經(jīng)常有很低的性能要求,這樣系統(tǒng)硬件就可以簡化以降低成本。工程師最小化的實(shí)現(xiàn)通常選擇剛剛滿足所需功能的硬件。 例如,一個(gè)衛(wèi)星電視的數(shù)字機(jī)頂盒每秒需要處理數(shù)十兆連續(xù)數(shù)據(jù),但是這些數(shù)據(jù)的絕大部分處理過程是由分析、導(dǎo)引和解碼多路數(shù)字視頻的定制的集成電路完成的。嵌入式CPU“建立”這些處理過程并且顯示為機(jī)頂盒顯示圖形菜單等外觀。隨著嵌入式處理器速度越來越快、價(jià)錢越來越低,它們就可以從事更多的高速數(shù)據(jù)處理。 對(duì)于小批量的嵌入式系統(tǒng)來說,經(jīng)常使用個(gè)人計(jì)算機(jī)通過限制運(yùn)行的程序或者將操作系統(tǒng)更換為實(shí)時(shí)操作系統(tǒng)來實(shí)現(xiàn)。在這種情況下,用于特殊目的的硬件可以替換成一個(gè)或多個(gè)高性能的CPU。然而,有些嵌入式系統(tǒng)可能仍然需要高性能的CPU、特殊的硬件和大量的內(nèi)存以完成所需任務(wù)。 對(duì)于大批量的嵌入式系統(tǒng)來說,如手持音樂播放器或者蜂窩電話,降低成本是需要主要考慮的問題。這些系統(tǒng)通常有少數(shù)幾個(gè)集成電路、控制所有其他功能的高度集成的CPU和一片內(nèi)存。在這些系統(tǒng)的設(shè)計(jì)中每個(gè)組件的選擇和設(shè)計(jì)都要有利于降低總體成本。 許多嵌入式系統(tǒng)的軟件,尤其是那些沒有磁盤驅(qū)動(dòng)器的嵌入式系統(tǒng)的軟件也被稱為固件。固件是嵌入到硬件設(shè)備中的軟件,如固化到一個(gè)或多個(gè)ROM或者閃存IC芯片中。 嵌入式系統(tǒng)上的程序經(jīng)常運(yùn)行在有限的硬件資源上:經(jīng)常沒有磁盤、操作系統(tǒng)、鍵盤和屏幕。軟件也可能沒有如文件系統(tǒng)這樣的部分,即使有文件系統(tǒng)的話通常也是使用日志(journaling)文件系統(tǒng)的閃存驅(qū)動(dòng)器(flash drive)取代旋轉(zhuǎn)的媒體。如果有用戶界面的話,那么它就可能是一個(gè)小型按鍵或者液晶顯示。 機(jī)器中的嵌入式系統(tǒng)通常需要能夠經(jīng)年不斷地正確運(yùn)行,所以它們的軟件的開發(fā)和測試都要比個(gè)人計(jì)算機(jī)上的軟件更為仔細(xì)。許多嵌入式系統(tǒng)避免使用可動(dòng)的部件如磁盤驅(qū)動(dòng)器、開關(guān)和按鈕等,因?yàn)榭蓜?dòng)部件的可靠性要比如閃存這樣的固態(tài)部件的可靠性差。 另外,嵌入式系統(tǒng)可能在人無法到達(dá)的地方運(yùn)行,如下到油井鉆孔中、發(fā)射到外層空間等等,當(dāng)嵌入式系統(tǒng)必須在人無法到達(dá)的地方運(yùn)行時(shí),嵌入式系統(tǒng)即使在發(fā)生災(zāi)難性的數(shù)據(jù)破壞情況下也必須能夠自行重新啟動(dòng)。這通常是通過一個(gè)名為看門狗計(jì)時(shí)器的標(biāo)準(zhǔn)電子部件實(shí)現(xiàn)的,除非軟件周期性地復(fù)位這個(gè)定時(shí)器否則它就會(huì)復(fù)位計(jì)算機(jī)。 嵌入式系統(tǒng)設(shè)計(jì) 通常使用微處理器或者微控制器構(gòu)建嵌入式系統(tǒng)。一些大型的系統(tǒng)或者早期的系統(tǒng)使用通用大型計(jì)算機(jī)或者小型計(jì)算機(jī)構(gòu)建。 用戶界面 嵌入式系統(tǒng)的用戶界面類型非常繁多,所以值得進(jìn)行特殊說明。 PARC、蘋果計(jì)算機(jī)公司、波音公司和惠普公司的界面設(shè)計(jì)人員發(fā)現(xiàn)界面應(yīng)該遵循減少用戶動(dòng)作類型這樣一個(gè)原則。在嵌入式系統(tǒng)中這樣一個(gè)原則經(jīng)常與降低成本的要求結(jié)合在一起。 在嵌入式系統(tǒng)中廣泛采用的一個(gè)標(biāo)準(zhǔn)界面是使用兩個(gè)按鈕控制一個(gè)選單系統(tǒng),其中一個(gè)按鈕允許用戶滾動(dòng)選單條目,另外一個(gè)用來選擇條目。 選單系統(tǒng)廣受歡迎是因?yàn)樗鼈儽旧砭驼f明了自身內(nèi)容,并且能夠通過簡單的用戶操作選擇。 另外一個(gè)基本的技巧是減少并簡化輸出的類型。有些設(shè)計(jì)在每個(gè)接口插頭或者錯(cuò)誤條件使用狀態(tài)燈指示哪一部分發(fā)生故障。一種廉價(jià)的做法是使用兩個(gè)發(fā)光條,另外帶有一個(gè)打印出來的故障代碼表格。用戶可以將他所用語言表示的狀態(tài)貼在標(biāo)簽上。例如,許多小型打印機(jī)使用亮燈表示狀態(tài),這些狀態(tài)標(biāo)示在打印成所需語言的不干膠標(biāo)簽上。在一些市場上,他們可能使用幾種這些標(biāo)簽,這樣用戶就可以選擇最適合他們的語言。 另外一個(gè)通用的技巧是界面模式要在用戶的角度上看起來非常清楚。如果一個(gè)界面有不同的模式,它們通常應(yīng)該可以用明顯的方式的方式切換回去或者它們能夠自動(dòng)切換回去。 例如,波音公司的標(biāo)準(zhǔn)的測試界面就是一個(gè)按鈕和一些亮燈。當(dāng)按下按鈕時(shí),所有的燈就會(huì)變亮;當(dāng)松開按鈕時(shí),出現(xiàn)故障的指示燈就不會(huì)熄滅。它們的標(biāo)簽都是用基礎(chǔ)英語表示的。 設(shè)計(jì)人員會(huì)用不同的顏色表示狀態(tài)。紅色表示“危險(xiǎn)”或者一些錯(cuò)誤發(fā)生導(dǎo)致整個(gè)系統(tǒng)故障;黃色表示一些部分可能有故障;綠色表示狀態(tài)正常或良好。這就類似于街頭的紅綠燈,大多數(shù)人都知道它們的含義。 一些設(shè)計(jì)保證在用戶操作之后馬上顯示狀態(tài)的變化。如果機(jī)器要做什么動(dòng)作,通常在7秒內(nèi)開始并且匯報(bào)工作過程。 如果一項(xiàng)設(shè)計(jì)需要屏幕,設(shè)計(jì)人員經(jīng)常選擇純文本方式。優(yōu)先選用這種方式是因?yàn)橛脩粢呀?jīng)有多年識(shí)別標(biāo)記的經(jīng)驗(yàn)。圖形用戶接口看起來很漂亮也能完成所有的功能,但是通常它們會(huì)增加一年的設(shè)計(jì)、批準(zhǔn)和翻譯延期、增加項(xiàng)目一到兩個(gè)程序員的費(fèi)用,而這些工作并沒有多少實(shí)際意義。經(jīng)常一個(gè)過于聰明的圖形用戶接口因?yàn)榭赡苁褂糜脩舨皇煜さ姆?hào),所以實(shí)際上可能會(huì)讓他們感到困惑。 如果設(shè)計(jì)需要指示如復(fù)印機(jī)那樣的機(jī)器零部件,在實(shí)際的機(jī)器上它們通常使用數(shù)字進(jìn)行編號(hào),這些編號(hào)能在機(jī)器外觀上看到。 網(wǎng)絡(luò)界面就是一個(gè)遠(yuǎn)程的屏幕,同其他的用戶界面類似。 最成功的屏幕界面之一就是兩個(gè)選單按鈕和一行用戶所說語言的文本。它用在尋呼機(jī)、中檔打印機(jī)、網(wǎng)絡(luò)交換機(jī)和其他一些需要用戶復(fù)雜操作的中檔價(jià)位的場合。 如果使用的是較大的屏幕,觸摸屏和屏幕旁的按鈕也可以減少用戶操作的類型并且容易控制選單選擇。這種系統(tǒng)的優(yōu)點(diǎn)就是按鈕的含義可以隨著屏幕而變化,并且選擇的過程非常類似于人們自然選擇東西的方式。 當(dāng)使用文本的時(shí)候,設(shè)計(jì)人員就要選擇一種或者多種語言。缺省語言通常是目標(biāo)用戶最為常用的語言。許多設(shè)計(jì)人員使用目標(biāo)客戶群的本地語言以更好地滿足他們的需要。 文本通常是由專業(yè)人員進(jìn)行翻譯,即使開發(fā)人員也說那種語言也是這樣。市場銷售人員能夠告訴國外的銷售商說這些翻譯都是非常專業(yè)的。一個(gè)國外的制造商有可能要求最大的銷售商審查、更正這些本地語言的翻譯以促進(jìn)產(chǎn)品被本地銷售人員接受。 許多權(quán)威人士認(rèn)為可用性測試比任何數(shù)量的觀點(diǎn)都重要,設(shè)計(jì)人員推薦可用性要盡早進(jìn)行測試。一個(gè)常用的快速、dirty測試方法是讓秘書使用工程師使用奇怪的標(biāo)志拖動(dòng)、控制的紙板模型。錄制的錄像帶顯示這樣做不僅很幽默也很有教育意義,In the tapes, every time the engineer talks, the interface has failed because it would cause a service call. 在許多組織里,用戶界面要有一個(gè)人要批準(zhǔn),通常這個(gè)人是客戶、主要的銷售商或者直接負(fù)責(zé)系統(tǒng)銷售的人。 平臺(tái) 在嵌入式系統(tǒng)設(shè)計(jì)中有許多不同的CPU架構(gòu),如ARM、MIPS、Coldfire/68k、PowerPC、X86、PIC、Intel 8051、Atmel AVR、Renesas H8、SH、V850、FR-V、M32R、DMCU等。 這與桌面計(jì)算機(jī)市場有所不同,寫這篇文章的2003年為止在那個(gè)領(lǐng)域只有少數(shù)幾家競爭的架構(gòu),其中主要是英特爾/AMDx86和用于Apple Macintosh的Apple/Motorola/IBM PowerPC。在桌面計(jì)算機(jī)領(lǐng)域,隨著對(duì)于Java接受程度的增長,軟件對(duì)于特定運(yùn)行環(huán)境的依賴越來越少。 PC/104標(biāo)準(zhǔn)是小型、小批量嵌入式和ruggedized系統(tǒng)設(shè)計(jì)的基礎(chǔ)。這些系統(tǒng)通常使用DOS、Linux、NetBSD或者如QNX、Inferno這樣的實(shí)時(shí)嵌入式操作系統(tǒng)。 大批量生產(chǎn)的嵌入式系統(tǒng)的通常配置是系統(tǒng)單芯片(en:System On Chip),它是一個(gè)專用集成電路,CPU是外購的知識(shí)產(chǎn)權(quán)并且添加到集成電路設(shè)計(jì)中。一個(gè)類似的常用機(jī)制是使用可編程門陣列,所有的邏輯包括CPU部分都可以編程實(shí)現(xiàn)。許多時(shí)髦的FPGA都是為這個(gè)目的設(shè)計(jì)的。 工具 同典型的計(jì)算機(jī)程序員一樣,嵌入式系統(tǒng)設(shè)計(jì)人員也使用編譯器、連結(jié)器和調(diào)試器開發(fā)嵌入式系統(tǒng)軟件。然而,他們也使用一些大多數(shù)程序員不熟悉的工具。 軟件工具的來源有如下幾種: 專注于嵌入式系統(tǒng)市場的軟件公司 從GNU軟件開發(fā)工具移植(參見交叉平臺(tái)編譯) 有些情況下,如果嵌入式處理器與普通個(gè)人計(jì)算機(jī)處理器很近似的話也可以使用個(gè)人計(jì)算機(jī)開發(fā)工具 嵌入式系統(tǒng)設(shè)計(jì)人員也使用一些不為普通計(jì)算機(jī)程序員所熟悉的軟件工具: 一個(gè)常用工具是“電路內(nèi)部仿真器”(ICE,in-circuit emulator)或者是最新設(shè)計(jì)中的嵌入式調(diào)試器。這個(gè)調(diào)試工具是開發(fā)嵌入式程序的基本技巧。它代替微處理器或者嵌入微處理器內(nèi)部,提供了在系統(tǒng)中快速調(diào)用和調(diào)試試驗(yàn)代碼的便捷工具。一個(gè)焊點(diǎn)通常就是一個(gè)插入系統(tǒng)的特殊電路,通常使用一臺(tái)連結(jié)到這些焊點(diǎn)的個(gè)人計(jì)算機(jī)作為調(diào)試界面。 連結(jié)器通常是各種各樣(exotic)。對(duì)于大多數(shù)商業(yè)編程來說,連接器幾乎總是最后才想起的(afterthough)部分,缺省設(shè)置也從來不變。與此相反,嵌入式連結(jié)器有完整、復(fù)雜的命令行語言是很普通的。經(jīng)常有不同類型的內(nèi)存,分別保存特殊的代碼和數(shù)據(jù)。單獨(dú)的數(shù)據(jù)結(jié)構(gòu)能夠放在特殊的地址,這樣軟件能夠很方便地訪問映射到內(nèi)存的控制寄存器。嵌入式連結(jié)器經(jīng)常有用于減小代碼大小和運(yùn)行時(shí)間的外部(exotic)優(yōu)化工具。例如,他們可能移動(dòng)子程序的位置以使用較小的調(diào)用和跳轉(zhuǎn)指令。它們經(jīng)常帶有管理data overlays和band switch技術(shù)的特性,這些技術(shù)是在嵌入式軟件經(jīng)常使用的擴(kuò)展廉價(jià)CPU的方法。 另外一個(gè)常用的工具是一個(gè)在程序中添加代碼和或者CRC的工具程序(經(jīng)常是自己寫的),使用這個(gè)工具嵌入式系統(tǒng)能夠在執(zhí)行程序之前先進(jìn)行程序數(shù)據(jù)檢查。 為數(shù)字信號(hào)處理開發(fā)軟件的嵌入式程序員經(jīng)常使用MatchCad或者M(jìn)athematica這樣的數(shù)學(xué)工具進(jìn)行數(shù)學(xué)仿真。 一些較少使用的工具有將數(shù)據(jù)文件轉(zhuǎn)換成代碼的工具,使用這種工具就可以在程序中包含任意類型的數(shù)據(jù)。 少數(shù)一些項(xiàng)目為了特殊的可靠性或者數(shù)字信號(hào)處理要求使用同步編程語言。 一些編程語言為嵌入式系統(tǒng)編程提供了一些特殊支持。 對(duì)于C語言,ISO/IEC TR 18037:2005定義了 指定的地址空間 指定的存儲(chǔ)類 基本輸入輸出的硬件尋址 調(diào)試 調(diào)試通常使用內(nèi)部電路仿真器或者其他一些能夠在微控制器微碼(microcode)內(nèi)部產(chǎn)生中斷的調(diào)試器。微碼中斷讓調(diào)試器能夠在只有CPU工作的硬件中進(jìn)行操作,基于CPU的調(diào)試器能夠從CPU的角度來測試和調(diào)試計(jì)算機(jī)的電路。PDP-11開創(chuàng)了這種特性的先河。 開發(fā)人員能夠仍然使用斷點(diǎn)、單步執(zhí)行以及高級(jí)語言進(jìn)行調(diào)試,在許多的調(diào)試工具上都有這種能力。另外開發(fā)人員在調(diào)試實(shí)時(shí)事件順序的時(shí)候需要記錄、使用簡單的記錄工具。 首先遇到這種問題的個(gè)人電腦和大型機(jī)程序員經(jīng)常在設(shè)計(jì)優(yōu)先級(jí)和可行方法的時(shí)候感到困惑。指導(dǎo)、代碼審查和非個(gè)人風(fēng)格(egoless)的編程是值得推薦的。 隨著嵌入式系統(tǒng)變得越來越復(fù)雜,更高層次的工具和操作系統(tǒng)逐漸移植到可行的設(shè)備上。例如,蜂窩電話、個(gè)人數(shù)字助理和其他的消費(fèi)用計(jì)算機(jī)需要一些從個(gè)人或者這些電子設(shè)備制造商之外的公司購買或者提供的一些重要軟件。在這些系統(tǒng)中,需要如Linux、OSGi或者Java這樣的開放編程環(huán)境,這樣第三方軟件提供上才能夠在大規(guī)模的市場上銷售軟件。 大多數(shù)這樣的開發(fā)環(huán)境都有一個(gè)運(yùn)行在個(gè)人電腦上的參考設(shè)計(jì),這種軟件的絕大部分都可以在傳統(tǒng)的個(gè)人電腦上開發(fā)。然而,從開放環(huán)境移植到專用的電子設(shè)備和電子設(shè)備的驅(qū)動(dòng)程序開發(fā)通常仍然是傳統(tǒng)的嵌入式系統(tǒng)軟件工程師的工作。在有些情況下, the engineer works for the integrated circuit manufacturer, but there is still such a person somewhere. 操作系統(tǒng) 使用Windows XP的因特網(wǎng)收費(fèi)電話 嵌入式系統(tǒng)經(jīng)常沒有操作系統(tǒng)、專用的嵌入式操作系統(tǒng)(經(jīng)常是實(shí)時(shí)操作系統(tǒng))或者指定程序員移植到這些新系統(tǒng)。 啟動(dòng) 嵌入式系統(tǒng)帶有啟動(dòng)代碼,通常它禁止中斷、設(shè)置電子設(shè)備參數(shù)、測試計(jì)算機(jī)(RAM、CPU和軟件),然后開始應(yīng)用程序運(yùn)行。許多嵌入式系統(tǒng)從短暫的掉電狀態(tài)恢復(fù),經(jīng)常重起而不進(jìn)行最近的自檢。在十分之一秒內(nèi)重起是常見的現(xiàn)象。 許多設(shè)計(jì)人員發(fā)現(xiàn)LED在指示錯(cuò)誤狀態(tài)上非常有用,它們可以幫助進(jìn)行故障處理。一個(gè)常用的機(jī)制是在復(fù)位的時(shí)候點(diǎn)亮電子設(shè)備所有的LED以表明供電和LED正常工作;然后在進(jìn)行加電自檢時(shí)由軟件改變LED的狀態(tài);在此之后,軟件用這些LED指示操作過程中的正;蛘吖收蠣顟B(tài)。這可以讓技術(shù)人員、工程師和用戶了解系統(tǒng)的狀態(tài)。一個(gè)有趣的例外是電度表(electric power meters)和其他一些大街上的東西,閃爍的指示燈是為了吸引注意力或者表示損壞狀態(tài)。 內(nèi)部自檢 許多嵌入式系統(tǒng)都有一定程度或者一定數(shù)量的內(nèi)部加電自檢,自檢有幾種類型: 計(jì)算機(jī)檢查:檢查CPU、RAM和程序存儲(chǔ)器。通常一加電就開始這些檢查,在一些安全性非常重要的系統(tǒng)中,通常周期性地在安全時(shí)間間隔內(nèi)進(jìn)行自檢,或者經(jīng)過一段時(shí)間就進(jìn)行自檢。 外圍設(shè)備檢查:仿真輸入和讀入數(shù)據(jù)或者測量輸出數(shù)據(jù)。有大量的通信、模擬和控制系統(tǒng)都有這些非常廉價(jià)的檢查。 電源檢查:通常測試每個(gè)供電電路,也可能檢查電池或者主電源輸入。通常供電部分的負(fù)載都很重,并且少有余量,所以這項(xiàng)檢查很有意義。 通信檢查:驗(yàn)證從相連單元接收到的簡單消息,例如在互聯(lián)網(wǎng)上使用ICMP消息“ping”。 電纜檢查:將線連結(jié)到待檢查的電纜上指示針進(jìn)行檢查。如電話這樣的同步通信系統(tǒng)經(jīng)常使用“同步”測試。電纜檢查成本很低,當(dāng)單元部分有插頭的時(shí)候這項(xiàng)檢查尤其重要。 裝備檢查:一個(gè)系統(tǒng)在安裝時(shí)經(jīng)常需要進(jìn)行調(diào)整,這項(xiàng)檢查就向安裝人員做出狀態(tài)指示。 消耗檢查:檢查系統(tǒng)所消耗的東西、在預(yù)量太低時(shí)發(fā)出警告。最常見的例子是汽車的油量表,最復(fù)雜的例子可能是維持化學(xué)反應(yīng)物詳細(xì)狀態(tài)的自動(dòng)醫(yī)學(xué)分析系統(tǒng)。 運(yùn)行檢查:檢查用戶關(guān)心的系統(tǒng)運(yùn)行狀態(tài)。顯然,在系統(tǒng)運(yùn)行時(shí)必須進(jìn)行這項(xiàng)檢查,這方面的檢查包括飛機(jī)上的導(dǎo)航儀器、汽車的速度表和磁盤的指示燈等。 安全檢查:在''安全時(shí)限''內(nèi)進(jìn)行檢查確保系統(tǒng)仍然可靠。安全時(shí)限通常小于能夠產(chǎn)生損害的最小時(shí)間。 可靠性體系 根據(jù)人們需求的不同可靠性也有不同的定義,有意思的事,可靠性的類型卻相對(duì)較少,相似可靠性類型的系統(tǒng)使用相似類型的內(nèi)在檢查和恢復(fù)方法: 系統(tǒng)非常不安全或者無法修理。這包括太空系統(tǒng)、水下電纜、導(dǎo)航燈塔、鉆孔系統(tǒng),非常奇怪的是還包括汽車和大規(guī)模生產(chǎn)產(chǎn)品?偟膩碚f,嵌入式系統(tǒng)檢測各個(gè)子系統(tǒng)、在線切換到冗余部分或者工作在“l(fā)imp 模式”提供部分的功能。大規(guī)模生產(chǎn)的消費(fèi)產(chǎn)品如汽車、個(gè)人電腦或者打印機(jī)也屬于這個(gè)類別,這是因?yàn)榕c購買的費(fèi)用相比維修費(fèi)用高昂、維修人員又路途遙遠(yuǎn)。 系統(tǒng)不能安全地停止運(yùn)行。這包括飛機(jī)導(dǎo)航、反應(yīng)控制系統(tǒng)、重要的化學(xué)工廠安全控制、鐵路信號(hào)、單發(fā)動(dòng)機(jī)飛機(jī)的發(fā)動(dòng)機(jī),如上所述,但是“l(fā)imp 模式”較難容忍,通常需要操作員選擇備份系統(tǒng)。 系統(tǒng)停機(jī)時(shí)將會(huì)造成大量的金錢損失。這些包括電話交換機(jī)、工廠控制、橋梁和電梯控制、資金轉(zhuǎn)移、市場開發(fā)、自動(dòng)銷售和服務(wù)等,這些系統(tǒng)通常有一些運(yùn)轉(zhuǎn)/不運(yùn)轉(zhuǎn)測試,它們通常帶有在線冗余或者使用替換系統(tǒng)和人工過程的 limp 模式。 系統(tǒng)不安全的時(shí)候不能操作。同上面的情況類似,系統(tǒng)的運(yùn)行將會(huì)造成大量的金錢損失。醫(yī)療設(shè)備、帶有發(fā)動(dòng)機(jī)這樣的熱備份的飛行器、化學(xué)工廠控制、自動(dòng)股票交易、游戲系統(tǒng)等。測試可能是五花八門,但是出錯(cuò)時(shí)能夠做的就是停止整個(gè)系統(tǒng)。 嵌入式軟件架構(gòu)的類型 常用的嵌入式軟件架構(gòu)有幾種不同的基本類型。 控制循環(huán) 在這種設(shè)計(jì)中,軟件有一個(gè)簡單的循環(huán),這個(gè)循環(huán)調(diào)用各個(gè)子程序,每個(gè)子程序管理硬件或者軟件的某一部分。中斷通常用來設(shè)置標(biāo)記或者更新軟件其他部分能夠讀取的寄存器。 系統(tǒng)使用簡單的API來完成允許和禁止中斷設(shè)置。如果處理得當(dāng)?shù)脑挘軌蛟谇短鬃映绦蛑刑幚砬短渍{(diào)用,在最外面的中斷允許嵌套中恢復(fù)前面的中斷狀態(tài)。這種方法是實(shí)作Exokernel的一個(gè)最簡單的方法。 通常在循環(huán)中有一些子程序使用周期性的即時(shí)中斷控制一組軟件定時(shí)器,當(dāng)一個(gè)定時(shí)器時(shí)間到的時(shí)候就會(huì)執(zhí)行相應(yīng)的子程序或者設(shè)置相應(yīng)的標(biāo)志。 任何可能發(fā)生的硬件事件都應(yīng)該有軟件定時(shí)器的支持,硬件事件大概每萬億次出現(xiàn)一次錯(cuò)誤,對(duì)于現(xiàn)代的硬件來說大概是一年發(fā)生一次,對(duì)于以百萬計(jì)大規(guī)模生產(chǎn)的設(shè)備來說,遺漏一個(gè)軟件軟件定時(shí)器在商業(yè)上可能是災(zāi)難性的。 有時(shí)測試軟件運(yùn)行一組基于軟件的安全定時(shí)器,它們周期性地復(fù)位硬件中的軟件看門狗。如果軟件錯(cuò)過一個(gè)事件,安全定時(shí)器軟件將會(huì)捕捉到它。如果安全定時(shí)器出錯(cuò),看門狗硬件將會(huì)復(fù)位系統(tǒng)。 可以使用指向每個(gè)狀態(tài)機(jī)函數(shù)的指針實(shí)作狀態(tài)機(jī),函數(shù)可以用C++、C或者匯編語言等實(shí)作。變化的狀態(tài)將不同的函數(shù)放到指針中,每次循環(huán)運(yùn)行時(shí)都會(huì)執(zhí)行函數(shù)指針。 許多設(shè)計(jì)人員建議每個(gè)循環(huán)讀一次輸入輸出設(shè)備、并且保存得到的結(jié)果,這樣可以保證邏輯過程的在一致的參數(shù)上運(yùn)行。 許多設(shè)計(jì)人員喜歡將狀態(tài)機(jī)設(shè)計(jì)成每個(gè)狀態(tài)僅僅檢查一到兩項(xiàng)內(nèi)容,通常是檢查硬件事件和軟件定時(shí)器。 設(shè)計(jì)人員建議多級(jí)狀態(tài)機(jī)應(yīng)該讓低層狀態(tài)機(jī)早于高層狀態(tài)機(jī)運(yùn)行,這樣高層就能夠根據(jù)正確的信息運(yùn)行。 如內(nèi)部燃燒控制這樣的復(fù)雜功能通常根據(jù)多維表格進(jìn)行處理,代碼通常進(jìn)行查表處理而不進(jìn)行復(fù)雜的計(jì)算,為了減小表格的大小以及成本軟件可以在條目之間進(jìn)行差值運(yùn)算。 在最小的微控制器中,尤其是只有128字節(jié)堆棧的8051中,控制環(huán)允許好的連接器使用靜態(tài)分配的數(shù)據(jù)覆蓋本地變量。在這種機(jī)制中,離子程序調(diào)用樹末端越近的變量得到的內(nèi)存地址越高。當(dāng)開始一個(gè)新的分支的時(shí)候,它的變量可以在以前分支遺棄的空間中進(jìn)行重新分配。 簡單控制循環(huán)的一個(gè)主要缺點(diǎn)是它無法保證響應(yīng)特定硬件事件的時(shí)間。 細(xì)心的設(shè)計(jì)可以很容易地保證中斷不會(huì)被長時(shí)間禁止,這樣中斷代碼就可以在非常精確的時(shí)間運(yùn)行。 控制環(huán)的另外一個(gè)主要缺陷是增加新的特性的時(shí)候會(huì)變得復(fù)雜。需要花費(fèi)很長時(shí)間的算法必須小心地進(jìn)行分解以使得每次只有一小部分在主循環(huán)中運(yùn)行。 這種系統(tǒng)的優(yōu)勢是它的簡單性,并且在很小的軟件上,循環(huán)執(zhí)行地很快幾乎沒有人關(guān)心它是不可預(yù)測的。 它的另外一個(gè)優(yōu)勢是這種系統(tǒng)保證運(yùn)行軟件的質(zhì)量,無法將不好的運(yùn)行結(jié)果歸咎為其他的操作系統(tǒng)。 非搶先多任務(wù) 非搶先多任務(wù)系統(tǒng)非常類似于上面的系統(tǒng),只是這個(gè)循環(huán)是隱藏在API中的。我們定義一系列的任務(wù),每個(gè)任務(wù)獲得自己的子程序棧;然后,當(dāng)一個(gè)任務(wù)空閑的時(shí)候,它調(diào)用一個(gè)空閑子程序(通常調(diào)用“暫停”、“等候”、“交出(:en:yield)”等等)。 帶有類似屬性的架構(gòu)都帶有一個(gè)事件隊(duì)列,有一個(gè)循環(huán)根據(jù)隊(duì)列列表中的一個(gè)域確定刪除時(shí)間和調(diào)用子程序。 這種架構(gòu)的優(yōu)點(diǎn)和缺點(diǎn)都非常類似于控制環(huán),只是這種方法添加新的軟件更加簡單,只需要簡單地編寫新的任務(wù)或者將它添加到隊(duì)列解釋器中。 搶先式定時(shí)器 使用上面的任何一種系統(tǒng),但是添加一個(gè)按照定時(shí)器中斷運(yùn)行子程序的定時(shí)器系統(tǒng),這樣就給系統(tǒng)添加了嶄新的能力,這樣定時(shí)器子程序第一次能在一個(gè)有保證的時(shí)間內(nèi)運(yùn)行。 另外,代碼第一次能夠在非預(yù)期的時(shí)間訪問自己的數(shù)據(jù)結(jié)構(gòu)。定時(shí)器子程序必須要象中斷子程序一樣進(jìn)行處理。 搶先式任務(wù) 使用上面的非搶先式任務(wù)系統(tǒng),從一個(gè)搶先式定時(shí)器或者其他中斷運(yùn)行。 這樣系統(tǒng)就突然變得很不一樣了。任何一個(gè)任務(wù)的代碼都有可能損害其他任務(wù)的數(shù)據(jù) &emdash; 所以它們必須進(jìn)行切缺的切分。對(duì)于共享數(shù)據(jù)的訪問必須使用一些同步策略進(jìn)行控制,如消息隊(duì)列、信號(hào)燈或者非阻塞同步機(jī)制。 經(jīng)常在這一步開發(fā)組織就會(huì)購買一套實(shí)時(shí)操作系統(tǒng)。如果一個(gè)組織缺少能夠編寫操作系統(tǒng)的人才或者操作系統(tǒng)將要在幾個(gè)產(chǎn)品之上,這可能是一個(gè)明智的選擇。這通常要將開發(fā)計(jì)劃增加六倒八周,and forever after programmers can blame delays on it. 微內(nèi)核與外內(nèi)核 這種方法試圖將系統(tǒng)組織得比大內(nèi)核更易于配置,而同時(shí)提供類似的特點(diǎn)。 微內(nèi)核是實(shí)時(shí)操作系統(tǒng)的一個(gè)邏輯發(fā)展,通常的組織方式是操作系統(tǒng)內(nèi)核分配內(nèi)存并且將CPU在不同的線程之間進(jìn)行切換。用戶模式的進(jìn)程實(shí)現(xiàn)如文件系統(tǒng)、用戶接口等主要的功能。 微內(nèi)核在二十世紀(jì)五十年代開始首次嘗試,但是由于計(jì)算機(jī)在任務(wù)間切換以及在任務(wù)間交換數(shù)據(jù)速度非常緩慢,所以人們放棄了微內(nèi)核而鐘情于MULTICS和UNIX風(fēng)格的大內(nèi)核?傮w上來說,微內(nèi)核在任務(wù)切換以及任務(wù)間通信速度快的時(shí)候是比較成功的,在速度慢的時(shí)候是失敗的。 外內(nèi)核通過使用普通的子程序調(diào)用獲得的通信效率很高,硬件以及系統(tǒng)中的軟件都是程序員能用也能擴(kuò)展的。資源內(nèi)核(可能是庫的一部分)分配CPU時(shí)間、內(nèi)存以及其他資源。如多任務(wù)、網(wǎng)絡(luò)以及文件系統(tǒng)這樣的大內(nèi)核特性通過代碼庫來提供。庫可以進(jìn)行動(dòng)態(tài)的連接、擴(kuò)展或者共享。不同的應(yīng)用甚至可以使用的不同的庫,但是所有的資源都來自于資源內(nèi)核。 虛擬機(jī) 一些航空電子系統(tǒng)使用幾個(gè)商用計(jì)算機(jī)。這樣更進(jìn)一步,每個(gè)計(jì)算機(jī)都在模擬它們自身的幾個(gè)副本,重要的程序同時(shí)在幾個(gè)計(jì)算機(jī)上運(yùn)行并且進(jìn)行投票控制(:en:vote)。 模擬環(huán)境的優(yōu)點(diǎn)就是即使一個(gè)計(jì)算機(jī)出現(xiàn)故障,軟件的不同例程能夠遷移到正常工作的軟件分區(qū),表決的票數(shù)并不受影響。 通常虛擬軟件運(yùn)行在計(jì)算機(jī)的用戶模式下,它捕捉、模擬硬件訪問和不在用戶模式下運(yùn)行的指令。 檢查點(diǎn)計(jì)算 另外一種常用的機(jī)制是兩個(gè)計(jì)算機(jī)計(jì)算 for a bit,然后將它們的計(jì)算結(jié)果報(bào)到那個(gè)點(diǎn)上。如果一個(gè)計(jì)算機(jī)的計(jì)算是 nut,它就會(huì)被關(guān)閉。 辦公用(大內(nèi)核)操作系統(tǒng) 這種系統(tǒng)通常在沒有系統(tǒng)經(jīng)費(fèi)的嵌入式項(xiàng)目中流行,但是從這篇文章的多個(gè)作者來看,這通常是不正確的,它們的邏輯是: 操作系統(tǒng)是經(jīng)過特殊封裝的重用代碼庫。如果這些代碼有用,設(shè)計(jì)人員就會(huì)節(jié)省時(shí)間和金錢,否則它們就是無用的。 商務(wù)系統(tǒng)的操作系統(tǒng)沒有嵌入式硬件的接口。例如,如果要用Linux寫一個(gè)馬達(dá)控制器或者電話交換機(jī),絕大部分的實(shí)際控制操作都是IOCTL調(diào)用,同時(shí),正常的讀、寫和查詢界面都是無用的。所以操作系統(tǒng)對(duì)于實(shí)際的開發(fā)妨礙很大。 大多數(shù)的嵌入式系統(tǒng)不處理辦公事務(wù),所以辦公操作系統(tǒng)的大部分代碼都被浪費(fèi)了。例如,絕大多數(shù)的嵌入式系統(tǒng)從來都不使用文件系統(tǒng)或者屏幕,所以文件系統(tǒng)和圖形用戶界面部分就是浪費(fèi)的,這些不用的代碼只會(huì)影響系統(tǒng)的可靠性。 辦公用操作系統(tǒng)保護(hù)硬件不讓用戶程序操作,這就嚴(yán)重地妨礙了嵌入式開發(fā)工作。 操作系統(tǒng)必須移植到嵌入式系統(tǒng)上,也就是說,硬件驅(qū)動(dòng)程序無論如何都必須重寫,這也是操作系統(tǒng)最難的部分,所以使用這樣的操作系統(tǒng)幾乎沒有功效。 操作系統(tǒng)真正有用、可移植的特性是小段代碼。例如,一個(gè)基本的TCP/IP接口大約有3000行代碼,另外的一個(gè)例子是大約同樣大小的簡單文件系統(tǒng)。如果設(shè)計(jì)需要這些代碼,能夠使用少于嵌入式系統(tǒng)開發(fā)10%的經(jīng)費(fèi)就能完成,不需要支付版權(quán)費(fèi)用,只需要簡單地重寫就可以了。如果系統(tǒng)這些代碼有足夠的通用性,嵌入式系統(tǒng)雜志封面的后面通常有公司銷售沒有版權(quán)費(fèi)的C語言實(shí)現(xiàn)代碼。 然而許多任務(wù)程師并不認(rèn)同這一點(diǎn),嵌入式Linux越來越受到人們的歡迎,尤其是在無線路由器和全球定位系統(tǒng)這樣的功能強(qiáng)大的嵌入式系統(tǒng)中。其中有下面一些原因: 有現(xiàn)成的移植到普通嵌入式芯片的實(shí)現(xiàn)代碼。 它們?cè)试S重用公開獲得的設(shè)備驅(qū)動(dòng)程序、網(wǎng)頁服務(wù)器、防火墻或者其他代碼。 開發(fā)系統(tǒng)能夠從許多特性組合開始,在發(fā)布的時(shí)候可以剔除不需要的功能,從而節(jié)約所消耗的內(nèi)存。 許多任務(wù)程師認(rèn)為在用戶模式運(yùn)行應(yīng)用程序更為可靠、更容易調(diào)試,所以開發(fā)過程更容易、代碼更易于移植。 許多嵌入式系統(tǒng)沒有控制系統(tǒng)那樣對(duì)于實(shí)時(shí)性的嚴(yán)格要求,對(duì)于許多應(yīng)用來說如嵌入式Linux這樣的系統(tǒng)的響應(yīng)速度就已經(jīng)足夠了。 要求更快的響應(yīng)速度,而不是可靠性的特性,通常放到了硬件上。 許多實(shí)時(shí)操作系統(tǒng)都針對(duì)每件產(chǎn)品收取費(fèi)用,當(dāng)產(chǎn)品是消費(fèi)品時(shí),這項(xiàng)費(fèi)用是巨大的。 Exotic custom 操作系統(tǒng) 一些系統(tǒng)需要安全、及時(shí)、可靠或者高效的特性,上面的架構(gòu)卻無法達(dá)到,構(gòu)建這樣的系統(tǒng)有一些廣為人知的技巧: 雇傭一個(gè)真正的系統(tǒng)程序員。他們的花費(fèi)很小,但是能夠節(jié)約數(shù)年的調(diào)試以及相關(guān)的收入損失。 RMA (rate monotonic analysis),可以用來評(píng)估一組任務(wù)能否在特定的硬件系統(tǒng)下運(yùn)行,在最簡單的形式下,設(shè)計(jì)人員保證最快完成的任務(wù)有最高的優(yōu)先級(jí),平均來說 CPU 至少有 30% 的空閑時(shí)間。 和諧的任務(wù)能夠高效地優(yōu)化CPU。基本上來說,設(shè)計(jì)人員保證每件工作都是從heartbeat timer開始工作的。在實(shí)時(shí)操作系統(tǒng)上很難這樣做,因?yàn)樗鼈冊(cè)诘群蜉斎胼敵鲈O(shè)備的時(shí)候通常就會(huì)切換任務(wù)。 剛好有兩個(gè)優(yōu)先級(jí)(通常是運(yùn)行和禁止中斷)的系統(tǒng)不能出現(xiàn)高優(yōu)先級(jí)任務(wù)等候低優(yōu)先級(jí)任務(wù)釋放信號(hào)燈或者其他資源的優(yōu)先級(jí)倒置問題, 有監(jiān)視器(:en:monitor)的系統(tǒng)不能出現(xiàn)死鎖。監(jiān)視器鎖住一段代碼禁止中斷和其他搶先任務(wù)。如果這個(gè)監(jiān)視器只用于一小段快速運(yùn)行的代碼,系統(tǒng)可能工作正常。如果能夠證明監(jiān)視器 API 在所有情況下都能夠完整運(yùn)行,例如僅僅禁止中斷,那么就不會(huì)產(chǎn)生系統(tǒng)掛起的情況。 這就意味著使用兩個(gè)優(yōu)先級(jí)和監(jiān)視器的系統(tǒng)是安全、可靠的,因?yàn)樗鼈儧]有死鎖和優(yōu)先級(jí)倒置的問題。如果監(jiān)視器能夠執(zhí)行到結(jié)束,那么就永遠(yuǎn)不會(huì)掛起。如果使用和諧的任務(wù),可能還會(huì)相當(dāng)高效。然而,RMA 無法描述這些系統(tǒng),優(yōu)先級(jí)最好也不要到處都有,其中包括操作系統(tǒng)和硬件。 外部鏈接 即時(shí)操作系統(tǒng)如何工作 (英) 嵌入式系統(tǒng)門戶(英) 窗口嵌入開發(fā)者中心(英) 嵌入系統(tǒng)與VLIW處理器(英) 嵌入式 C++ 首頁(英) QNX 首頁(英) LynuxWorks 嵌入式系統(tǒng)首頁(英) 嵌入式系統(tǒng)討論群、書籍、職缺、與其他林林總總(英) 嵌入式軟件設(shè)計(jì)(英) 擁有嵌入式系統(tǒng)研發(fā)社團(tuán)的大學(xué)列表(英) 嵌入式系統(tǒng)編程(英) EE概要 - 電機(jī)工程與嵌入系統(tǒng)編程(英) DeviceTools - 給內(nèi)嵌設(shè)備開發(fā)者的工具與硅片(英) Embedian(英) 內(nèi)嵌計(jì)算工業(yè)的紀(jì)錄雜志(英) 內(nèi)嵌白皮書、下載、公司、新聞、文章(英) 內(nèi)嵌系統(tǒng)疑難解答 - 一個(gè)概述從基版醞釀、制造、到后勤的問題。(英) 常見的嵌入式操作系統(tǒng) 參見嵌入式操作系統(tǒng) uC/OS II uCLinux Arm-Linux VxWorks pSOS Nucleus PalmOS Windows CE Windows XP Embedded Windows Vista Embedded 嵌入式Linux ECOS QNX Lynx Symbian
移動(dòng)通信網(wǎng) | 通信人才網(wǎng) | 更新日志 | 團(tuán)隊(duì)博客 | 免責(zé)聲明 | 關(guān)于詞典 | 幫助