摘要:本文介绍了嵌入式操作系统FreeRTOS的概念和基本知识,关于任务调度。

1 RTOS 和 FreeRTOS的概念

RTOS:实时操作系统(Real Time OS)

相对裸机的特点:功能划分(多个任务)、延时函数(调用时会让出CPU给别的任务)、抢占式(高优先级抢占低优先级)、任务堆栈

FreeRTOS:免费的嵌入式实时操作系统

特点:免费开源、可裁剪、简单移植性好、优先级不限、任务不限等

FreeRTOS学习路线:

  1. 基础知识:任务调度器,RTOS特性
  2. FreeRTOS内核:任务启动流程、中断管理、任务切换
  3. FreeRTOS个功能:列表、队列、信号量、内存管理等

2 FreeRTOS基础知识

2.1 任务调度简介

概念:调度器使用调度算法决定当前需要执行哪个任务

调度方式:

  1. 抢占式调度:优先级高的任务抢占优先级低的任务
  2. 时间片调度:针对优先级相同的任务,在每一次系统时钟节拍到时切换任务
  3. 协程式调度:当前任务一直执行,高优先级不会抢占

2.1.1 抢占式调度

  1. 高优先级任务优先执行,高优先级任务停止后低优先级任务才会执行
  2. 被抢占CPU的任务会进入就绪态
  3. 高优先级的任务进入阻塞态后,其他就绪态的任务可以执行

P.S. 进程的三态、五态、七态模型

2.1.2 时间片调度

同等优先级任务轮流享有相同的CPU时间(时间片,可设置),FreeRTOS中,一个时间片等于sysTick中断周期

运行过程中进入阻塞态后,直接切换至下一个任务

2.2 任务状态

运行态:正在执行的任务,STM32中同一时间仅有一个任务在运行态

就绪态:能够执行但是还未被执行的任务

阻塞态:因为延时或者等待外部事件发生,无法立刻执行

挂起态:类似暂停,调用函数进入挂起态,调用解挂函数才能进入就绪态

转换图:

image-20250508001229996

除了运行态,其他三种状态都有对应的任务状态列表

就绪列表:pxReadyTaskList[x],x代表优先级数值

阻塞列表:pxDelayedTaskList

挂起列表:xSuspendTaskList

调度器总是在所有处于就绪列表的任务中,选择最高优先级的任务执行



本站由 kisekino yama 使用 Stellar 1.29.1主题创建。

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0许可协议,转载请注明出处。