嵌入式系統- 維基百科,自由的百科全書

文章推薦指數: 80 %
投票人數:10人

嵌入式系統的物理形態包括可攜式裝置如計步器、電子手錶和MP3播放器,大型固定裝置如交通燈、工廠控制器,大型複雜系統如混合動力汽車、磁共振成像裝置、航空電子裝置等。

嵌入式系統 維基百科,自由的百科全書 跳至導覽 跳至搜尋 此條目不符合維基百科的品質標準,需要完全重寫。

請在討論頁中討論相關議題,並參考更優秀條目寫作指南。

Soekrisnet4801,適用於網路應用程式 嵌入式系統(embeddedsystem),是一種嵌入機械或電氣系統內部、具有專一功能和即時計算效能的電腦系統。

[1][2]嵌入式系統常被用於高效控制許多常見裝置,被嵌入的系統通常是包含數位硬體和機械部件的完整裝置,例如汽車的防鎖死煞車系統。

相反,通用電腦如個人電腦則設計靈活,可以智慧型處理各式各樣的運算情況,以滿足廣大終端使用者不同的需要。

現代嵌入式系統通常是基於微控制器(如含整合記憶體和/或外部裝置介面的中央處理單元)的,但在較複雜的系統中普通微處理器(使用外部儲存晶片和外部裝置介面電路)也很常見。

通用型處理器、專門進行某類計算的處理器、為手持應用訂製設計的處理器等,都可能應用到嵌入式系統。

常見的專用處理器有數位訊號處理器。

嵌入式系統的關鍵特性是處理特定的任務,因此工程師能對其進行最佳化,以降低產品的體積和成本,提升可靠性和效能。

嵌入式系統的物理形態包括可攜式裝置如計步器、電子手錶和MP3播放器,大型固定裝置如交通燈、工廠控制器,大型複雜系統如混合動力汽車、磁共振成像裝置、航空電子裝置等。

它們的複雜度低至單晶片,高至大型底盤或外殼內安裝有多個部件、外部裝置和網路。

目次 1嵌入式系統實例 2歷史 3特性 3.1用戶界面 3.2嵌入式系統的處理器 3.2.1嵌入式主板 3.2.2ASIC和FPGA解決方案 3.3外圍設備 3.4工具 3.5調試 3.6作業系統 3.7啟動 3.7.1內部自檢 3.8可靠性體系 4嵌入式軟體架構的類型 4.1控制迴圈 4.2非搶先式任務 4.3搶先式定時器 4.4搶先式任務 4.5微內核與外內核 4.6虛擬機 4.7檢查點計算 4.8辦公用(宏內核)作業系統 4.9Exoticcustom作業系統 5外部連結 6常見的嵌入式作業系統 7業界常見的開源嵌入式軟硬體系統 8參考文獻 嵌入式系統實例[編輯] 嵌入式系統通常應用於消費類、烹飪、工業、自動化、醫療、商業及軍事領域。

電信系統 從網路級的電話交換機到手機終端都部署了大量嵌入式系統。

消費類電子 包括PDA、MP3播放器、行動電話、遊戲機、數字攝錄影機、DVD播放器、全球衛星定位系統接收器和印表機。

家居應用 微波爐、洗衣機和洗碗機中採用了嵌入式系統,帶來靈活性、效率和功能;進階暖通空調系統採用聯網的恆溫器更精確、高效的按天或季度控制溫度;智慧型家居使用嵌入式裝置進行感知、控制,通過有線和無線網路控制燈光、溫濕度、安全、音影片、監視等。

交通系統 安全要求相當高的飛機中採用了先進的航空電子裝置,如慣性導航系統、全球衛星定位接收器; 各種電機——直流無刷電機、非同步電機和直流電機中使用了電氣/電子電機控制器; 汽車、電動車、混合動力汽車越來越多地採用嵌入式系統來節能減排; 其他汽車安全系統,包括防鎖死煞車系統、電子穩定控制系統、牽引力控制系統(英語:Tractioncontrolsystem)、自動四驅系統。

醫療裝置 使用嵌入式裝置進行生命體徵監測,電子聽診器放大聲音,各種醫療成像系統(正電子發射電腦斷層掃描、單光子發射電腦化斷層顯像、電腦斷層掃描、核磁共振成像)進行非入侵式內部檢查; 醫療裝置內的嵌入式系統通常採用工業電腦。

嵌入式系統應用在交通、消防、安防、醫療和生命攸關系統中,由於這些系統能夠與駭客等隔離,因而更可靠。

在消防安全中,經過設計,系統能在高溫環境下持續工作。

出於安全需要,嵌入式系統可以自給自足,能夠處理切斷了電氣和通信系統的情況。

WSN領域的發展,促使一種新型的微型無線裝置智慧型微塵迅速普及。

人們可以通過資訊監測和控制系統感知並作用於物理世界的無數事物。

微塵採用微製造技術,通過先進的IC設計技術,將無線子系統與尖端的感測器結合;從而讓人們可以通過資訊監測和控制系統感知並作用於物理世界的無數事物。

這些微塵是完全自給自足的,在需要更換電池或充電前通常可以工作數年。

利用嵌入式Wi-Fi模組,原先利用序列埠進行通信的裝置可以輕鬆啟用無線通信功能。

歷史[編輯] MIT儀器研究室的查爾斯·斯塔克·德雷珀開發的阿波羅制導電腦是現代嵌入式系統的雛形之一。

