CMSIS-RTOS API是基於Arm®Cortex®-M處理器的設備的通用RTOS接口。CMSIS-RTOS為需要RTOS功能的軟件組件提供標准化API,從而為用戶和軟件行業帶來了巨大的好處。
- CMSIS-RTOS提供許多應用程序或技術(如UML或Java(JVM))所需的基本功能。
- CMSIS-RTOS API的統一功能集簡化了軟件組件的共享,減少了學習工作量。
- 使用CMSIS-RTOS API的中間件組件與RTOS無關。符合CMSIS-RTOS標准的中間件更易於適應。
- CMSIS-RTOS API的標准項目模板(例如電機控制)可以隨附免費提供的CMSIS-RTOS實施。
- 注意
- CMSIS-RTOS API定義了最小特征集。RTOS供應商可能會提供具有擴展功能的實現。
典型的CMSIS-RTOS API實現與現有的實時內核接口。CMSIS-RTOS API提供以下屬性和功能:
- 函數名稱,標識符和參數具有描述性且易於理解。這些功能強大而靈活,減少了暴露給用戶的功能。
- 線程管理允許您定義,創建和控制線程。
- 中斷服務程序(ISR)可以調用一些CMSIS-RTOS功能。當無法從ISR上下文調用CMSIS-RTOS函數時,它拒絕調用。
- 三種不同的線程事件類型支持多線程和/或ISR之間的通信:
- 信號:是一個標志,可用於指示線程的特定條件。信號可以在ISR中修改或從其他線程設置。
- 消息:是一個32位值,可以發送到線程或ISR。消息緩存在隊列中。消息類型和隊列大小在描述符中定義。
- Mail:是一個固定大小的內存塊,可以發送到線程或ISR。郵件緩存在隊列中並提供內存分配。郵件類型和隊列大小在描述符中定義。
- 互斥量和信號量被合並。
- CPU時間可以安排具有以下功能:
- 甲超時參數在許多CMSIS-RTOS功能並入以避免系統死機。指定超時后,系統將等待,直到資源可用或發生事件。等待時,會安排其他線程。
- 所述osDelay函數將一個線程進入狀態WAITING為指定的一段時間。
- 通用osWait函數等待分配給線程的事件。
- 所述osThreadYield提供合作社線程切換並傳遞到執行相同優先級的另一個線程。
CMSIS-RTOS API可選擇通過Cortex-M存儲器保護單元(MPU)集成多處理器系統和/或訪問保護。
在一些RTOS實現中,線程可以在不同的處理器上執行,因此郵件和消息隊列可以駐留在共享的存儲器資源中。
CMSIS-RTOS API鼓勵軟件行業發展現有的RTOS實施。使用宏定義和訪問內核對象。這允許區分。RTOS實現可以在不同方面針對Cortex-M處理器進行不同和優化。可選的特征可以是例如
- 通用等待功能; 即支持時間間隔。
- 支持Cortex-M內存保護單元(MPU)。
- 零拷貝郵件隊列。
- 支持多處理器系統。
- 支持DMA控制器。
- 確定性上下文切換。
- 循環上下文切換。
- 避免死鎖,例如優先級倒置。
- 使用Cortex-M3 / M4指令LDREX和STREX實現零中斷延遲。