FreeRTOS学习笔记 · 第一讲:RTOS的作用

笔记前言:

阅读本笔记需要有关于STM32的基础知识,需了解STM32 Cube MX如何配置你使用的芯片项目;需了解片上外设的作用;需掌握 C 语言语法知识,尤其是多线程编程、函数指针等方面。

为什么要使用RTOS

RTOS(Real Time Operating System,实时操作系统)。

在一个简单的嵌入式项目中,我们可能习惯于使用一个大的while(1)循环来处理所有事情(比如在main函数中)。但随着项目变得越来越复杂,这种方式会带来很多问题。

使用 FreeRTOS 的主要优势在于:

  • 简化复杂应用的设计: 通过将复杂的应用分解为多个独立的、更易于管理的任务,使代码结构更清晰,更易于维护。
  • 提高可靠性和可预测性: RTOS 提供的任务调度和同步机制,可以确保系统行为的可靠性和可预测性,这对于安全关键型应用至关重要。
  • 提升资源利用率: 当任务等待外部事件时,调度器会自动切换到其他可以运行的任务,从而更有效地利用 CPU 资源。
  • 裸机系统:初学时使用,功能要求不复杂时使用;
  • 使用RTOS:功能要求复杂,必须使用多任务,或对实时性要求高时使用。

使用RTOS并且将功能分解为多个任务,可以使程序功能模块化,程序结构更简单,便于维护和扩展,也便于团队协作开发,提高开发效率。

一些术语

实时性

实时性指任务的完成时间是确定的,如驾驶控制系统必须在一定时间内完成对驾驶员操作的响应。

FreeRTOS是一个实时操作系统,满足硬实时要求。

软实时要求 指虽然任务有一个截止时间,但是超过整个截止时间并不会使系统失效,不会造成严重后果,比如打开网页、敲击键盘等。

硬实时要求 指任务有一个截止时间,且超过整个截止时间可能会导致系统失效,如安全气囊弹出系统就是硬实时要求。

任务

操作系统的主要功能就是实现了多任务管理,FreeRTOS是一个支持多任务的实时操作系统,FreeRTOS将任务称为线程(thread),但我们还是使用常用的名词“任务(task)”。

一般的MCU都是单核的,处理器在任何时刻只能执行一个任务的代码。FreeRTOS的多任务功能是通过其内核中的任务调度器来实现的,FreeRTOS支持基于任务优先级的抢占式任务调度算法,因而能满足硬实时的要求。

移植

FreeRTOS少部分与硬件密切相关的源码需要针对不同架构的MCU进行一些改写,例如针对STM32系列单片机,就需要改写相应的代码,这个过程称为移植。移植好的一套FreeRTOS源码称为一个接口(port)。

STM32Cube固件包里包含移植好了的FreeRTOS源码,例如对于STM32F4系列,其STM32CubeF4中就包含针对STM32F4移植好了的FreeRTOS源码,在CubeMX中作为一个中间件使用。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注


目录