在專案初期,它被看成風險最高的部分,原因是為了減小尺寸和重量,它採用了當時最新研發的單片積體電路。

第一款大批次生產的嵌入式系統是1961年發布的民兵I飛彈內的D-17自動制導電腦。

當民兵II飛彈在1966年開始生產的時候,D-17升級成一種新型電腦,其中首次大量使用了積體電路。

僅這個專案就將反及閘模組的單價從1000美元降低至3美元,低到可用於商業產品。

由於二十世紀六十年代的這些早期應用,不僅嵌入式系統的價格降低了,同時處理能力和功能也獲得了巨大的提高。

以第一款單晶片英特爾4004為例,它是為計算機和其他小型系統設計的,但仍然需要外部記憶體和外圍晶片。

1978年,國家工程製造商協會發布了可程式化單晶片的「標準」,涵蓋了幾乎所有以電腦為基礎的控制器,如單板機、數控裝置,以及基於事件的控制器。

隨著微控制器和微處理器的價格下降,消費品也可以更換掉基於按鈕的類比器件,如分壓計和可變電容,採用微處理器讀取開關或按鈕訊號。

到了二十世紀八十年代早期,記憶體、輸入輸出部件整合到處理器內,產生了單晶片。

在採用通用電腦占用的成本太高昂的應用中,單晶片取而代之。

較低成本的單晶片編程後可取代很多獨立部件,這種嵌入式系統通常比傳統解決方案更複雜,但這些複雜性多數體現在單晶片自身。

嵌入式系統需要的外圍元件很少,多數設計工作集中在軟體,而軟體原型的建立及測試與設計與建立新的不使用嵌入式處理器的電路相比速度更快。

特性[編輯] 區別於可以執行多重任務的通用型電腦,嵌入式系統是為某些特定任務而設計的。

有些系統則必須滿足即時性要求,以確保安全性和可用性;另一些系統則對效能要求很低甚至不要求效能,以簡化硬體、降低成本。

嵌入式系統並不總是獨立的裝置。

許多嵌入式系統由嵌入較大裝置的小計算部件組成,提供較通用的功能。

例如吉他機器人採用嵌入式系統來調弦,但總的來說它的設計目的絕不是調弦而是演奏音樂;車載電腦作為汽車的一個子系統存在,提供導航、控制、車況回饋等功能。

為嵌入式系統編寫的程式稱為韌體,儲存在唯讀記憶體或快閃記憶體晶片內,執行在有限的硬體資源上:小容量記憶體,小鍵盤或螢幕甚至沒有。

使用者介面[編輯] 嵌入式系統使用者介面包括了從沒有使用者介面而只專注於單一任務、到類似於現代桌面作業系統的複雜圖形化使用者介面的各類介面。

簡單的嵌入式裝置使用按鈕、LED、圖形或數字LCD和簡單的選單系統。

較高階的嵌入式系統使用圖形顯示器,配合輕觸感應或屏邊按鈕使用,可使占用空間最小並提供靈活性:按鈕的含義隨螢幕顯示的內容而改變,而且指向想要的選項進行操作就能實現選擇。

手持系統通常採用顯示器加操縱杆按鈕作為觸控裝置。

有些系統通過序列埠(如RS-232、USB、I2C等)或網路連接遠端提供使用者介面。

這種方式的優勢在於:擴充了系統的效能、削減了顯示器的成本、簡化了BSP,可以在PC上構建豐富的使用者介面。

例如執行在嵌入式裝置平台(如IP攝錄影機或路由器)上的嵌入式網路伺服器,它無需安裝客製化軟體,而是在連到裝置的PC端的網路瀏覽器中顯示使用者介面。

嵌入式系統的處理器[編輯] 嵌入式處理器大概可分為兩類。

一類是普通微處理器:使用獨立的積體電路記憶體和外部裝置。

另一類是單晶片:具有片上外部裝置,降低了功耗、尺寸和成本。

嵌入式系統的軟體是為某種應用客製化的,而不是像個人電腦那樣的由終端使用者安裝的商品,因此可以使用各種不同的基本CPU架構:既有范紐曼型架構也有不同程度的哈佛結構;既有RISC也有非精簡指令集處理器;字長從4位元到64位元甚至更高,當然最典型的仍然是8/16位元。

多數架構由幾家不同的公司生產,使用了大量不同的變數和類型。

嵌入式系統也會使用通用型微處理器,但比單晶片需要更多外圍電路。

嵌入式主機板[編輯] PC/104和PC/104+是小型、小批次嵌入式強固系統的標準之一,大多基於x86架構;通常比標準PC要小,而比多數簡單的8/16位元嵌入式系統要大;使用MSDOS、Linux、NetBSD,或即時嵌入式作業系統如MicroC/OS-II、QNX、VxWorks。

有時這些主機板也會使用非x86處理器。

在某些應用中,小巧、高效並非主要關注點,因而可以使用與x86型PC主機板相容的部件。

VIAEPIA系列板卡則可以彌補這個空缺,它相容PC但是高度整合、體積較小,或提供其他對嵌入式工程師很有吸引力的特性。

這種方法的好處是低成本商品也可以使用通用的軟體開發工具。

用這種方法構建的系統仍然是嵌入式系統,因為它嵌入在較大的裝置中、用於滿足單一用途。

例如ATM和電子遊戲機,它們都包含了針對各自應用的代碼。

多數嵌入式主機板都不是圍繞PC設計的,也不使用ISA或PCI匯流排。

