嵌入式系統通常都由軟件和硬件兩個部分組成,其中嵌入式處理器 、 存儲器和外部設備構成整個系統的硬件基礎。git
嵌入式系統的軟件部分能夠分爲3個層次:系統軟件 、 應用支撐軟件和應用軟件。其中,系統軟件和支撐軟件是基礎,應用軟件則是最能體現整個嵌入式系統的特色和功能的部分。算法
1 硬件架構
圖 1 是一個嵌入式系統的基本硬件架構。微處理器是整個嵌入式系統的核心,負責控制系統的執行。外部設備是嵌入式系統同外界交互的通道,常見的外部設備有 Flash 存儲器 、 鍵盤 、 輸入筆 、 觸摸屏 、 液晶顯示器等輸入 / 輸出設備,在不少嵌入式系統中還有與系統用途緊密相關的各類專用外設。數據庫
嵌入式系統中常用的存儲器有3種類型:RAM 、 ROM( Read-Only Memory ,只讀內存)和混合存儲器。系統的存儲器用於存放系統的程序代碼 、 數據和系統運行的結果。編程
1.1 嵌入式處理器
嵌入式系統的核心部件是各類類型的嵌入式處理器。據不徹底統計,目前世界上嵌入式處理器的種類已經超過了 1000 種,比較流行的也有 30 幾個系列。根據目前的使用狀況,嵌入式處理器能夠分爲以下幾類:緩存
(1)嵌入式微處理器安全
嵌入式微處理器( Embedded Micro Processing Unit , EMPU )是由通用計算機中的 CPU 演變而來。嵌入式微處理器在功能上跟普通的微處理器基本一致,可是它具備體積小 、 功耗低 、 質量輕 、 成本低及可靠性高的優勢。一般,嵌入式微處理器和ROM 、 RAM 、 總線接口及外設接口等部件安裝在一塊電路板上,稱爲單板計算機。目前,主要的嵌入式微處理器有AM186/88 、 386EX 、 SC-400 、 POWERPC 、 MIPS及 ARM 等系列。網絡
(2)嵌入式微控制器架構
嵌入式微控制器( Embedded Micro Controlling Unit , EMCU )又稱爲單片機,就是整個計算機系統都集成到一塊芯片中。嵌入式微控制器通常以某一種微處理器內核爲核心,芯片內部集成有 ROM / EPROM / E2PROM 、 RAM 、 總線 、 總線邏輯 、 定時器 / 計數器 、 WatchDog(監督定時器) 、 並口 / 串口 、 數模 / 模數轉換器 、 閃存等必要外設。dom
與嵌入式微處理器相比,嵌入式微控制器的最大特色是單片化,於是體積更小,功耗和成本更低,可靠性更高。異步
目前,嵌入式微控制器的品種和數量最多,約佔嵌入式系統市場份額的 70%。 比較有表明性的通用系列有: 8051 系列 、 MCS-96 / 196 / 296 、 C166 / 167 、 MC68HC05 / 11 / 12 / 16等。還有許多半通用系列,如支持 UBS 接口的MCU8XC930 / 931 、 C540 、 C541以及用於支持I2C 、
(3)嵌入式數字信號處理器
嵌入式數字信號處理器( Embedded Digital Signal Processor , E DSP )是一種專門用於信號處理的處理器, DSP 芯片內部採用程序和數據分開的哈佛結構,具備專門的硬件乘法器,普遍採用流水線操做,提供特殊的 DSP 指令,能夠用來快速實現各類數字信號的處理算法。目前,數字信號處理器在嵌入式系統中使用很是普遍,如數字濾波 、 快速傅立葉變換及頻譜分析等。同時,嵌入式系統的智能化也是推進嵌入式 DSP 發展的一個動力,如各類帶有智能邏輯的消費類產品 、 生物信息識別終端 、 帶有加密 / 解密算法的設備 、 實時語音壓縮和解壓系統以及虛擬現實顯示裝置等,這類系統上的智能化算法通常運算量都比較大,這剛好能夠充分發揮數字信號處理器的長處。
(4)嵌入式片上系統
嵌入式片上系統( Embedded System On Chip )是一種在一塊芯片上集成不少功能模塊的複雜系統,如微處理器內核 、RAM、USB、IEEE139四、Bluetooth 等。以往這些單元按照各自的功能作成一個個獨立的芯片,並經過電路板與其餘單元組成一個系統。如今將這些原本在電路板上的單元都集成到一個芯片中,構成一個嵌入式片上系統,從而大幅度縮小了系統的體積,下降了系統的複雜度,加強了系統的可靠性。在大量生產時,生產成本也遠遠低於單元部件組成的電路板系統。
嵌入式片上系統能夠分爲通用片上系統和專用片上系統兩類。
- 通用類的主要產品有 Siemens 的 Trocore、Motorola 的 M- C ore、 某些 ARM 系列的器件等。
- 專用類的嵌入式片上系統通常是針對某一個或某些系統而設計的。具備表明性的產品有 Philips 的 Smart XA ,它將 XA 單片機的內核和支持超過 2048 位複雜 RSA 算法的 CCU 單元製做在一個芯片上,造成一個可加載 Java 或 C 的專用嵌入式片上系統,可用於網絡安全等方面。
1.2 總線
總線是鏈接計算機系統內部各個部件的共享高速通路,自 20 世紀 70 年代以來,工業界相繼出現了多種總線標準,不少總線技術在嵌入式系統領域獲得了普遍的應用。
嵌入式系統的總線通常分爲片內總線和片外總線。片內總線是指嵌入式微處理器內的 CPU 與片內其餘部件鏈接的總線;片外總線是指總線控制器集成在微處理器內部或外部芯片上的用於鏈接外部設備的總線。
(1)AMBA 總線
AMBA ( Advanced Micro controller Bus Archiecture ,先進微控制器總線架構)是 ARM 公司研發的一種總線規範,該總線規範獨立於處理器和製造工藝技術,加強了各類應用中外設和系統單元的可重用性,它提供將 RISC 處理器與 IP 核集成的機制。該規範定義了三種總線:
- 先進性能總線( Advanced High-performance Bus , AHB )。 AHB 由主模塊 、 從模塊和基礎結構三部分組成,整個 AHB 總線上的傳輸都由主模塊發起,從模塊響應。基礎結構包括:仲裁器 、 主從模塊多路選擇器 、 譯碼器 、 名義主模塊 、 名義從模塊等。 AHB 系統具備時鐘邊沿觸發 、 無三態 、 分幀傳輸等特性。 AHB 也支持複雜的事務處理,如突發傳送 、 主單元重試 、 流水線操做以及分批事務處理等。
- 先進系統總線( Advanced System Bus , ASB )。 ASB 用於高性能模塊的互連,支持突發數據傳輸模式,較老的總線格式,逐步由 AHB 總線所替代。
- 先進外設總線( Advanced Peripheral Bus , APB )。 APB 主要用於鏈接低帶寬外圍設備,其總線結構只有惟一的主模塊,即 APB 橋,它不須要仲裁器以及響應 / 確認信號,以最低功耗爲原則進行設計,具備老是兩週期傳輸 、 無等待週期和響應信號的特色。
(2)PCI 總線
外圍構件互連總線( Peripheral Component Interconnect , PCI )規範前後經歷了 1.0 版本 、 2.0 版本和 2.1 版本等一系列規範。 PCI 總線是地址 、 數據複用的高性能 32 位與 64 位總線,是微處理器與外圍設備互連的機構,它規定了互連協議 、 電氣 、 機械以及配置空間的標準。 PCI 是不依賴於具體處理器的局部總線,從結構上看, PCI 是在微處理器和原來的系統總線之間加入的一級總線,由一個橋接電路負責管理,實現上下接口和協調數據傳送,管理器提供了信號緩衝,使多種外設可以在高時鐘頻率下保持高性能。
PCI 總線支持主控技術,容許智能設備在須要時得到總線控制權,以加速數據傳輸。爲了將 PCI 總線規範應用到工業控制計算機中, 1995 年,推出了Compact PCI 規範,並相繼推出了 PCI - PCI Bridge規範 、 Computer Telephony TDM規範和用戶定義 I/O 引腳分配規範等。CPCI 總線規範有機地結合了 PCI 總線電氣規範的高性能和歐洲卡結構的高可靠。目前,CPCI 總線已經在嵌入式系統 、 工業控制計算機等高端系統中獲得了普遍的應用,並逐步替代了 VME 和 MultiBUS 總線。
(3)Avalon 總線
Avalon 總線是 Altera 公司設計的用於可編程片上系統( Systemon Programmable Chip , SOPC )中,鏈接片上處理器和其餘 IP 模塊的一種簡單總線協議,規定了主部件和從部件之間進行鏈接的端口和通訊時序。
做爲總結,下表對比了幾種嵌入式總線技術的主要特色。
總線類型 | 特色 |
---|---|
AMBA 總線 | 帶寬高;採用地址與數據分離的流水線操做;支持定長或不定長突發傳送;兼容性好;支持多個總線主設備 |
PCI 總線 | 速度快;支持線性突發傳送;支持即插即用;兼容性好;可靠性高;可擴展性好 |
Avalon 總線 | 支持字節 、 半字和字傳輸;同步接口;獨立的地址線 、 數據線和控制線;設備內嵌譯碼部件;支持多個總線主設備;自動生成仲裁機制;多個主設可同時操做使用一條總線;可自動調整總線寬度,以適應尺寸不匹配的數據 |
1.3 存儲器
嵌入式系統的存儲器主要包括主存和外存,圖 2 所示爲嵌入式系統的存儲結構。
1.3.1 存儲介質
(1)存儲介質基本分類
RAM :隨機訪問存儲器 (Random Access Memory) ,易失性。是與 CPU 直接交換數據的內部存儲器,它能夠隨時讀寫,並且速度很快,一般做爲操做系統或其餘正在運行中的程序的臨時數據存儲媒介。當電源關閉時 RAM 不能保留數據。若是須要保存數據,就必須把它們寫入一個長期的存儲設備中(例如硬盤) 。
ROM :只讀存儲器 (Read Only Memory) ,非易失性。通常是裝入整機前事先寫好的,整機工做過程當中只能讀出,而不像隨機存儲器那樣能快速地 、 方便地加以改寫 。 ROM 所存數據穩定,斷電後所存數據也不會改變。計算機中的 ROM 主要是用來存儲一些系統信息,或者啓動程序 BIOS 程序,這些都是很是重要的,只能夠讀通常不能修改,斷電也不會消失。
RAM 和 ROM 相比,二者的最大區別是 RAM 在斷電之後保存在上面的數據會自動消失,而 ROM 不會自動消失,能夠長時間斷電保存。
(2)隨機訪問存儲器:RAM
隨機訪問存儲器分爲兩類:靜態的和動態的。靜態的RAM(SRAM)比動態RAM(DRAM)更快,但也貴不少。SRAM用來做爲高速緩存存儲器,既能夠在CPU芯片上,也能夠在芯片下。DRAM用來做爲圖形系統的幀緩衝區。
-
SRAM:SRAM存儲器單元具備雙穩態特性,只要有電,它就會永遠的保持它的值(有點相似ROM易失性)。即便有干擾來擾亂電壓,當干擾消除時,電路就會恢復到穩定值。
-
DRAM:動態RAM。
-
SDRAM:同步DRAM。
-
DDR SDRAM:雙倍數據速率同步 DRAM(Double Data-Rate Synchronous DRAM)
(3)只讀存儲器:ROM
計算機存儲器在其上數據已被預先記錄。一旦將數據寫入ROM 芯片,就沒法將其刪除,只能讀取。與主存儲器(RAM)不一樣,即便計算機關閉,ROM也會保留其內容。ROM被稱爲非易失性,如今有不少非易失性存儲器。因爲歷史緣由,雖然ROM中有的類型能夠讀也能夠寫,可是總體上都被稱爲只讀存儲器(Read Only Memory)。ROM是以它們可以被從新編程(寫)的次數和對它們進行重編程所用的機制來區分的。
-
PROM(Programmable ROM):可編程ROM,只能被編程一次。
-
EPROM(Erasable Programmable ROM,EPROM):可擦寫可編程ROM,擦寫可達1000次。
-
EEPROM(Electrically Erasable Programmable ROM,電子可擦除EPROM)
-
閃存(flash memory):基於EEPROM,它已經成爲一種重要的存儲技術。固態硬盤(SSD)U盤等就是一種基於閃存的存儲器
-
nor flash :NOR Flash的讀取和咱們常見的SDRAM的讀取是同樣,用戶能夠直接運行裝載在NOR FLASH裏面的代碼,這樣能夠減小SRAM的容量從而節約了成本。
-
nand falsh:NAND Flash沒有采起內存的隨機讀取技術,它的讀取是以一次讀取一塊的形式來進行的,一般是一次讀取512個字節,採用這種技術的Flash比較廉價。用戶不能直接運行NAND Flash上的代碼,所以好多使用NAND Flash的開發板除了使用NAND Flash之外,還做上了一塊小的NOR Flash來運行啓動代碼。
1.3.2 存儲器類型
嵌入式系統的存儲器主要分爲三種:高速緩存( Cache ) 、 片內主存和片外主存以及外存。
(1)高速緩存
高速緩存是存放當前使用最多的程序代碼和數據的,即主存中部份內容的副本,在嵌入式系統系統中, Cache 所有集成在嵌入式微處理器內部,能夠分爲:數據 Cache 、指令 Cache 和混合 Cache 。
(2)主存
主存是處理器可以直接訪問的存儲器,用來存放系統和用戶的程序和數據,系統上電後,主存中的代碼直接運行,主存的主要特色是速度快,通常採用 ROM、EPROM、NOR flash、SRAM 和 DRAM 等存儲器件。
(3)外存
外部存儲器是不與運算器直接聯繫的後備存儲器,用來存放不經常使用的或暫不使用的信息,外存通常以非易失性存儲器構成,數據可以持久保存,即便掉電,也不消失 。Flash 存儲器是在 EPROM 和E EPROM 的基礎上發展起來的非易失性存儲器,具備結構簡單 、 可靠性高 、 體積小 、 質量輕 、 功耗低 、 成本低等優勢,是最經常使用的一種外存類型。
1.4 I/O 設備與接口
因其應用領域的不一樣,嵌入式系統的輸入設備多種多樣,比較常見的有鍵盤 、 鼠標 、 觸摸屏 、 手柄 、 聲控開關等。
一般,根據輸入設備實現機理的不一樣,嵌入式系統的設備能夠分爲:機械式 、 觸控式以及聲光式三類。
嵌入式系統的輸出設備除了通用計算機經常使用的顯示器 、 打印機 、 繪圖儀等外,還包括 LED 指示燈 、 LCD屏幕 、 揚聲器等媒體。
嵌入式系統與外部設備或其餘的計算機系統進行通訊時,需經接口適配電路,進行工做速度 、 數據格式 、 電平等匹配與轉換,嵌入式系統應用的接口形式是多種多樣的。
嵌入式系統中接口電路的設計須要首先考慮的是電平匹配問題,嵌入式系統微處理器所提供與接收信號的電平,必須與所鏈接的設備的電平相匹配,不然將致使電路損壞或邏輯斷定錯誤。其次,還要考慮驅動能力和干擾問題等因素。
當前,在嵌入式系統中普遍應用的接口主要有: RS232- 串行接口 、 並行接口 、 USB接口 、 IEEE-1394接口以及 RJ-45 接口等,此外,以藍牙爲表明的無線接口在嵌入式系統中的應用也日趨普遍。
(1)RS-232 接口
RS-232 接口是美國電子工業協會推廣的一種串行通訊總線標準,是數據通訊設備和數據終端設備間傳輸數據的接口總線, RS-232 -C標準規定其最高速率爲 20kbps ,在低碼元畸變的狀況下,最大傳輸距離是 15 米,經過使用加強器,其傳輸距離已經延長到 1000 米左右。
(2)USB 接口
USB ( Universal Serial Bus ,通用串行總線)是 1995 年由康柏等幾大廠商共同制定的一種支持即插即用的外設接口標準,它支持 USB 外部設備到主機外部總線的鏈接。在 USB 系統中,必須有一個 USB 主控制器, USB 設備經過四根電纜與 USB 主控制器直接或間接相連, USB 的規範由最初的 1.0 版本發展到了 1.1 版本,以致當前主流的高速 2.0 版本,最高速率可到 480Mbps。
(3)1394 接口
IEEE 1394 即火線( FireWire )最初是由 Apple 公司研製的, 1995 年 IEEE 協會以 FireWire 爲藍本制定了這個串行接口標準,其電纜接口爲6根電纜組成,包括一堆電源線和兩對雙絞信號線。
IEEE 1394 協議定義了三種傳輸速率: 98.304Mbps、196.608Mbps 和 392.216Mbps ,分別稱之爲 S100、S200 和 S400。 爲了保證數據傳輸率,線纜的長度通常不超過4.5m。
IEEE 1394 標準經過全部鏈接設備創建起一種對等網絡,不須要主控節點來控制數據流,即跟 USB 技術相比,最大的區別是 IEEE 1394 不須要主控制器,不一樣的外設之間能夠直接傳遞信息,此外,採用該技術,兩臺計算機能夠共享同一個外部設備。
IEEE 1394 同時支持同步和異步傳輸兩種模式。在異步傳輸模式下,信息的傳遞能夠被中斷,在同步模式下,數據將不受任何中斷和干擾下實現連續傳輸。採用異步傳輸模式時, IEEE 1394 會根據不一樣的設備實際須要分配相應的帶寬。同時, IEEE 1394 設備也支持熱插拔和即插即用。
(4) 並行接口
並行接口,指採用並行傳輸方式來傳輸數據的接口標準。從最簡單的一個並行數據寄存器或專用接口集成電路芯片如825五、6820等,一直至較複雜的SCSI或IDE並行接口,種類有數十種。
一個並行接口的接口特性能夠從兩個方面加以描述:
- 以並行方式傳輸的數據通道的寬度,也稱接口傳輸的位數;
- 用於協調並行數據傳輸的額外接口控制線或稱交互信號的特性。
(5)RJ-45 接口
RJ45是佈線系統中信息插座(即通訊引出端)鏈接器的一種,鏈接器由插頭(接頭、水晶頭)和插座(模塊)組成,插頭有8個凹槽和8個觸點。RJ是Registered Jack的縮寫,意思是「註冊的插座」。在FCC(美國聯邦通訊委員會標準和規章)中RJ是描述公用電信網絡的接口,計算機網絡的RJ45是標準8位模塊化接口的俗稱。
(6)藍牙接口
藍牙技術是一種無線數據和語音通訊開放的全球規範,它是基於低成本的近距離無線鏈接,爲固定和移動設備創建通訊環境的一種特殊的近距離無線技術鏈接。
2 軟件架構
隨着嵌入式技術的發展,特別是在後 PC 時代,嵌入式軟件系統獲得了極大的豐富和發展,造成了一個完整的軟件體系,如圖 3 所示。
這個體系自底向上由三部分組成:嵌入式操做系統、應用支撐軟件和應用軟件。
(1)操做系統
嵌入式操做系統由操做系統內核 、 應用程序接口 、 設備驅動程序接口等幾部分組成。嵌入式操做通常採用微內核結構。操做系統只負責進程的調度 、 進程間的通訊 、 內存分配及異常與中斷管理最基本的任務,其餘大部分的功能則由支撐軟件完成。
(2)應用支撐軟件
嵌入式系統中的應用支撐軟件由窗口系統 、 網絡系統 、 數據庫管理系統及 Java 虛擬機等幾部分組成。對於嵌入式系統來說,軟件的開發環境大部分在通用臺式計算機和工做站上運行,但從邏輯上講,它仍然被認爲是嵌入式系統支撐軟件的一部分。應用支撐軟件通常用於一些淺度嵌入的系統中,如智能手機 、 我的數字助理等。
(3)應用軟件
嵌入式系統中的應用軟件是系統總體功能的集中體現。系統的能力老是經過應用軟件表現出來的,一個嵌入式系統能夠沒有支撐軟件,甚至能夠沒有操做系統,但不能夠沒有應用軟件,不然它就不可能成爲一個系統。從範圍上講,嵌入式系統的應用軟件涉及工業控制 、 家電 、 商業 、 通訊等諸多領域。從跟用戶的交互方式上講,有跟桌面系統相似的軟件,也有嵌入程度很深 、 使用戶感受不到其存在的應用軟件。從運行環境上講,有在操做系統和支撐軟件上運行的軟件,也有直接在硬件上運行的應用軟件。