Advertisement

IoT下的RTOS开发——队列的进阶

阅读量:

队列的进阶

一、队列、消息队列

在程序开发中,队列这一概念对于程序员而言并不陌生,即便是在单片机开发过程中也常常会接触到。例如,在串口通信中,部分MCU为了提升效率而内置了FIFO功能。队列结构操作简便,在基于RTOS的物联网开发中尤为重要,常被称作消息队列。

在FreeRTOS系统中,所有通信与同步机制的实现均以队列为基础。其使用方式与创建任务类似,具有独立性,并作为RTOS中的核心组件之一存在。该机制具备以下几个显著特征:

  1. 数据缓冲:与普通队列的功能相同。

需特别注意溢出问题。在RTOS环境下,数据大小及队列深度(即元素数量)应当是预先设定好的。系统不允许插入超出设定范围的数据内容。例如,若创建时设定的队列容量为128字节、最多容纳3个数据项,则实际写入的数据若超过此限制,则可能引发hardfault或堆栈异常等问题。

  1. 多任务安全调用

关注系统的安全性问题。允许多个任务同时对同一个队列进行写操作,而系统本身负责确保这些操作的安全性。

  1. 阻塞机制

当读取到空队列或写入满载状态时,系统将进入阻塞模式,并可借此挂起相关任务。这一功能与消息队列的应用方式一致。

  1. 地址传输

对于需要传输较大体积数据的情况(如超过512或1024字节),并且此类传输较为频繁时,可以考虑通过传递地址的方式实现高效处理。FreeRTOS的相关头文件中已

全部评论 (0)

还没有任何评论哟~