利用STM32CubeMX和keil模拟器,3天入门FreeRTOS(2.3) —— RTOS基础概念

发布时间:2024年01月24日

前言

(1)FreeRTOS是我一天过完的,由此回忆并且记录一下。个人认为,如果只是入门,利用STM32CubeMX是一个非常好的选择。学习完本系列课程之后,再去学习网上的一些其他课程也许会简单很多。
(2)本系列课程是使用的keil软件仿真平台,所以对于没有开发板的同学也可也进行学习。
(3)叠甲,再次强调,本系列课程仅仅用于入门。学习完之后建议还要再去寻找其他课程加深理解。
(4)本系列博客对应代码仓库:
(5)此篇博客主要是讲述一些概念知识,无实际代码。

单核处理器如何实现多任务管理

(1)对于单核处理器,其实并不能真正意义上执行多个任务。它本质上是对多个任务轮流执行。
(2)这部分内容,我感觉看代码来的更实在,用人类语言表达总感觉会有歧义。代码在嵌入式裸机设计思想——时间片轮裸机开发架构+状态机+定时器调度机制时间片轮裸机开发架构部分。

在这里插入图片描述

抢占式和协作式的区别

(1)在实时操作系统(RTOS)中,任务调度的方式通常可以分为两种主要类型:抢占式(Preemptive)和协作式(Cooperative)。

  1. 抢占式调度(Preemptive Scheduling):

    • 在抢占式调度中,操作系统具有高优先级任务可以在任何时刻中断低优先级任务并立即执行。
    • 这种调度方式允许系统响应紧急事件,而不必等待当前任务执行完成。
    • 抢占式调度通常需要硬件支持,例如中断控制器,以确保在任务切换时不会丢失系统状态。
  2. 协作式调度(Cooperative Scheduling):

    • 在协作式调度中,任务必须显式地让出CPU控制权,即任务必须在完成执行后主动将控制权交还给调度器。
    • 这种调度方式更依赖于任务之间的合作,而不是由操作系统强制实施。
    • 协作式调度通常不需要硬件支持,但它可能导致任务长时间占用CPU,从而影响系统的实时性。

(2)大多数实时操作系统通常采用抢占式调度,因为它更适用于实时系统的要求,能够更灵活地响应紧急事件,同时提供更好的系统可靠性和稳定性。抢占式调度使得高优先级任务能够及时中断低优先级任务,确保系统能够满足实时性要求。FreeRTOS就是抢占式调度。
(3)然而,协作式调度在一些资源受限的环境中可能更为简单和有效,因为它不需要硬件中断的支持,并且任务之间的协作更加直接。在一些特殊的嵌入式系统中,可能会选择协作式调度来简化实现和减小系统的开销。

任务优先级

(1)FreeRTOS作为抢占式RTOS,优先级越高的任务会被抢占执行,那么我们就需要知道如何判断一个任务的优先级。
(2)FreeRTOS是一款很奇葩的RTOS,因为一般来说,数字越小任务优先级越大。FreeRTOS恰恰相反,它是数字越大,任务优先级越大。因此,这里各位一定一定要记清楚,否则后面学习其他RTOS的时候很容易搞混。
(3)在STM32CubeMX中如下方法看最大任务优先级,我们分配任务的优先级的时候,不能够超出最大任务优先级

在这里插入图片描述

(4)在FreeRTOSConfig.h文件中configMAX_PRIORITIES宏可以看最大优先级。

在这里插入图片描述

参考

(1)C站:嵌入式裸机设计思想——时间片轮裸机开发架构+状态机+定时器调度机制

文章来源:https://blog.csdn.net/qq_63922192/article/details/134565859
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。