如果採用SoC處理器,用標準匯流排連接分立元件就不是上策,此外軟硬體開發環境都可能會很不一樣。

一種常用的設計模式是採用小型系統模組——也許只有商務卡片大小,容納高密度的BGA晶片如ARM處理器和外部裝置、用於儲存的外部快閃記憶體、作為記憶體的DRAM。

模組廠商通常會提供引導軟體和作業系統選項,一般包括Linux和一些即時作業系統。

這些模組由熟悉專業測試方法的組織大批次生產,配合較小批次的、帶特殊應用外部裝置的客製化主機板使用。

ASIC和FPGA解決方案[編輯] SoC是一種常見的為超大批次嵌入式系統設計的可組態陣列。

它在單個晶片內包含了多處理器、乘法器、快取和介面,形成一個完整的系統;通過專用積體電路或現場可程式化門陣列來實現。

外圍裝置[編輯] 嵌入式系統通過外部裝置與外部通信: 序列埠:RS-232、RS-422、RS-485等 同步序列埠:I2C、SPI、ESSI等 USB 多媒體卡:SD卡、CF卡等 網路:乙太網路、LonWorks等 現場匯流排:CAN匯流排、LIN匯流排、PROFIBUS等 定時器:PLL、擷取比較模組和時間處理單元 分立IO:GPIO 類比-數位/數位-類比轉換(ADC/DAC) 除錯介面:JTAG、ISP、ICSP、BDM埠、BITP、DP9埠等 工具[編輯] 同典型的電腦程式員一樣,嵌入式系統設計人員也使用編譯器、連結器和除錯器開發嵌入式系統軟體。

然而,他們也使用一些大多數程式設計師不熟悉的工具。

軟體工具的來源有如下幾種: 專注於嵌入式系統市場的軟體公司 從GNU軟體開發工具移植(參見交叉平台編譯) 有些情況下,如果嵌入式處理器與普通個人電腦處理器很近似的話也可以使用個人電腦開發工具 嵌入式系統設計人員也使用一些不為普通電腦程式員所熟悉的軟體工具: 一個常用工具是「電路內部仿真器」(ICE,in-circuitemulator)或者是最新設計中的嵌入式除錯器。

這個除錯工具是開發嵌入式程式的基本技巧。

它代替微處理器或者嵌入微處理器內部,提供了在系統中快速呼叫和除錯試驗代碼的便捷工具。

一個焊點通常就是一個插入系統的特殊電路,通常使用一台連結到這些焊點的個人電腦作為除錯介面。

連結器通常是各種各樣。

對於大多數商業編程來說,連接器幾乎是事後才考慮的部分,預設設定也從來不變。

與此相反,嵌入式連結器有完整、複雜的命令列語言是很普通的。

經常有不同類型的記憶體,分別儲存特殊的代碼和資料。

單獨的資料結構能夠放在特殊的位址,這樣軟體能夠很方便地存取對映到記憶體的控制暫存器。

嵌入式連結器經常有用於減小代碼大小和執行時間的外部最佳化工具。

例如,他們可能移動子程式的位置以使用較小的呼叫和跳轉指令。

它們經常帶有管理資料疊加(英語:dataoverlays)和bandswitch(英語:bandswitch)技術的特性,這些技術是在嵌入式軟體經常使用的擴充廉價CPU的方法。

另外一個常用的工具是一個在程式中添加代碼和或者CRC的工具程式(經常是自己寫的),使用這個工具嵌入式系統能夠在執行程式之前先進行程式資料檢查。

為數位訊號處理開發軟體的嵌入式程式設計師經常使用MathCad或者Mathematica這樣的數學工具進行數學仿真。

一些較少使用的工具有將資料檔案轉換成代碼的工具,使用這種工具就可以在程式中包含任意類型的資料。

少數一些專案為了特殊的可靠性或者數位訊號處理要求使用同步式編程語言。

一些程式語言為嵌入式系統編程提供了一些特殊支援。

對於C語言,ISO/IECTR18037:2005定義了 指定的位址空間 指定的儲存類 基本輸入輸出的硬體定址 除錯[編輯] 除錯通常使用內部電路仿真器或者其他一些能夠在微控制器微碼(microcode)內部產生中斷的除錯器。

微碼中斷讓除錯器能夠在只有CPU工作的硬體中進行操作,基於CPU的除錯器能夠從CPU的角度來測試和除錯電腦的電路。

PDP-11開創了這種特性的先河。

開發人員能夠仍然使用斷點、單步執行以及高階語言進行除錯,在許多的除錯工具上都有這種能力。

另外開發人員在除錯即時事件順序的時候需要記錄、使用簡單的記錄工具。

首先遇到這種問題的個人電腦和大型電腦程式設計師經常在設計優先級和可行方法的時候感到困惑。

指導、代碼審查和非個人風格(egoless(英語:egoless))的編程是值得推薦的。

隨著嵌入式系統變得越來越複雜,更高層次的工具和作業系統逐漸移植到可行的裝置上。

例如,蜂窩電話、個人數字助理和其他的消費用電腦需要一些從個人或者這些電子裝置製造商之外的公司購買或者提供的一些重要軟體。

在這些系統中,需要如Linux、OSGi或者Java這樣的開放編程環境,這樣第三方軟體提供上才能夠在大規模的市場上銷售軟體。

大多數這樣的開發環境都有一個執行在個人電腦上的參考設計,這種軟體的絕大部分都可以在傳統的個人電腦上開發。

