嵌入式微處理器
微處理器主要由3大部分構成:
1、控制單元:負責取指、解碼和取數等基本操作,並發送主要的控制指令,其中包括兩個重要的寄存器:PC 和 IR;
2、算數邏輯單位:分為兩部分,算術運算單元和邏輯運算單元;
3、寄存器:儲存暫時性的資料。
微處理器體繫結構
1、馮諾依曼(Von Neumann)與哈佛(Harvard)
在馮諾依曼體繫結構的電腦中,程式和資料共用一個儲存空間,程式指令儲存地址和資料存放區地址指向同一個儲存空間的不同位置。採用統一的地址和資料匯流排,程式指令和資料的寬度相同。馮諾依曼體繫結構的電腦由CPU和儲存空間構成,PC是CPU內部指示指令和資料存放區位置的寄存器,而不決定程式流程。
哈佛體繫結構是一種將程式指令儲存和資料存放區分開的體繫結構。程式指令和資料分開儲存,獨立編址,獨立訪問,4套匯流排。分離的程式匯流排和資料匯流排可允許在一個機器周內同時擷取指令字和運算元,資料吞吐率提高一倍。
2、CISC 與 RISC
CISC通常包括一個複雜的資料通路和一個微程式控制器。微程式控制器由微程式儲存空間、微程式計數器和地址選擇邏輯構成。微程式儲存空間中的每個字都表示一個控制字,並且包含了一個刻度內所有資料通路控制訊號的值。每個處理器指令都由一系列控制字組成。IBM801,世界上第一台採用RISC思想的電腦。
RISC處理器的資料通路通常由一個大的寄存器檔案和一個ALU組成。大的寄存器檔案包含了程式計算中所有的運算元和結果。Load指令將資料放到Reg檔案中,通過Store指令將其放回記憶體。由於指令數目的減少,RISC編譯器將需要一系列的RISC指令完成複雜的操作,給編譯器帶來了靈活的最佳化效能。
CISC 和 RISC比較:指令系統、執行時間、編碼長度、定址方式、操作、編譯。
實現RISC思想的主要方法有:
(1)減少指令種類;
(2)Load/Store結構;
(3)採用指令流水線技術;
(4)在處理器中配置更多的通用Reg;
3、資訊儲存的位元組順序
小端儲存法:低位元組資料存放在記憶體低地址處;
大端儲存法:低位元組資料存放在記憶體高地址處;
不同儲存模式的微處理器間通訊時要遵循已建立好的關於位元組順序的規則。
嵌入式軟體體繫結構
1、無OS情形
(1)迴圈輪轉方式:把系統功能分成若干不同的任務,然後把它們包含在一個無限的迴圈語句中,按照順序逐一執行,之後再迴圈。
缺點:過於簡單,無法處理非同步事件,缺乏並發處理能力。
(2)前後台系統:在迴圈輪轉的基礎上,增加了中斷處理功能;
foreground(前景程式:事件處理級程式):中斷服務程式ISR,處理非同步事件;
background(背景程式:任務級程式):系統管理發送器,無限迴圈,負責嵌入式系統軟硬體資源的分配、管理及任務調度。
2、有OS情形
(1)提高了系統可靠性;
(2)提高了系統開發效率,降低了開發成本,縮短了開發週期;
(3)有利於系統的擴充和移植;
對不同的嵌入式作業系統,所包含的組件可能各不相同。一般來說,所有的OS都會有一個核心Kernel,核心指OS中的一個組件,包含了OS的主要功能,即OS的各種特性及其相互間的依賴關係。(任務管理、儲存管理、檔案管理、裝置管理、網路管理)
嵌入式作業系統分類
1、按“系統類別型”分類:商用系統、專業系統、開源系統;
2、按“回應時間”分類:RTOS、非RTOS;
3、按“軟體結構”分類:單體結構、分層結構、微核心結構;
差別體現在兩方面:(1)核心的設計,即核心中包含了哪些功能組件;(2)系統中整合了哪些其他的系統軟體。
(1)單體結構(eg:linux):在單體結構的OS中,中介軟體和裝置驅動程式通常整合在系統核心中,整個系統通常只有一個可執行檔,包含了所有的功能組件。整個OS由一組功能模組構成,這些功能模組間可以相互調用。
優點:效能較好,系統各模組間可以相互調用,通訊開銷小;
缺點:OS體積龐大,高度整合,在系統裁剪、修改和調試等方面較為困難。
(2)分層結構:在分層結構中,一個OS被劃分為若干個層次,各層間的調用關係是單向的。分層結構的OS也只有一個大的可執行檔,包含裝置驅動程式和中介軟體。要求在每個層次上都要提供一組API介面函數。
(3)微核心結構(eg:VxWorks):在核心中,把OS的大部分功能都剝離出去,只保留最核心的功能單元。核心非常小,大部分的系統功能都位於核心之外。在微核心OS中,新的功能組件可以被動態地添加進來,具有易於擴充、調試方便和易於移植等特點。核內組件與核外組件間的通訊是訊息傳遞,而不是直接的函數調用。
嵌入式作業系統重要概念
1、先佔式核心:當前最高優先順序任務一旦就緒,就立即獲得CPU控制權,且控制權可知;
2、調度策略分析:(強即時、弱即時)
3、任務優先順序分配:(靜態優先順序、動態優先順序)
4、時間的可確定性: 強RTOS的函數調用與服務的執行時間具有可確定性。系統服務的執行時間不依賴於應用程式任務的多少。系統完成某個確定任務的時間可預測。
5、任務切換時間:(取決於CPU有多少Reg要入棧)
6、中斷回應時間:在先佔式核心中,中斷回應時間 = 關中斷最長時間 + 保護CPU內部寄存器時間 + 進入中段服務函數的執行時間 + 開始執行ISR第一條指令的時間;
7、優先順序反轉:(解決方案:優先順序繼承、優先權極限)
8、任務執行時間的抖動
9、任務劃分:(原則:I/O原則、優先順序原則、大量原則、功能耦合、偶然耦合、頻率組合)