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

CMSIS-RTOS 简介的更多相关文章

  1. CMSIS RTOS -- embOS segger

    #ifndef __CMSIS_OS_H__ #define __CMSIS_OS_H__ #include <stdint.h> #include <stddef.h> #i ...

  2. CMSIS的简介

    Cortex微控制器软件接口标准(Cortex Microcontroller Software Interface Standard)是ARM和一些编译器厂家以及半导体厂家共同遵循的一套标准,是由A ...

  3. RTOS之CMSIS-RTOS

    CMSIS-RTOS 是实时操作系统的通用 API.它提供了标准化的编程接口,它只是封装了RTX/embos,以后还可能封装freeRTOS,uc/os等等第三方OS,CMSIS RTOS是ARM现在 ...

  4. 聊聊CMSIS-RTOS是什么东东

    起因:发布自己翻译用的CMSIS_RTOS_Tutorial后,陆续收到网友关于“CMSIS-RTOS是干么的?”之类的问题,再次统一回复. 众所周知,实时操作系统是嵌入式领域的基石.而可选的嵌入式操 ...

  5. STM32F429i-DISCO FreeRTOS keil STM32CubeMX

    目标: 在STM32F429 Disco开发板上用FreeRTOS双线程点亮双闪led. 准备: 0. STM32F429i-DISCO 1. keil ARMMDK 5.13 2. STM32Cub ...

  6. CMSIS_RTOS_Tutorial自译中文版

    一.序言 本资料是Trevor Martin编写的<The Designers Guide to the Cortex-M Processor Family>的摘要,并得到Elsevier ...

  7. CMSIS-RTOS 时间管理之时间延迟Time Delay

    时间管理 Time Management 此RTOS除了可以把你的应用代码作为线程运行,它还可以提供一些时间服务功能,使用这些功能你就可以访问RTOS的一些系统调用. 时间延迟Time Delay 在 ...

  8. ARM官方《CMSIS-RTOS教程》之线程Threads

    创建线程Creating Threads 一旦RTOS开始运行,就会有很多系统调用来管理和控制活跃的线程.默认情况下,main()函数自动被创建为第一个可运行的线程.在第一个例子里我们使用main() ...

  9. CMSIS-RTOS的使用

    CMSIS-RTOS实现通常作为库提供.要将RTOS功能添加到现有的基于CMSIS的应用程序,需要添加RTOS库(通常是配置文件).RTOS库的可用功能在头文件cmsis_os.h中定义,该文件特定于 ...

  10. 【RL-TCPnet网络教程】第4章 RL-TCPnet网络协议栈简介

    第4章        RL-TCPnet网络协议栈简介 本章节介绍RL-TCPnet网络协议栈,让大家对 RL-TCPnet有一个整体的了解,RL-TCPnet是一款小型网络协议栈,适用于 ARM 内 ...

随机推荐

  1. Eclipse中將Java项目转变为Java Web项目

    1.在项目上点击右键=>properties,在Project Facets配置项中,勾选Dynamic Web Module.Java.JavaScript选项. 2.用记事本打开项目目录下的 ...

  2. QT笔记 -- (1) .ui文件

    刚开始写QT,designer用的不习惯,打开.ui文件看了一下,很容易读的xml文件,记录一下. 大体框架如下 <?xml version="1.0" encoding=& ...

  3. MySQL存储过程和自定义函数、Navicat for mysql、创建存储过程和函数、调用存储过程和函数的区别

    1 MySQL存储过程和函数 过程和函数,它们被编译后保存在数据库中,称为持久性存储模块(Persistent Stored Module,PSM),可以反复调用,运行速度快. 1.1 存储过程 存储 ...

  4. frameset宽屏居中写法

    在写frameset的时候发现页面较小的时候不能在屏幕上居中,记录一下frameset页面居中的写法 <frameset cols="*,1280,*" frameborde ...

  5. ActiveMQ学习笔记(5)----Broker的启动方式

    Broker:相当于一个ActiveMQ服务器实例,在实际的开发中我们可以启动多个Broker. 命令行启动参数示例如下: 1. activemq start 使用默认的activemq.xml来启动 ...

  6. 洛谷P3369 【模板】普通平衡树 01trie/骚操作

    Code: #include <cstdio> #include <algorithm> #include <cstring> #define setIO(s) f ...

  7. 操作Map

    ///操作Map Map<String,Object> userInfo = new HashMap(); userInfo.put("uid", adUserEnti ...

  8. (WC2018模拟十二)【FJOI2016集训Day7T2】点对游戏

    题解: 还好...看懂题目就好做了.(Orzdyh) 首先选择的点是等概率随机的,也就是说每种选择结果的概率都是一样的,所以选择一个点的时候已经选择的点不会有影响,那么就可以直接算出点对个数再求总体的 ...

  9. Shiro结合Spring boot开发权限管理系统

    前一篇文章说了,我从开始工作就想有一个属于自己的博客系统,当然了,我想的是多用户的博客,大家都可以发文章记笔记,我最初的想法就是这样. 博客系统搭建需要使用的技术: 1.基于Spring boot 2 ...

  10. window下搭建Python3.7+selenium3.1.1+pycharm环境

    1.安装Python3.7 1.1  下载 Python并安装 Python3.5 (勾选上 Add Python3.7 to PATH) 点击 Install Now,安装完成后将python路径加 ...