然而,從開放環境移植到專用的電子裝置和電子裝置的驅動程式開發通常仍然是傳統的嵌入式系統軟體工程師的工作。

在有些情況下,theengineerworksfortheintegratedcircuitmanufacturer,butthereisstillsuchapersonsomewhere. 作業系統[編輯] 使用WindowsXP的網際網路收費電話 嵌入式系統經常沒有作業系統、專用的嵌入式作業系統(經常是即時作業系統)或者指定程式設計師移植到這些新系統。

啟動[編輯] 嵌入式系統帶有啟動代碼,通常它禁止中斷、設定電子裝置參數、測試電腦(RAM、CPU和軟體),然後開始應用程式執行。

許多嵌入式系統從短暫的掉電狀態恢復,經常重起而不進行最近的自檢。

在十分之一秒內重啟是常見的現象。

許多設計人員發現LED在指示錯誤狀態上非常有用,它們可以幫助進行故障處理。

一個常用的機制是在復位的時候點亮電子裝置所有的LED以表明供電和LED正常工作;然後在進行加電自檢時由軟體改變LED的狀態;在此之後,軟體用這些LED指示操作過程中的正常或者故障狀態。

這可以讓技術人員、工程師和使用者了解系統的狀態。

一個有趣的例外是電度表(electricpowermeters(英語:electricpowermeters))和其他一些大街上的東西,閃爍的指示燈是為了吸引注意力或者表示損壞狀態。

內部自檢[編輯] 許多嵌入式系統都有一定程度或者一定數量的內部加電自檢,自檢有幾種類型: 電腦檢查:檢查CPU、RAM和程式記憶體。

通常一加電就開始這些檢查,在一些安全性非常重要的系統中,通常周期性地在安全時間間隔內進行自檢,或者經過一段時間就進行自檢。

外圍裝置檢查:仿真輸入和讀入資料或者測量輸出資料。

有大量的通信、類比和控制系統都有這些非常廉價的檢查。

電源檢查:通常測試每個供電電路,也可能檢查電池或者主電源輸入。

通常供電部分的負載都很重,並且少有餘量,所以這項檢查很有意義。

通信檢查:驗證從相連單元接收到的簡單訊息,例如在網際網路上使用ICMP訊息「ping」。

電纜檢查:將線連結到待檢查的電纜上指示針進行檢查。

如電話這樣的同步通信系統經常使用「同步」測試。

電纜檢查成本很低,當單元部分有插頭的時候這項檢查尤其重要。

裝備檢查:一個系統在安裝時經常需要進行調整,這項檢查就向安裝人員做出狀態指示。

消耗檢查:檢查系統所消耗的東西、在預量太低時發出警告。

最常見的例子是汽車的油量表,最複雜的例子可能是維持化學反應物詳細狀態的自動醫學分析系統。

執行檢查:檢查使用者關心的系統執行狀態。

顯然,在系統執行時必須進行這項檢查,這方面的檢查包括飛機上的導航儀器、汽車的速度表和磁碟的指示燈等。

安全檢查:在'安全時限'內進行檢查確保系統仍然可靠。

安全時限通常小於能夠產生損害的最小時間。

可靠性體系[編輯] 根據人們需求的不同,可靠性也有不同的定義,有意思的是,可靠性的類型卻相對較少,相似可靠性類型的系統,使用相似類型的內在檢查和恢復方法: 系統非常不安全或者無法修理。

這包括太空系統、水下電纜、導航燈塔、鑽孔系統,非常奇怪的是還包括汽車和大規模生產產品。

總的來說,嵌入式系統檢測各個子系統、線上切換到冗餘部分或者工作在「limp模式」提供部分的功能。

大規模生產的消費產品如汽車、個人電腦或者印表機也屬於這個類別,這是因為與購買的費用相比維修費用高昂、維修人員又路途遙遠。

系統不能安全地停止執行。

這包括飛機導航、反應控制系統、重要的化學工廠安全控制、鐵路訊號、單發動機飛機的發動機,如上所述,但是「limp模式」較難容忍,通常需要操作員選擇備份系統。

系統停機時將會造成大量的金錢損失。

這些包括電話交換機、工廠控制、橋梁和電梯控制、資金轉移、市場開發、自動銷售和服務等,這些系統通常有一些運轉/不運轉測試,它們通常帶有線上冗餘或者使用替換系統和人工過程的limp模式。

系統不安全的時候不能操作。

同上面的情況類似,系統的執行將會造成大量的金錢損失。

醫療裝置、帶有發動機這樣的熱備份的飛行器、化學工廠控制、自動股票交易、遊戲系統等。

測試可能是五花八門,但是出錯時能夠做的就是停止整個系統。

嵌入式軟體架構的類型[編輯] 常用的嵌入式軟體架構有幾種不同的基本類型。

控制迴圈[編輯] 在這種設計中,軟體有一個簡單的循環,這個循環調用各個子程式,每個子程式管理硬體或者軟體的某一部分。

中斷通常用來設定標記或者更新軟體其他部分能夠讀取的暫存器。

系統使用簡單的API來完成允許和禁止中斷設定。

如果處理得當的話,它能夠在巢狀子程式中處理巢狀調用,在最外面的中斷允許巢狀中恢復前面的中斷狀態。

這種方法是實作Exokernel的一個最簡單的方法。

