兼顧即時性/任務調度彈性 RTOS簡化嵌入式軟體設計

作者: Lim Jia Zhi
2022 年 07 月 10 日
即時作業系統(RTOS)是輕型作業系統,用於在資源和時間受限的設計中使多工和任務整合變得易於執行,這在嵌入式系統中較為常見。此外,即時表示的是執行時間而非原始速度的可預測性/確定性,因此RTOS由於其確定性,通常可以滿足注重即時性應用的要求。 RTOS可調度處理不同任務 以下是RTOS的主要概念: 任務 任務(也可稱為進程/執行緒)是獨立函數,以無限迴圈方式運作,通常每個函數只負責一個功能。任務在自己的時間(時間隔離)和記憶體堆疊(空間隔離)內獨立運作。透過使用硬體記憶體保護單元(MPU)可以保證任務之間的空間隔離,這種保護單元會限制可存取的記憶體區域,並在出現違規存取時觸發故障異常。通常情況下,內部周邊都是記憶體映射的,所以MPU也可以用來限制周邊存取。 任務可以處於以下不同的狀態: ‧阻塞—任務正在等待一個事件(如延遲超時、資料/資源的可用性)。 ‧待命—任務隨時可以在CPU上執行,但由於CPU被另一個任務使用而沒有執行。 ‧執行—任務被分配到CPU上執行。 調度器 RTOS中的調度器控制哪一個任務可在CPU上執行,且有不同的調度演算法。通常包括如下幾種演算法: ‧搶占演算法—如果另一個優先順序更高的任務就緒,則中斷任務。 ‧協作演算法—只有當目前正在運行的任務主動讓出時,才會進行任務切換。 搶占調度可以讓優先順序較高的任務中斷優先順序較低的任務,以滿足即時約束條件,但代價是在上下文切換過程會產生更多的負荷。 任務間通訊(ITC) 多工通常需要相互分享資訊或事件。最簡單的共用方式是直接在RAM中讀/寫共用全域變數,但由於競爭條件會導致資料損壞風險,因此這種方式並不可取。比較好的方法是透過Setter和Getter函數來讀取/寫入檔案範圍內的靜態變數,透過禁用中斷或在Setter/Getter函數內部使用互斥(Mutex)來防止競爭條件。更簡潔的方法是使用執行緒安全的RTOS物件,如在任務之間傳遞資訊的訊息佇列。 除了資訊共用外,RTOS物件還能夠同步任務執行,因為任務可以被阻塞,以等待RTOS物件的可用性。 大多數RTOS都有如下物件: ‧訊息佇列 -傳遞資料的先進先出(FIFO)佇列 -可以透過複製或引用(指標)方式來發送的資料 -用於在任務之間或中斷與任務之間發送資料 ‧旗標 -可做為參考計數器,記錄特定資源的可用性 -可以是二進位或計數旗標 -用於保護資源的使用或同步任務執行 Mutex 類似於二進位旗標,一般用於保護單一資源的使用(MUTual...
》想看更多內容?快來【免費加入會員】【登入會員】,享受更多閱讀文章的權限喔!
標籤
相關文章

擺脫需求導向設計束縛 嵌入式系統開發手到擒來

2010 年 08 月 02 日

感測節點結合通訊功能 物聯網打造智慧新生活

2013 年 07 月 01 日

資料安全多層布建 MCU程式IP/本地數據不外流

2020 年 10 月 22 日

瑞薩64位元MPU實現RTOS高解析度HMI/快速啟動

2022 年 08 月 10 日

麵包板靈活加速產品開發(1)

2023 年 10 月 17 日

麵包板靈活加速產品開發(2)

2023 年 10 月 17 日
前一篇
推動量子運算技術發展 AWS成立量子網路中心
下一篇
ROHM Window Type Reset IC精度監控電壓異常