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供应商可能会提供具有扩展功能的实现。

典型的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 简介的更多相关文章
- CMSIS RTOS -- embOS segger
#ifndef __CMSIS_OS_H__ #define __CMSIS_OS_H__ #include <stdint.h> #include <stddef.h> #i ...
- CMSIS的简介
Cortex微控制器软件接口标准(Cortex Microcontroller Software Interface Standard)是ARM和一些编译器厂家以及半导体厂家共同遵循的一套标准,是由A ...
- RTOS之CMSIS-RTOS
CMSIS-RTOS 是实时操作系统的通用 API.它提供了标准化的编程接口,它只是封装了RTX/embos,以后还可能封装freeRTOS,uc/os等等第三方OS,CMSIS RTOS是ARM现在 ...
- 聊聊CMSIS-RTOS是什么东东
起因:发布自己翻译用的CMSIS_RTOS_Tutorial后,陆续收到网友关于“CMSIS-RTOS是干么的?”之类的问题,再次统一回复. 众所周知,实时操作系统是嵌入式领域的基石.而可选的嵌入式操 ...
- STM32F429i-DISCO FreeRTOS keil STM32CubeMX
目标: 在STM32F429 Disco开发板上用FreeRTOS双线程点亮双闪led. 准备: 0. STM32F429i-DISCO 1. keil ARMMDK 5.13 2. STM32Cub ...
- CMSIS_RTOS_Tutorial自译中文版
一.序言 本资料是Trevor Martin编写的<The Designers Guide to the Cortex-M Processor Family>的摘要,并得到Elsevier ...
- CMSIS-RTOS 时间管理之时间延迟Time Delay
时间管理 Time Management 此RTOS除了可以把你的应用代码作为线程运行,它还可以提供一些时间服务功能,使用这些功能你就可以访问RTOS的一些系统调用. 时间延迟Time Delay 在 ...
- ARM官方《CMSIS-RTOS教程》之线程Threads
创建线程Creating Threads 一旦RTOS开始运行,就会有很多系统调用来管理和控制活跃的线程.默认情况下,main()函数自动被创建为第一个可运行的线程.在第一个例子里我们使用main() ...
- CMSIS-RTOS的使用
CMSIS-RTOS实现通常作为库提供.要将RTOS功能添加到现有的基于CMSIS的应用程序,需要添加RTOS库(通常是配置文件).RTOS库的可用功能在头文件cmsis_os.h中定义,该文件特定于 ...
- 【RL-TCPnet网络教程】第4章 RL-TCPnet网络协议栈简介
第4章 RL-TCPnet网络协议栈简介 本章节介绍RL-TCPnet网络协议栈,让大家对 RL-TCPnet有一个整体的了解,RL-TCPnet是一款小型网络协议栈,适用于 ARM 内 ...
随机推荐
- php正则检测字符串由单一字符组成
$str = 'aaa' $firstChar = substr($str , 0, 1); $pattern = "/^[$firstChar]+$/"; $ret = preg ...
- pgpool-II在故障切换过程中是如何选举新主节点的
在pgpool的源代码中有有一个pgpool_main.c文件,在该文件中有一个pgpool的主函数pgpoolmain控制着pgpool的运行及相关操作. libpcp_ext.h文件中定义了pgp ...
- Python读取Matlab的.mat文件
参考网站: https://blog.csdn.net/rumswell/article/details/8545087 数据: R 22*22 double 部分截图如下: 使用sicpy.io即可 ...
- Unknown column 't_user.id' in 'where clause'(通过字段名删除不了数据)
创建员工信息表t_user CREATE TABLE t_user( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(20) , passwor ...
- 正则表达式中的/i
i = insensitive means case-insensitive 表示大小写不敏感
- NodeJS学习笔记 (1)资源压缩-zlib(ok)
原文: https://github.com/chyingp/nodejs-learning-guide/blob/master/README.md 自己的跟进学习: 概览 做过web性能优化的同学, ...
- C语言Huffman压缩和解压
符号表结构体: struct node { // 字符串形式存储的Huffman编码 char code[MAX_CODE_LENGTH]; // 这个字符在文件中出现的次数 long count; ...
- 2015 Multi-University Training Contest 3 hdu 5323 Solve this interesting problem
Solve this interesting problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ...
- 成都磨子桥技工学校 / 2016届练习区 0003:jubeeeeeat
0003:jubeeeeeat 总时间限制: 1000ms 内存限制: 256000kB 描述 众所周知,LZF很喜欢打一个叫Jubeat的游戏.这是个音乐游戏,游戏界面是4×4的方阵,会根据音乐 ...
- google在线測试练习题3
Problem The Latin alphabet contains 26 characters and telephones only have ten digits on the keypad. ...