通常在循環中有一些子程式使用周期性的即時中斷控制一組軟體定時器,當一個定時器時間到的時候就會執行相應的子程式或者設定相應的標誌。

任何可能發生的硬體事件都應該有軟體定時器的支援,硬體事件大概每萬億次出現一次錯誤,對於現代的硬體來說大概是一年發生一次,對於以百萬計大規模生產的裝置來說,遺漏一個軟體軟體定時器在商業上可能是災難性的。

有時測試軟體運行一組基於軟體的安全定時器,它們周期性地複位硬體中的看門狗計時器。

如果軟體錯過一個事件,安全定時器軟體將會捕捉到它。

如果安全定時器出錯,看門狗硬體將會複位系統。

可以使用指向每個狀態機函式的指標實作狀態機,函式可以用C++、C或者組合語言等實作。

變化的狀態將不同的函式放到指標中,每次循環運行時都會執行函式指標。

許多設計人員建議每個循環讀一次輸入輸出裝置、並且儲存得到的結果,這樣可以保證邏輯過程的在一致的參數上運行。

許多設計人員喜歡將狀態機設計成每個狀態僅僅檢查一到兩項內容,通常是檢查硬體事件和軟體定時器。

設計人員建議多級狀態機應該讓低層狀態機早於高層狀態機運行,這樣高層就能夠根據正確的資訊運行。

如內部燃燒控制這樣的複雜功能通常根據多維表格進行處理,代碼通常進行查表處理而不進行複雜的計算,為了減小表格的大小以及成本軟體可以在條目之間進行差值運算。

在最小的微控制器中,尤其是只有128位元組堆疊的8051中,控制環允許好的連結器使用靜態分配的數據覆蓋本地變數。

在這種機制中,離子程式調用樹末端越近的變數得到的記憶體位址越高。

當開始一個新的分支的時候,它的變數可以在以前分支遺棄的空間中進行重新分配。

簡單控制迴圈的一個主要缺點是它無法保證響應特定硬體事件的時間。

細心的設計可以很容易地保證中斷不會被長時間禁止,這樣中斷代碼就可以在非常精確的時間運行。

控制環的另外一個主要缺陷是增加新的特性的時候會變得複雜。

需要花費很長時間的演算法必須小心地進行分解以使得每次只有一小部分在主循環中運行。

這種系統的優勢是它的簡單性,並且在很小的軟體上,循環執行地很快幾乎沒有人關心它是不可預測的。

它的另外一個優勢是這種系統保證運行軟體的品質,無法將不好的運行結果歸咎為其他的作業系統。

非搶先式任務[編輯] 非搶先式任務系統非常類似於上面的系統,只是這個迴圈是隱藏在API中的。

我們定義一系列的任務,每個任務獲得自己的子程式棧;然後,當一個任務空閒的時候,它呼叫一個空閒子程式(通常呼叫「暫停」、「等候」、「交出(yield)」等等)。

帶有類似屬性的架構都帶有一個事件佇列,有一個迴圈根據佇列列表中的一個域確定刪除時間和呼叫子程式。

這種架構的優點和缺點都非常類似於控制環,只是這種方法添加新的軟體更加簡單,只需要簡單地編寫新的任務或者將它添加到佇列直譯器中。

搶先式定時器[編輯] 使用上面的任何一種系統,但是添加一個按照定時器中斷執行子程式的定時器系統,這樣就給系統添加了嶄新的能力,這樣定時器子程式第一次能在一個有保證的時間內執行。

另外,代碼第一次能夠在非預期的時間存取自己的資料結構。

定時器子程式必須要象中斷子程式一樣進行處理。

搶先式任務[編輯] 使用上面的非搶先式任務系統,從一個搶先式定時器或者其他中斷執行。

這樣系統就突然變得很不一樣了。

任何一個任務的代碼都有可能損害其他任務的資料&emdash;所以它們必須進行切缺的切分。

對於共享資料的存取必須使用一些同步策略進行控制,如訊息佇列、訊號燈或者非阻塞同步機制。

經常在這一步開發組織就會購買一套即時作業系統。

如果一個組織缺少能夠編寫作業系統的人才或者作業系統將要在幾個產品之上,這可能是一個明智的選擇。

這通常要將開發計劃增加六到八周,andforeverafterprogrammerscanblamedelaysonit. 微核心與外核心[編輯] 這種方法試圖將系統組織得比單核心更易於組態,而同時提供類似的特點。

微核心是即時作業系統的一個邏輯發展,通常的組織方式是作業系統核心分配記憶體並且將CPU在不同的執行緒之間進行切換。

使用者模式的行程實現如檔案系統、使用者介面等主要的功能。

微核心在二十世紀五十年代開始首次嘗試,但是由於電腦在任務間切換以及在任務間交換資料速度非常緩慢,所以人們放棄了微核心而鍾情於MULTICS和UNIX風格的大核心。

總體上來說,微核心在工作切換以及任務間通信速度快的時候是比較成功的,在速度慢的時候是失敗的。

外核心通過使用普通的子程式呼叫獲得的通信效率很高,硬體以及系統中的軟體都是程式設計師能用也能擴充的。

資源核心(可能是庫的一部分)分配CPU時間、記憶體以及其他資源。

如多工、網路以及檔案系統這樣的大核心特性通過代碼庫來提供。

庫可以進行動態的連接、擴充或者共享。

不同的應用甚至可以使用的不同的庫,但是所有的資源都來自於資源核心。

