freeRTOS小结——事件管理

本文总结了freeRTOS中的事件管理,包括消息、信号量和互斥信号量在任务间的同步和通信作用。重点阐述了消息的传输过程,如通过邮箱和消息队列进行任务通信,以及事件如何影响任务状态和触发任务切换。此外,还介绍了freeRTOS中消息队列的实现细节和存储策略。
摘要由CSDN通过智能技术生成

概述

事件(Event)用于任务之前的同步和通信。freeRTOS中包含的事件分为如下几类,

·           消息(Message),用于任务之前通信

·           信号量(Semaphore)和互斥信号量,用于任务之前的同步(控制多个任务对同一资源的访问)

本小节主要讨论消息,信号量和互斥信号量主要用于资源管理,将在后边讲到。

基于消息的任务间通信过程如下图所示,发送者任务将消息发送给邮箱(MailBox)或消息队列(Message Queue),邮箱或消息队列则将该消息转发给接收者任务,并更新接收者任务的状态(挂起 -> 就绪),并在接收者任务的优先级高于当前任务时触发任务切换。


其中,

·           消息对象(Message Object)用于承载消息内容和基本信息。

·           邮箱用于早期的RTOS,freeRTOS已经不再支持,但在其他的RTOS如ucos中存在,实际上,邮箱可以看做队列长度为1的消息队列。

·           消息队列实际上为基于链表实现的FIFO buffer,其每一个节点对应为一个消息对象。

·           一般而言,发送者总是将消息发送到消息队列的队尾,当然也支持将优先级特别高的消息插入到队首

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值