嵌入式系統起源於20世紀70年代,它是硬體和軟體交替發展的雙螺旋式發展;早期的嵌入式系統以功能簡單的微控制器爲核心,這種系統大部分應用於各類工業控制,這一階段嵌入式系統的主要特點是系統結構和功能比較單一,處理效率比較低;隨着微處理器的誕生,嵌入式系統得到了廣泛的發展,這一時期出現了一些商用的嵌入式系統並得到了迅速發展,並且具備了高度的模組化和擴充套件性,具有大量的應用程式介面,嵌入式應用軟體也變得豐富起來;隨着微電子技術、IC設計和EDA工具的發展,基於SoC的嵌入式系統有了較大的發展,SOC使得嵌入式系統越來越小,功能越來越強,嵌入式技術與Internet的結合推動了嵌入式技術的快速發展。
嵌入式系統一般是指非PC系統,它是以應用爲中心、以計算機技術爲基礎、並且軟硬體可裁剪的,適用於應用系統對功能、可靠性、成本、體積、功耗等綜合性嚴格要求的專用計算機系統。嵌入式系統一般由嵌入式微處理器、外圍硬體裝置、嵌入式操作系統和使用者應用程式等組成,用於實現對其他裝置的控制、監視和管理功能。
嵌入式系統包括硬體和軟體兩部分。硬體包括處理器、微處理器、記憶體、外圍器件、I/O埠和圖形控制器等。軟體部分包括操作系統軟體和和應用程式程式設計。應用程式控制着系統的運作和行爲,操作系統控制着應用程式程式設計與硬體的互動作用。
專用性強:嵌入式系統通常是基於面向特定應用的嵌入式CPU,通常具有體積小、功耗低和整合度高等特點,通常是面向使用者、面向產品、面嚮應用的,它必須與具體的應用相結合才具有生命力。
整合度高:嵌入式系統是將計算機技術、半導體技術以及各個行業的具體應用相結合的產物,所以它是一個技術密集、資金密集、高度分散、不斷創新的整合系統。
系統精簡:嵌入式系統必須根據應用需求對軟硬體進行裁剪,滿足應用系統的功能、可靠性、成本、體積、功耗等要求。
高可靠性和實時性:爲了提高執行速度和系統可靠性,嵌入式系統中的軟體一般都是固化在記憶體晶片中,而不是儲存在磁碟中。
需要專門的開發工具和環境:嵌入式系統本身不具備自主開發能力,設計完成以後使用者通常不能直接對其中的程式功能進行修改,所以必須有一套開發工具和環境才能 纔能進行開發。
硬體層包含嵌入式微處理器,記憶體,如FALSH、ROM、RAM等,I/O介面,在微處理器上的電源電路,時鐘電路和記憶體電路等,這些構成了嵌入式系統的核心控制模組。
系統軟體層由實時多工操作系統、檔案系統、網路系統、圖形使用者介面和通用元件模組組成;應用軟體層由針對特定任務而開發的應用程式組成,主要面向被控制物件和使用者。
CISC系統結構:指令數量多,爲可變長格式,使用頻率差別較大,支援多種定址方式,指令功能複雜,研製週期長。
RISC系統結構:指令數量少,指令長度固定,定址方式較少,大部分爲單週期指令,適合採用流水線,優化編譯,能夠有效的支援高階語言。
微處理器:只含CPU,不含記憶體、I/O介面和其他功能模組。
指令的執行週期:取指令,指令譯碼,執行指令,儲存
程式記憶體於數據記憶體分開,提供了較大的數據儲存頻寬,適合於數位信號處理,大多數DSP都是哈弗結構,ARM9也是哈弗結構
嵌入式微控制器MCU:由CPU、記憶體、I/O介面電路和麪向特定應用的功能模組組成,典型代表是微控制器;微控制器具有成本優勢,能夠縮短產品的設計、開發、調試周期,系統故障率降低,晶片數減少,靈活性和通用性也會降低。
嵌入式DSP處理器:DSP處理器是規模很小、結構相對簡單、速度較快的微處理器,專門用於信號處理方面的處理器,其在系統結構和指令演算法方面進行了特殊設計,在數位濾波、FFT、譜分析等各種儀器上DSP獲得了大規模的應用。
嵌入式微處理器MPU:由通用計算機中的CPU演變而來,只保留和嵌入式應用緊密相關的功能硬體,去除其他的冗餘功能部分,這樣就以最低的功耗和資源實現嵌入式應用的特殊要求。
嵌入式系統微處理器就是一種電路系統。它結合了許多功能模組,將功能做在一個晶片上,如ARM RISC、MIPS RISC、DSP或是其他的微處理器核心,加上通訊的介面單元。
SOC通過改變內部工作電壓,降低晶片功耗;減少晶片對外管腳數,簡化製造過程;減少外圍驅動介面單元及電路板之間的信號傳遞,可以加快微處理器數據處理的速度。
ARM處理器特點:小體積、低功耗、成本低、高效能,16位元/32位元雙指令集,使用廣泛,合作夥伴衆多。
ARM處理器提供的解決方案包括:在無線、消費電子和影象應用方面的開放平臺,儲存、自動化、工業和網路應用的嵌入式實時系統,智慧卡和SIM卡的安全應用。
ARM處理器系列:ARM7、ARM9、ARM9E、ARM10和ARM11
在ARM處理器中,可以通過JTAG直接控制ARM的內部匯流排,IO口等資訊,從而達到偵錯的目的
Scan Chain 0:包括ARM核的所有的IO和匯流排的輸入輸出控制信號.
Scan Chain 1:包括ARM核的數據總線和一個斷點控制信號。通過控制這個條鏈,可以控制ARM核執行指定的指令。
Scan Chain 2:通過控制EmbeddedICE宏單元,實現對ARM執行指令的斷點、觀察點的控制。
硬體斷點:在ARM中直接設定watchpoint中的地址,當ARM執行到制定的地址時,就進入Debug狀態.
軟體斷點:改變記憶體中的ARM指令爲一個特殊的數據X(ARM的未定義指令),同時,設定watchpoint中的斷點數據也爲X,當ARM把X數據作爲指令讀入的時候,ARM就進入Debug狀態.
優缺點:•硬體斷點:數目受EmbeddedICE中的Watchpoint數目的限制;但是,可以在任何地方設定斷點;•軟體斷點:數目不受限制,但是,軟體斷點是通過替換系統的斷點地址的指令實現的,所以,軟體斷點只能在可寫的記憶體的地址中設定(比如:RAM),而不能在ROM(比如:Flash)中設定.
嵌入式操作系統的功能越來越豐富,不僅能提供一些基本的功能,如:內核、網路、GUI、檔案系統等,而且還會具有很多新的功能,如支援J2ME(JAVA2Micro Edition)、嵌入式CORBA,XML等。
用於嵌入式計算機的操作系統都稱爲嵌入式操作系統,它實際上代表着一個集合,最低端是簡單的監控程式,最高階則爲通用操作系統,它具備一般操作系統的功能,同時具有嵌入式軟體的特點。
嵌入式操作系統大致經歷了以下幾個階段:無操作系統階段,簡單操作系統階段,實時操作系統階段,面向Internet操作系統階段。
無操作系統階段:具有與一些監測、伺服、指示裝置相配合的功能,一般沒有明顯的操作系統支援。
簡單操作系統階段:以嵌入式處理器爲基礎,以簡單監控式操作系統爲核心。
實時操作系統階段:n以通用型嵌入式操作系統爲標誌的嵌入式系統,典型代表有:VxWorks、pSos、Windows CE等,執行在不同的微處理器,具有強大的能用型操作系統的功能。
面向Internet階段:隨着Internet的進一步發展,以及Internet技術與資訊家電、工業控制技術等的結合日益緊密,嵌入式裝置與Internet的結合纔是嵌入式技術的真正未來。
包括使用者模式和內核模式,其中內核模式包括檔案系統、進程間管理、進程間通訊、I/O和裝置管理和虛存管理。
嵌入式Linux(Embeded Linux)是指對Linux經過小型化裁剪後,能夠固化在容量較小的記憶體晶片或微控制器中,應用於特定嵌入式場合的專用Linux操作系統。
指系統能夠在限定的響應時間內提供所需水平的服務。
硬實時系統:如果計算機沒有能夠及時的交付計算結果,那麼由這個計算機控制的系統就會發生災難性的後果,具有強定時約束。
軟實時系統:對計算任務有時限要求,但該時限要求的延遲不會引起嚴重的後果,一般不需要證明系統確實滿足實時效能要求,具有弱定時約束。
速率單調演算法(Rate Monotonic),RM演算法,靜態優先順序。
時限單調演算法(Deadline Monotonic),DM演算法 靜態優先順序,按照任務的相對時限來分配優先順序。
最早時限優先演算法(Earliest Deadline First),EDF,動態優先順序,按照作業的絕對時限爲其分配優先順序。
最遲釋放時間演算法(Latest Release Time), LRT反向EDF演算法,動態優先順序。
搶佔式排程:正在執行的任務可能被其他任務所打斷。
非搶佔式排程:一旦任務開始執行,該任務只有在執行完成而主動放棄CPU資源,或是因爲等待其他資源被阻塞的情況下纔會停止執行。
基於優先順序的可搶佔排程方式:如果出現具有更高優先順序的任務處於就緒狀態時,當前任務將停止執行,實時內核需要確保CPU總是被具有最高優先順序的就緒任務所控制。
優先順序反轉:高優先順序任務需要等待低優先順序任務釋放資源,而低優先順序任務又正在等待中等優先順序任務的現象。
解決優先順序反轉的常用協定爲:優先順序繼承協定,優先順序天花板協定。
嵌入式系統開發工具:需求分析工具,軟體設計工具,編碼、偵錯工具,測試工具,設定管理工具、維護工具等。
嵌入式軟體測試工具:記憶體分析工具、效能分析工具、覆蓋分析工具、缺陷跟蹤工具。
記憶體分析工具:可以用來處理在進行動態記憶體分配時產生的缺陷。
效能分析工具:引導開發人員發現在系統呼叫中存在的錯誤以及程式結構上的缺陷。
覆蓋分析工具:使用程式碼覆蓋分析工具追蹤哪些程式碼被執行過,開發人員通過對分析結果進行總結,可以確定哪些程式碼被執行過,哪些程式碼被遺漏了。
最小的嵌入式 Linux 系統需要三個基本元素:
系統引導實用程式
Linux 內核,由記憶體管理、進程管理和定時服務構成
系統程式:libc、busybox、GUI
建立交叉編譯環境
系統引導
精簡內核
驅動程式開發
嵌入式檔案系統
應用介面開發:將X-Window換成MicroWindows等適合的圖形系統。
硬體裝置初始化
爲載入階段2準備RAM空間。
拷貝階段2到RAM中。
設定堆疊指針SP。
跳轉到階段2的C入口點。
初始化本階段要用到的硬體裝置。
檢測系統的記憶體對映。
載入內核映像和根檔案系統映像。
設定內核的啓動參數。
Linux支援ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等多種檔案系統,爲了統一管理,Linux引入了虛擬檔案系統VFS (Virtual File System),爲各類檔案系統提供一個統一的操作介面和應用程式設計介面.
Android 是 Google 開發的基於 Linux 平臺的、開源的、智慧手機操作系統。
全開放智慧手機平臺
多硬體平臺的支援
使用衆多的標準化技術
核心技術完整,統一
完善的開發環境和文件
完善的輔助開發工具
Linux kernel 2.6 或 3.0(Android 4.0)以上,依賴 Linux kernel 提供的核心服務,比如記憶體管理、進程管理、網路、硬體驅動等。
Android本地庫:Android自己的C/C++庫被android的上層元件使用。
Dalvik虛擬機器:比標準的Java虛擬機器效率高,執行快。
管理程式,系統級別的服務,使用Java編寫。
核心應用程式,使用者自己的程式,通過Java API存取Android應用層框架,•通過Jni存取C/C++本地庫。
啓動init進程,它是第一個由內核啓動的使用者級進程。
啓動Servicemanager和zygote進程。
啓動其他的Java服務管理程式。
啓動桌面應用程式。
Android SDK 開發環境:Android SDK提供了在Android平臺上使用Java語言進行Android應用開發必須的工具和API庫。
Java應用層框架API庫。
模擬器(arm虛擬機器)。
輔助工具:ADB(偵錯工具)、AAPT(生成APK)、DX(編譯工具)、DDMS(偵錯視窗)。
開發文件。