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. 马云谈AI:未来10-15年传统制造业的痛苦将远超今天的想象

    马云谈AI:未来10-15年传统制造业的痛苦将远超今天的想象 “未来10到15年,传统制造业面临的痛苦将会远远超过今天的想象,企业如果不能从规模化.标准化向个性化和智慧化转型,将很难生存下去.” 9月 ...

  2. wackoPicko 渗透平台的安装

    2016-05-17 wackoPicko 的介绍及下载地址        https://github.com/adamdoupe/WackoPicko#from=codefrom.com 首先我们 ...

  3. 华为P30系列新增“无线投屏”功能

    3月26日法国巴黎全球首发之后,4月11日华为又移师上海举办2019春季新品发布盛典,新一代拍照旗舰P30.P30 Pro正式登陆国内. 除了感光徕卡四摄带来的“彩色夜视仪“+“望远镜”的震撼拍照效果 ...

  4. LINUX命令LS -AL 解析

    LINUX命令LS -AL 解析 linux命令ls -al 解析 ls是“list”的意思,与早期dos的命令dir功能类似.参数-al则表示列出所有的文件,包括隐藏文件,就是文件前面第一个字符为. ...

  5. 如何启动和关闭MySQL?(四)

    分为: 图形化 命令行 方法一:在“计算机”的图标上右键,然后选择“管理”,双击“服务和应用程序”,然后选择“服务”,找到“MySQL”这个服务,然后点击“右键”,就可以进行“停止”和“重新启动”的操 ...

  6. Hadoop框架基础(一)

    ** Hadoop框架基础(一)     学习一个新的东西,传统而言呢,总喜欢漫无目的的扯来扯去,比如扯扯发展史,扯扯作者是谁,而我认为这些东西对于刚开始接触,并以开发为目的学者是没有什么帮助的,反而 ...

  7. checkbox和文字不再同一水平线上

    为了演示效果,我故意将文字变为12px,将复选框变大,看到的效果就是下面的那样 然后,我们通过给复选框添加vertical-align:middle:让文字和复选框达到同一水平线的效果

  8. python ftp

    #fpt_server.py#__*__ encoding=utf-8 __*__ import socket ,os class MyClass(object): def __init__(self ...

  9. net实现ping的方法

    class ServicePinger { private static readonly ILog log = LogManager.GetLogger(typeof(ServicePinger)) ...

  10. js确认框confirm()用法实例详解

    先为大家介绍javascript确认框的三种使用方法,具体内容如下 第一种方法:挺好用的,确认以后才能打开下载地址页面.原理也比较清晰.主要用于删除单条信息确认. ? 1 2 3 4 5 6 7 8 ...