CMSIS-RTOS 簡介


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供應商可能會提供具有擴展功能的實現。

API_Structure.png

典型的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實現零中斷延遲。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM