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实现零中断延迟。

最新文章

  1. easyloader源码
  2. jquery EasyUI datagrid 的扩展
  3. text()和html()的区别,以及val()
  4. 2016年中国大学生程序设计竞赛(合肥)-重现赛1009 HDU 5969
  5. Ajax 的缺点
  6. Angular.js+Bootstrap实现手风琴菜单
  7. 使用Powermock进行单元测试,以及常见问题的处理
  8. mysql中实现行号,oracle中的rowid
  9. easyui源码翻译1.32--accordion(手风琴)
  10. 【HDU2120】Ice_cream's world I(并查集基础题)
  11. Week13(12月5日):不怕错误,慢慢来 :)
  12. ORM武器:NHibernate(三)五个步骤+简单对象CRUD+HQL
  13. PLSQL_监控有些SQL的执行次数和频率
  14. poj 3026 Borg Maze (bfs + 最小生成树)
  15. 蔡勒(Zeller)公式:根据日期推算是星期几
  16. hadoop hdfs ha 模式
  17. Teemo's tree problem
  18. asp.net几个重要对象
  19. 力扣(LeetCode) 9.回文数
  20. Linux驱动开发——指针和错误值

热门文章

  1. Pharmaceutical的同学们都看过来,关于补码运算的复习相关内容
  2. Java数据库连接——jdbc-odbc桥连接方式及汉字乱码问题
  3. POJ 3067 Japan 【 树状数组 】
  4. java 通过cookie判断是否登陆
  5. luogu P4139 上帝与集合的正确用法(扩展欧拉定理)
  6. mycat读写分离+垂直切分+水平切分+er分片+全局表 测试
  7. 紫书 习题 8-15 UVa 1617 (贪心)
  8. HDU 4069 数独
  9. GET和POST请求的核心区别
  10. linux文件时间的查看和改动touch