FreeRTOS基础篇(一)——介绍

前言:
   FreeRTOS 是目前全球最受欢迎的开源实时操作系统(RTOS)之一,在嵌入式系统领域具有广泛的影响力。

1 介绍

  RTOS即Real Time OS,也就是实时操作系统。实时操作系统又分为硬实时和软实时,硬实时不允许超时,软实时系统超时的结果每那么严格。
RTOS操作系统的核心内容在于实时内核。而FreeRTOS(Free Real-Time Operating System)是一款开源免费的RTOS,专为嵌入式系统和微控制器(MCU)设计。它以其轻量级、高可靠性、可移植性和免费开源(MIT 许可证)的特点,成为嵌入式开发领域的标杆之一。
  FreeRTOS 的影响力体现在其广泛的市场应用、强大的开源生态、持续的技术创新以及行业认可度上。随着物联网和嵌入式设备的快速发展,FreeRTOS 预计仍将在未来几年保持其核心地位,特别是在低功耗、实时性要求高的应用场景中。

  • FreeRTOS的核心特点:

    • 实时性(Real-Time):支持抢占式调度和时间片轮转,确保关键任务按时执行。
    • 轻量级:内核代码仅占用 6KB~12KB ROM,适用于资源受限的 MCU(如 ARM Cortex-M、ESP32、RISC-V)。
    • 可移植性:支持 40+ 种处理器架构,包括 ARM、x86、MIPS、RISC-V 等。
    • 开源免费(MIT 许可证):可自由商用,无需支付版权费用。
    • 模块化设计:提供任务管理、队列、信号量、软件定时器等基本组件,并可扩展文件系统(FatFS)、TCP/IP 协议栈(lwIP)等。
  • FreeRTOS 的核心功能:

    • 任务管理 支持多任务(线程)创建、删除、优先级调度。
    • 内存管理 提供动态内存分配(heap_1~heap_5 多种策略)。
    • 任务通信 队列(Queue)、信号量(Semaphore)、互斥锁(Mutex)、事件组(Event Group)。
    • 软件定时器 支持单次/周期性定时任务。
    • 低功耗支持 提供 Tickless 模式,减少 CPU 空闲功耗。
    • 中断管理 可嵌套中断,支持中断安全 API(FromISR)。

  由c和汇编代码编写,其中汇编是嵌入到c中的,因此FreeRTOS由于本身是由c编写的,执行效率高,可以很好的移植到嵌入式的c/c++项目中。

2 功能框架

FunFrm.png

  FreeRTOS分为:任务管理、队列管理、内存管理、中断管理、资源管理几部分。难点在任务管理和中断管理。

  • 资源管理:需要解决资源抢占问题。
  • 中断管理:用汇编对寄存器直接操作。
  • 内存管理:有malloc、calloc、free操作,由操作系统管理更为安全合理。
  • 任务管理:多任务调度,优先级处理,任务就是进程。

3 任务

3.1 任务管理

  FreeRTOS总是在处理最高优先级任务,任务优先级一共32级,0~31级。数字越大优先级越高。。

  • 任务数量没有限制。
  • 同优先级可以创建多个任务。
  • 任务根据优先级可以抢占。
  • 每个任务都有堆栈。

Tsk.png

3.2 任务状态

TskSta.png

  任务四种状态。当任务A被更高优先级的任务B抢占后,任务A的任务状态会从运行状态(Running)转变为就绪状态(Ready),等待再次获得CPU资源。如果任务A在等待某个事件(如信号量、队列等),它可能会进入阻塞状态(Blocked)。如果任务A被显式挂起,它会进入挂起状态(Suspended)。

4 中断

4.1 中断管理