记录CMSIS-RTOS各种通信机制

1)线程的状态

活跃态 (ACTIVE) 就绪态(READY)

运行态(RUNNING)

等待态(WAIT_...)

不活跃态(INACTIVE)

各个状态转换图如下:

                                    RTOSV2

                                RTOSV1

CMSIS-RTOS是抢占式(pre-emptive),就绪态处于高优先级会先运行,处于就绪态相同优先级的线程会使用时间片轮转调度器获取运行时间片

2、CMSIS-FreeRTOS定时器管理(Timer Management)学习

1)创建定时器

2)启动定时器

3)删除定时器

4)停止定时器

注意:定时器回调函数不是while循环

3、CMSIS-FreeRTOS内部线程通讯与资源共享(Inter-Thread Communication and Resource Saharing)学习

1)信号事件(Signal Events)

同步线程,触发可执行状态

2)消息队列(Message Queue)

fifo-like,从固定地址读取数据,实际的数据在线程之间传递(实际数据放到队列里发送出去),发送数据类型为整型或指针,发送之前可以申请格式化的内存块,官方给的Demo也支持类似邮箱队列操作

osMessagePut (osMessageQId queue_id, uint32_t info, uint32_t millisec),该函数buf参数是无符号整型变量,即可将buf地址值作为参数传递进来,该函数里调用了xQueueSend(queue_id, &info, ticks),即如果传递进来的是buf指针,则最终实际传输的也是指针,将我们要发送数据的buf指针放到队列里发送出去,如果编程传递进来的是实际数据的变量,则最终实际传输的数据就是我们要发送的数据放到队列里。故消息队列既有邮箱队列功能又有传输实际数据功能,因此CMSIS-RTOSV2取消了邮箱队列功能可能是这个原因。

3)内存池(Memory Pool)

4)邮箱队列(Mail Queue)

数据放在固定内存块,内存块指针在线程之间移动来传递数据(将内存块指针变量的值放到队列里发送出去),发送数据类型为一个memory block,发送之前需要申请格式化的内存块

osMailPut(osMailQId queue_id, void *mail),该函数buf参数为void指针,即可传递buf的指针,但函数里面调用的是xQueueSend(queue_id->handle, &mail, 0),即对buf指针再次取地址传递,该函数的作用是将&mail地址的数据copy到队列里发送出去,而&mail的地址是我们要发送的buf的数据地址,即将buf数据地址作为数据放到队列里,故邮箱队列传递的数据实际是指针。

5)互斥锁(Mutexes)

是信号量的特殊情况,一个线程只能访问一个共享资源同一时刻,

6)信号量(Semaphores)

相当于数值型信号量,多个线程可以访问多个资源同一时刻,递减计数器

优先级反转:当一个任务A的优先级高于任务B的优先级,则正常情况下会出现任务A一直运行,但实际出现了任务B一直运行,违反了实时操作系统(内核抢占式)处于就绪态的高优先级先运行的原则,称该现象叫做优先级反转

后续会根据理解接着补充...

CMSIS-RTOS》是一本PDF文档,本文将以300字回答有关此文档的问题。 《CMSIS-RTOS》是一本关于Cortex微控制器软件接口标准(CMSIS)中的实时操作系统(RTOS)的PDF文档。该文档详细介绍了CMSIS-RTOS的特性、结构、API和使用方法。 CMSIS-RTOS是一种用于嵌入式系统的实时操作系统,它提供了一套标准化的API和接口,用于编写和管理多任务、多线程和中断驱动的应用程序。该文档介绍了如何使用CMSIS-RTOS构建可靠和高效的嵌入式系统。 文档首先介绍了CMSIS-RTOS的基本概念,包括任务、线程、中断和事件。然后,它详细描述了每个概念的特性和用法,包括任务管理、内存管理、同步和互斥机制等。 此外,文档还介绍了CMSIS-RTOS的结构和组件,如内核、调度器和定时器。它说明了每个组件的功能和使用方法,以及它们之间的关系和依赖关系。 最后,文档提供了一些示例代码和实践指南,以帮助读者更好地理解和应用CMSIS-RTOS。它演示了如何创建、启动和管理任务,以及如何使用互斥锁和信号量进行任务间的数据共享和同步。 总而言之,《CMSIS-RTOS》是一本全面且实用的PDF文档,它为开发人员提供了使用CMSIS-RTOS构建嵌入式系统的详细指南和参考资料。无论是初学者还是有经验的开发人员,都能从中获得关于实时操作系统的深入了解和实际应用的指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值