虛擬機器[編輯] 一些航空電子系統使用幾個商用電腦。

這樣更進一步,每個電腦都在類比它們自身的幾個副本,重要的程式同時在幾個電腦上執行並且進行投票控制(vote)。

類比環境的優點就是即使一個電腦出現故障,軟體的不同常式能夠遷移到正常工作的軟體分割區,表決的票數並不受影響。

通常虛擬軟體執行在電腦的使用者模式下,它捕捉、類比硬體存取和不在使用者模式下執行的指令。

檢查點計算[編輯] 另外一種常用的機制是兩個電腦計算forabit,然後將它們的計算結果報到那個點上。

如果一個電腦的計算是nut,它就會被關閉。

辦公用(單核心)作業系統[編輯] 這種系統通常在沒有系統經費的嵌入式專案中流行,但是從這篇文章的多個作者來看,這通常是不正確的,它們的邏輯是: 作業系統是經過特殊封裝的重用代碼庫。

如果這些代碼有用,設計人員就會節省時間和金錢,否則它們就是無用的。

商務系統的作業系統沒有嵌入式硬體的介面。

例如,如果要用Linux寫一個馬達控制器或者電話交換機,絕大部分的實際控制操作都是IOCTL呼叫,同時,正常的讀、寫和查詢介面都是無用的。

所以作業系統對於實際的開發妨礙很大。

大多數的嵌入式系統不處理辦公事務,所以辦公作業系統的大部分代碼都被浪費了。

例如,絕大多數的嵌入式系統從來都不使用檔案系統或者螢幕,所以檔案系統和圖形化使用者介面部分就是浪費的,這些不用的代碼只會影響系統的可靠性。

辦公用作業系統保護硬體不讓使用者程式操作,這就嚴重地妨礙了嵌入式開發工作。

作業系統必須移植到嵌入式系統上,也就是說,硬體驅動程式無論如何都必須重寫,這也是作業系統最難的部分,所以使用這樣的作業系統幾乎沒有功效。

作業系統真正有用、可移植的特性是小段代碼。

例如,一個基本的TCP/IP介面大約有3000行代碼,另外的一個例子是大約同樣大小的簡單檔案系統。

如果設計需要這些代碼,能夠使用少於嵌入式系統開發10%的經費就能完成,不需要支付著作權費用,只需要簡單地重寫就可以了。

如果系統這些代碼有足夠的通用性,嵌入式系統雜誌封面的後面通常有公司銷售沒有著作權費的C語言實現代碼。

然而許多工程師並不認同這一點,嵌入式Linux越來越受到人們的歡迎,尤其是在無線路由器和全球定位系統這樣的功能強大的嵌入式系統中。

其中有下面一些原因: 有現成的移植到普通嵌入式晶片的實現代碼。

它們允許重用公開獲得的裝置驅動程式、網頁伺服器、防火牆或者其他代碼。

開發系統能夠從許多特性組合開始,在發布的時候可以剔除不需要的功能,從而節約所消耗的記憶體。

許多工程師認為在使用者模式執行應用程式更為可靠、更容易除錯,所以開發過程更容易、代碼更易於移植。

許多嵌入式系統沒有控制系統那樣對於即時性的嚴格要求,對於許多應用來說如嵌入式Linux這樣的系統的回應速度就已經足夠了。

要求更快的回應速度,而不是可靠性的特性,通常放到了硬體上。

許多即時作業系統都針對每件產品收取費用,當產品是消費品時,這項費用是巨大的。

Exoticcustom作業系統[編輯] 一些系統需要安全、及時、可靠或者高效的特性,上面的架構卻無法達到,構建這樣的系統有一些廣為人知的技巧: 僱傭一個真正的系統程式設計師。

他們的花費很小,但是能夠節約數年的除錯以及相關的收入損失。

RMA(ratemonotonicanalysis),可以用來評估一組任務能否在特定的硬體系統下執行,在最簡單的形式下,設計人員保證最快完成的任務有最高的優先級,平均來說CPU至少有30%的空閒時間。

和諧的任務能夠高效地最佳化CPU。

基本上來說,設計人員保證每件工作都是從heartbeattimer開始工作的。

在即時作業系統上很難這樣做,因為它們在等候輸入輸出裝置的時候通常就會切換任務。

剛好有兩個優先級(通常是執行和禁止中斷)的系統不能出現高優先級任務等候低優先級任務釋放訊號燈或者其他資源的優先級倒置問題, 有監視器(monitor)的系統不能出現死結。

監視器鎖住一段代碼禁止中斷和其他搶先任務。

如果這個監視器只用於一小段快速執行的代碼,系統可能工作正常。

如果能夠證明監視器API在所有情況下都能夠完整執行,例如僅僅禁止中斷,那麼就不會產生系統掛起的情況。

這就意味著使用兩個優先級和監視器的系統是安全、可靠的,因為它們沒有死結和優先級倒置的問題。

如果監視器能夠執行到結束,那麼就永遠不會掛起。

如果使用和諧的任務,可能還會相當高效。

然而,RMA無法描述這些系統,優先級最好也不要到處都有,其中包括作業系統和硬體。

