FreeRTOS 是一款开源的实时操作系统(RTOS)内核,专为微控制器和小型微处理器设计。它提供任务调度、任务间通信、定时器、内存管理等核心功能,是嵌入式领域最广泛使用的 RTOS 之一。

学习路径

按顺序阅读,每篇都建立在前一篇的基础上:

序号笔记核心内容前置知识
01基础与文件结构文件组织、基本数据类型、整体架构
02任务管理与调度任务创建/删除、优先级、调度算法、状态转换、空闲任务01
03队列队列机制、读写阻塞、FIFO/LIFO、邮箱模式02
04中断处理ISR 专用 API、延迟中断处理、二值信号量同步、中断优先级03
05软件定时器One-shot/Auto-reload、Daemon Task、回调 vs 中断04
06资源管理临界区、挂起调度器、互斥锁、优先级反转、死锁、守门员任务04
07事件组事件标志、WaitBits/SetBits、多任务同步04
08任务通知轻量级直连通知、eNotifyAction、完整版 vs 简化版 API07
09内存管理heap_1 ~ heap_5 五种内存分配方案对比02
10FreeRTOSConfig 配置常用配置宏详解、裁剪内核功能01-09

核心概念一览

┌─────────────────────────────────────────────────────────┐
│                    FreeRTOS 内核                         │
│                                                         │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌────────┐  │
│  │ 任务管理  │  │  调度器   │  │  内存管理  │  │ 定时器  │  │
│  └──────────┘  └──────────┘  └──────────┘  └────────┘  │
│                                                         │
│  ┌─────────────────────────────────────────────────┐    │
│  │              任务间通信(IPC)                     │    │
│  │  队列 / 信号量 / 互斥锁 / 事件组 / 任务通知       │    │
│  └─────────────────────────────────────────────────┘    │
│                                                         │
│  ┌──────────┐  ┌──────────┐                            │
│  │ 中断管理  │  │ 资源管理  │                            │
│  └──────────┘  └──────────┘                            │
└─────────────────────────────────────────────────────────┘

任务间通信方式选择

方式适用场景速度能否多对多
队列传递数据(复制语义)多写多读
二值信号量中断→任务同步、互斥访问一对一
计数信号量资源计数、多事件计数多对多
互斥锁(Mutex)资源互斥访问(带优先级继承)多对一
事件组等待多个条件同时满足多对多
任务通知直接通知单个任务(最快)极快一对一
队列集一个任务等多个队列(不推荐)多对一

选择原则

能用任务通知就不用其他方式(最快、最省内存);需要传数据用队列;需要互斥访问用互斥锁;需要等多个条件用事件组。


相关:返回学习笔记