FreeRTOS:Real Time Operating System实时操作系统

通过任务调度实现多任务创建,达成处理多任务的操作,FreeRTOS主要使用抢占式的调度方式,指高优先级的任务可以比低优先级的任务优先执行,调度器先选择最高优先级的任务,其他任务会进入挂起态,直到调度器下一次选择该任务。还有一种时间片轮转的调度策略,对于同一优先级的任务,按照时间片进行调度。

比较-单片机裸机:一次只能处理一个任务。由于目前芯片在裸机时的处理频率大多处于资源浪费的情况,移植操作系统可充分利用资源。

任务状态:就绪态/运行态/阻塞态/挂起态

FreeRTOS任务间通信:信号量、事件组、消息队列

信号量

 二值信号量:

信号量只有0和1两个值,可用于多任务间通信、任务延时以及防止多任务间同时访问共享资源等,可实现互斥锁功能。

默认初始信号量的值为1,通过PV(申请/释放)操作,实现以上功能。

计数信号量:

 信号量的数值大于1的队列,任务确认队列是否为空,不为空即可用于事件计数和资源管理。

事件组

保存事件标志的组。创建事件组,在任务中调用借口等待事件的产生,通过设置和清楚事件标志位,多个任务间可以同步和通信。

消息队列

任务通过消息队列传递消息,每个消息都有单独的ID,一个任务向队列发送消息,另一个任务从队列中接收消息,可以实现任务间的消息交换。

软件定时器

创建软件定时器任务,设置回调函数用于软件定时器到时间后需要执行的动作,可以实现软件定时的功能,需要注意定时器优先级,如果优先级比正常任务低会导致定时器无法正常使用。

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