外部連結[編輯] 即時作業系統如何工作(英) 嵌入式系統門戶(頁面存檔備份,存於網際網路檔案館)(英) 視窗嵌入開發者中心(頁面存檔備份,存於網際網路檔案館)(英) 嵌入系統與VLIW處理器(頁面存檔備份,存於網際網路檔案館)(英) 嵌入式C++首頁(頁面存檔備份,存於網際網路檔案館)(英) QNX首頁(頁面存檔備份,存於網際網路檔案館)(英) LynuxWorks嵌入式系統首頁(頁面存檔備份,存於網際網路檔案館)(英) 嵌入式系統討論群、書籍、職缺、與其他林林總總(頁面存檔備份,存於網際網路檔案館)(英) 嵌入式軟體設計(頁面存檔備份,存於網際網路檔案館)(英) 擁有嵌入式系統研發社團的大學列表(英) 嵌入式系統編程(頁面存檔備份,存於網際網路檔案館)(英) EE概要-電機工程與嵌入系統編程(頁面存檔備份,存於網際網路檔案館)(英) DeviceTools(頁面存檔備份,存於網際網路檔案館)-給內嵌裝置開發者的工具與矽片(英) Embedian(英) 內嵌計算工業的紀錄雜誌(頁面存檔備份,存於網際網路檔案館)(英) 內嵌白皮書、下載、公司、新聞、文章(英) 內嵌系統疑難排解-一個概述從基版醞釀、製造、到後勤的問題。

(英) WorkingacrossMultipleEmbeddedPlatforms(頁面存檔備份,存於網際網路檔案館)跨平台嵌入式系統。

