實時系統必須尊重時間限制,以確保其執行具有功能意義。實時操作系統或 RTOS(有時稱為實時執行內核)是一個函數庫,用于實現計算機系統的時間關鍵管理和資源分配的規則和策略。RTOS 常用于嵌入式系統。
RTOS 為微控制器或處理器 (CPU) 提供了一個軟件抽象層,具有一組管理 CPU 資源調度和訪問的固有功能。簡而言之,RTOS的功能可以總結如下:
它確定應用程序中的哪些執行實體應該控制 CPU、以什么順序以及在放棄對處理器的控制之前允許多長時間。
它管理多個活動之間的內部存儲共享。
它管理連接的硬件設備的輸入和輸出,例如控制器設備的串行端口和 I/O 總線。
它發送有關操作狀態和已發生的任何錯誤的消息。
精心設計的 RTOS(圖 1)提供了許多切實的好處,例如:
通過規則和政策為項目奠定堅實的基礎,以確保一致性和可重復性。
簡化開發過程并提高生產力:豐富的內核服務 (API) 集允許節省編寫擴展代碼的時間,而系統開銷過多,無法完成相同的事情。
對處理器的抽象,而不關注許多硬件細節。
實施可靠的編程系統以成功管理共享同一處理器的多個操作:這使您可以管理對各種處理器或外圍資源的訪問,以便可以在不受干擾的情況下成功執行操作。
清理功能的高效管理:保存和恢復日志集以及管理內存緩沖區。
集成和管理來自通信和中間件堆棧(TCP/IP、USB、CAN、FAT 和 Flash 文件系統等)的必要資源。
優化系統資源的使用,提高產品的可靠性、可維護性和質量。
RTOS 可以將所有這些元素整合到一個平臺中。它實現了便利的開發過程,并允許更短的上市時間、更高的可靠性和更低的風險。
圖 1:通用實時系統 (RTOS)
圖 2:實時系統 (RTOS) – 調度程序
實時操作系統的組件
RTOS 的組件是調度程序、函數庫、類和用戶定義的數據對象。讓我們分別詳細地分析它們。調度程序(圖 2)是 RTOS 的關鍵組件,它確定應用程序代碼的哪些實體以何種順序訪問 CPU。在大多數商業 RTOS 中,存在三種編程模型:搶占式、協作式(也稱為循環)和時間片模型。RTOS 函數庫用作應用程序代碼和 RTOS 之間的接口。這些功能也稱為應用程序接口 (API),將 RTOS 的操作需求封裝在其眾多服務中。應用程序代碼實體通過 API 向內核發出請求,然后確定應用程序所需的編程行為。類和用戶定義的數據對象:RTOS 采用的數據結構通常根據操作類型排列成組或類。RTOS 將用來控制程序的每個類中的對象集由用戶定義。名稱可能不同,具體取決于適當設計的 RTOS 系統。
屬性和功能
RTOS 的屬性和功能可分為主要要求和次要要求。
主要要求:
· 管理處理器和其他系統資源以滿足應用程序的需要。
· 同步事件。
· 在進程之間有效地移動數據。
· 管理與時間等獨立變量相關的流程需求。
· 可預測地執行在可預測的時間段內發生的操作
次要要求:
· 高效的 RAM 管理。
· 獨占訪問系統資源。
資源管理系統
RTOS 的主要功能是管理某些系統資源,例如 CPU、內存和時間。每個資源必須在并發進程之間共享,以實現系統的一般功能,如下原則:
系統內存是有限資源,因此必須共享。
由于 CPU 的運行速度比執行控制或監視的物理進程快得多,因此可以共享 CPU 以避免處理延遲。這種延遲可能會違反基本的系統策略。
時間是 RTOS 管理的最困難的資源。
RTOS 服務的執行速度決定了系統對物理過程變化的響應。然而,對于每項服務而言,在時間方面盡可能地具有確定性(可預測性)同樣重要。如果沒有可預測的時序,系統設計人員無法保證滿足物理過程的時間限制。
多任務處理
如果沒有專用于每個代碼實體的 CPU,就不可能同時執行操作。但是,可以共享 CPU 訪問時間以實現同時操作方面。許多活動之間的切換順序是多任務處理概念的基礎。圖 3 顯示了如何實現多任務處理。左側顯示了處理器的典型模型,由 CPU、一些寄存器、處理器狀態、程序計數器 (PC) 和堆棧組成。
圖 3:多任務處理
要共享物理處理器,每個任務必須具有與物理處理器相同的屬性:一組寄存器、一個狀態、一個指向任務中下一條可執行指令的 PC,以及一個用于局部變量的堆棧。當然,每個活動也會有自己的一組運行代碼。另一方面,圖 2 的右側顯示了幾個虛擬處理器(任務)。每個任務都等待其在物理處理器中激活其屬性的機會。調度程序不斷地決定 CPU 在給定時刻應該控制哪些活動。當需要停止正在運行的任務并將 CPU 控制權交給新任務時,調度程序會將正在運行的任務的屬性(操作上下文)與新任務的屬性(操作上下文)進行交換。此過程稱為“上下文切換”。
優先和搶占
為了實現效率和共享 CPU 利用率,實時多任務操作系統使用從一個任務到另一個任務的適當控制轉移。為了實現這一點,調度程序必須監控系統資源和每個任務的執行狀態,以確保每個實體及時接收 CPU 控制權。
這里的關鍵詞是及時性。沒有在正確的時間執行必要任務的實時系統是無效的。這個錯誤可能會產生從良性到災難性的后果。這意味著內核服務請求的響應時間和這些服務的執行時間必須是快速且可預測的。RTOS 固有的可預測性允許設計應用程序代碼以確保檢測和處理所有需求。實時應用程序通常由多個進程(任務和線程)組成,由于外部或內部事件,這些進程需要在不同時間控制系統資源。
調度模型
有幾種調度模型允許任務從處理器接收執行時間。這些中的每一個的有用性取決于
Round-Robin (Cooperative) 應用要求:所有活動同等重要,具有相同的優先級。一旦任務接收到處理器控制,它將一直運行,直到完成或到達重新調度點。然后它放棄對 CPU 的控制權,以允許調度確定下一個任務,從而獲得對 CPU 的控制權。在其執行周期中,行循環任務(圖 4)不能凍結、等待、暫停或執行任何可能允許另一個任務獲得 CPU 控制權的操作,但它可以被中斷(異常)搶占。Tick-Sliced Scheduling:是循環調度的一種變體。兩種方法都是相似的,只是任務滴答只能由可以表示時間或某些其他特定單位的關聯計數器執行預定義的次數(量子滴答)。任務保持對 CPU 的控制,直到時間量刻度到期或直到活動阻塞。如果量子滴答到期,如果有另一個具有相同優先級的任務等待執行,則調度會強制任務出售其業務。Preemptive Scheduling:是導致預防性計劃概念的策略,其中物理處理器的控制權委托給具有最高優先級的任務。如圖 5 所示,較低優先級的任務(任務 2)在發生激活或釋放任務 1 的事件時被搶占。是導致預防性計劃概念的策略,其中物理處理器的控制委托給具有最高優先級的任務。如圖 5 所示,較低優先級的任務(任務 2)在發生激活或釋放任務 1 的事件時被搶占。是導致預防性計劃概念的策略,其中物理處理器的控制委托給具有最高優先級的任務。如圖 5 所示,較低優先級的任務(任務 2)在發生激活或釋放任務 1 的事件時被搶占。
圖 4:循環
圖 5:任務搶占
圖 6:內核服務
內核類
RTOS 在一組通常稱為類的結構上運行。每個類都支持一組通常稱為內核服務的運算符(圖 6),這些運算符由應用程序進程調用以實現預期的行為。這些類如下:
任務:管理程序代碼的執行;每個活動都獨立于其他活動,但能夠以多種形式與其他活動建立關系,包括數據結構、輸入、輸出或其他構造。
任務間通信:將信息從一項任務傳遞到另一項執行的任務。用于交互任務的常用類是信號量、隊列和管道。紅綠燈提供了一種使活動與各種事件同步的方法。
內核服務:執行某些系統行為的例程。當應用程序代碼實體請求內核提供的功能時,會啟動對該功能的內核服務請求。
ISR(中斷服務程序):是一個軟件程序,被激活以響應中斷
編譯具有實時支持的 Linux 內核
要編譯具有實時支持的 linux 內核(圖 7),您必須首先實時獲取源代碼和補丁。–
http://www.kernel.org/內核版本;
http://www.kernel.org/pub/linux/kernel/projects/rt/獲取 RTOS 補丁
下載兼容版本很重要,否則編譯不會產生積極的結果。解壓文件夾后,復制舊配置文件:
cp /boot/config/kernel path/
下一步:
制作 oldconfig
完成上述命令后,運行以下命令:
bzcat/路徑dellapatch/patch-2.6。Xx-rtyy。柏油。Bz2 | 補丁-p1
這會將實時補丁插入 Linux 內核。此時鍵入以下命令:
制作菜單配置
轉到“處理器類型和功能”(圖 8)并在“搶占模式”下選擇“完全搶占(實時)”。
在“定時器頻率”下選擇值,例如 1000 Hz。除了修改內核的其他功能外,設置完成后必須立即執行以下命令:
制作 -j5 bzImage
制作 -j5 模塊
制作modules_install
現在復制文件:/bootfolder中的arch / x86 / boot / bzImage。您有兩個選項來運行測試:在啟動時使用 grub shell 并手動加載文件,或者為 grub 創建一個新條目。這可以通過將默認內核版本的值復制到/boot/grub/menu并適當地修改路徑和名稱來完成。
圖 7:QNX 微內核示例
圖 8:使用 RTOS 編譯內核
審核編輯 黃昊宇
-
嵌入式
+關注
關注
5150文章
19668瀏覽量
317465 -
Linux
+關注
關注
87文章
11510瀏覽量
213753
發布評論請先 登錄
一文讀懂:嵌入式Linux實時性進階
怎么結合嵌入式,Linux,和FPGA三個方向達到一個均衡發展?

嵌入式開發入門指南:從零開始學習嵌入式
嵌入式主板開發詳細指南

嵌入式 Linux 操作系統配置
【北京迅為】i.mx8mm嵌入式linux開發指南第四篇 嵌入式Linux系統移植篇第六十九章uboot移植

嵌入式系統的原理和應用
嵌入式linux開發的基本步驟有哪些?
嵌入式linux開發板怎么操作
嵌入式linux開發板芯片的工作原理
嵌入式系統中的實時操作系統
專家力薦|《嵌入式系統原理與開發——基于RISC-V和Linux系統》新書發售

評論