(英) 常見的嵌入式作業系統[編輯] 參見嵌入式作業系統 Android FirefoxOS iPhoneOS uC/OSII FreeRTOS uCLinux VxWorks pSOS Nucleus PalmOS WindowsCE WindowsXPEmbedded WindowsVistaEmbedded EmbeddedLinux ECOS QNX Lynx Symbian RT-Thread 業界常見的開源嵌入式軟硬體系統[編輯] 無作業系統 有作業系統+弱GUI 有作業系統+GUI介面 8/16位元處理器 Ardunio開發板(軟硬體全套,開源,目前較熱門) 各家單晶片公司提供參考設計(如Ateml等) Arduino開發板(軟硬體全套,開源,目前較熱門) Ethernut/nutos專案(軟硬體配套,開源,偏重電腦網路) UcosII作業系統(軟體,開源但商業版本需要license費) FreeRTOS作業系統(軟體,商業公司提供的開源版本,也售賣對應的商業版本) KeilRTX51Real-TimeKernel(開源,Keil軟體內建需要license) / 32位元處理器 / Ethernut/nutos專案(軟硬體配套,開源,偏重電腦網路) eCos作業系統(軟體,開源,優點是可以客製化化RTOS) uClinux作業系統(軟體,開源,有對應的硬體板uCsimm專案) FreeRTOS作業系統(軟體,商業公司提供的開源版本,也售賣對應的商業版本) KeilRTXReal-TimeKernel(開源,Keil軟體內建需要license) RT-thread作業系統(軟體,開源,國內開發,有簡單GUI) Android作業系統 Beagleboard專案(軟硬體配套,開源) RaspberryPi專案(軟硬體配套,開源) 參考文獻[編輯] ^MichaelBarr.EmbeddedSystemsGlossary.NeutrinoTechnicalLibrary.[2007-04-21].(原始內容存檔於2013-06-25).  ^Heath,Steve.Embeddedsystemsdesign.EDNseriesfordesignengineers2.Newnes.2003:2[2017-04-30].ISBN 978-0-7506-5546-0.(原始內容存檔於2020-09-11).Anembeddedsystemisamicroprocessorbasedsystemthatisbuilttocontrolafunctionorarangeoffunctions.  閱論編嵌入式系統一般術語 微控制器 ASIC/FPGA/SoC 單板機 引導程式 交叉編譯器 板級支援包 嵌入式作業系統 嵌入式軟體(英語:Embeddedsoftware) 嵌入式資料庫(英語:Embeddeddatabase) 嵌入式hypervisor(英語:Embeddedhypervisor) 記憶體占用(英語:Memoryfootprint) IoT 消費電子產品 最小硬體系統 韌體及掌控 封閉平台 設計式缺陷 殘廢軟體 廠商鎖定(英語:Vendorlock-in) 第三方韌體(英語:Customfirmware) 第三方路由器韌體專案 自製(電動遊戲)(英語:Homebrew(videogames)) 消費電子產品破解(英語:Hackingofconsumerelectronics) Rooting(安卓) iOS越獄 軟體庫 uClibc EmbeddedGLIBC musl dietlibc 軟體開發工具 BusyBox Buildroot BitBake OpenEmbedded Yocto計劃 U-Boot Almquistshell Stand-aloneshell(英語:Stand-aloneshell) 嵌入式作業系統 嵌入式Linux 行動裝置Linux(英語:Linuxformobiledevices) 輕量級Linux發行版 WindowsIoT/WinCE 即時作業系統 程式語言 組合語言 嵌入式C語言 MISRAC nesC(英語:nesC) Ada EmbeddedJava(英語:EmbeddedJava) CAPL 輕量級瀏覽器比較(英語:Comparisonoflightweightwebbrowsers) 開源計算硬體(英語:Open-sourcecomputinghardware) 開源機器人(英語:Open-sourcerobotics) 閱論編單晶片總論 單晶片 特殊功能暫存器(英語:Specialfunctionregister) 架構 8051 ARM MIPS AVR PIC C166(英語:C166) TriCore(英語:TriCore) FR-V(英語:FR-V) MC6800 RISC-V 家族系列4位元 TLCS-47(英語:ToshibaTLCS) 8位元 AVR PIC(8-bit) COP8 MCS-48(英語:IntelMCS-48) 英特爾MCS-51 Z8(英語:ZilogZ8) eZ80(英語:ZilogeZ80) 飛思卡爾68HC08(英語:HC08) 飛思卡爾68HC11(英語:HC11) H8 PSoC 東芝TLCS(英語:TLCS-870) XC800系列(英語:XC800) 16位元 C166 CR16/CR16C H8S MSP430 PIC(16位元) R8C 東芝TLCS-900 XC2000 XE166 32位元 Am29000 CRX 富士通FR FR-V H8SX MPC5xx PIC(32位元) TLCS-900 TriCore 英飛凌XMC4000 英飛凌AURIX V850 應用級ARM核心列表(STM32) 介面編程 電路線上串列燒錄編程(ICSP) 線上燒錄(ISP) 程式和除錯介面(PDI) 高電壓串列編程燒錄(HVSP) 高電壓並列編程燒錄(HVPP) Bootloader ROM aWire 除錯 debugWIRE JointTestActionGroup(JTAG) In-circuitdebugging(ICD) In-circuitemulator(ICE) In-targetprobe(ITP) 模擬器 gpsim 列表 Commonmicrocontrollers Bymanufacturer Freescale Intel 參見 嵌入式系統 可程式邏輯控制器 閱論編電腦的體型(類別)大型 超級電腦 次超級電腦 大型電腦 中小型 中型電腦 小型電腦 超級小型電腦(英語:Superminicomputer) 伺服器 微型個人電腦、行動裝置與移動運算(英語:Mobilecomputing)桌上型電腦 工作站 電競電腦 家用電腦 一體機 小主機板(英語:Smallformfactor) 迷你桌上型電腦 筆記型電腦 行動工作站(英語:Desktopreplacementcomputer) 次筆記型電腦(英語:Subnotebook) 小筆電 Smartbook 超極致筆電 平板電腦 超級行動電腦 行動上網裝置 Internettablet 手持式個人電腦(英語:HandheldPC) 掌上型電腦(英語:Palm-sizePC) Pocketcomputer(英語:Pocketcomputer) PDA Electronicorganizer(英語:Electronicorganizer) 企業數位助理(英語:Enterprisedigitalassistant) PocketPC 行動電話 功能型手機 智慧型手機 平板手機 可攜式媒體播放器 計算機 科學計算機(英語:Scientificcalculator) 程式計算機(英語:Programmablecalculator) 繪圖計算機 可穿戴式電腦 電子手錶 計算機手錶(英語:Calculatorwatch) 智慧型手錶 Virtualretinaldisplay(英語:Virtualretinaldisplay) 頭戴式顯示器 抬頭顯示器 小型網路電腦 路由器 交換機 NAS 防火牆 列印伺服器 電子遊戲機 街機 家用遊戲機 專用遊戲機 微型遊戲機 掌上遊戲機 影視用途產品 智慧型電視 家庭劇院個人電腦 機上盒 其他終端裝置 互動式機台(英語:Interactivekiosk) 多媒體機台 工業電腦 自動櫃員機 抽取式電腦 電子書閱讀器 可攜式資料終端機(英語:Portabledataterminal)/可行動式資料終端機(英語:Mobiledataterminal) Plug(英語:Plugcomputer) 其他 單晶片 Nanocomputer(英語:Nanocomputer) Pizzaboxformfactor(英語:Pizzaboxformfactor) 單板機 智慧型微塵 無線感測網路 模板:主機板規格 規範控制 BNF:cb12410613b(data) GND:4396978-1 LCCN:sh87006632 NDL:01064710 取自「https://zh.wikipedia.org/w/index.php?title=嵌入式系统&oldid=70414528」 分類:​嵌入式系統隱藏分類:​維基百科需要重寫的條目含有英語的條目有藍鏈卻未移除內部連結助手模板的頁面包含BNF標識符的維基百科條目包含GND標識符的維基百科條目包含LCCN標識符的維基百科條目包含NDL標識符的維基百科條目 導覽選單 個人工具 沒有登入討論貢獻建立帳號登入 命名空間 條目討論 臺灣正體 不转换简体繁體大陆简体香港繁體澳門繁體大马简体新加坡简体臺灣正體 查看 閱讀編輯檢視歷史 更多 搜尋 導航 首頁分類索引特色內容新聞動態近期變更隨機條目資助維基百科 說明 說明維基社群方針與指引互助客棧知識問答字詞轉換IRC即時聊天聯絡我們關於維基百科 工具 連結至此的頁面相關變更上傳檔案特殊頁面靜態連結頁面資訊引用此頁面維基數據項目 列印/匯出 下載為PDF可列印版 其他專案 維基共享資源維基教科書 其他語言 AlemannischالعربيةAzərbaycancaБългарскиবাংলাCatalàČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiEuskaraفارسیSuomiFrançaisעבריתहिन्दीMagyarBahasaIndonesiaItaliano日本語한국어LietuviųМакедонскиമലയാളംမြန်မာဘာသာNederlandsNorsknynorskNorskbokmålPolskiPortuguêsRomânăРусскийSrpskohrvatski/српскохрватскиSimpleEnglishSlovenčinaСрпски/srpskiSvenskaதமிழ்ไทยTürkçeУкраїнськаاردوTiếngViệt吴语 編輯連結



請為這篇文章評分?