01-实时操作系统基础.md 4.1 KB


tags: [source-summary] type: source source: "尚硅谷嵌入式技术之FreeRTOS实时操作系统 V1.0.3 — 操作系统介绍 + FreeRTOS简介" author: "尚硅谷研究院" date: 2026-07-17

created: 2026-07-17

实时操作系统基础

用生活理解:裸机开发像一个人做整桌菜——切菜、炒菜、看火全包,手忙脚乱;RTOS 像一个厨房团队,主厨只管炒菜,配菜工负责备料,每个人专注自己的任务,由店长(调度器)统一协调。

操作系统介绍

基本概念

裸机开发指在没有操作系统支持的情况下直接操作硬件,开发者需要亲自管理 CPU、内存和 I/O 资源。STM32 单片机的基础开发都属于裸机开发。

一个计算机系统分为三层:

  • 硬件:芯片、存储、I/O 设备,提供基础计算资源
  • 操作系统:介于硬件与应用之间的控制程序,负责资源分配与调度
  • 应用程序:通过 OS 提供的 API 获取资源完成任务

裸机 vs 操作系统

裸机开发的问题在于,所有逻辑都写在 main 函数的 while(1) 大循环中。当功能增多时,代码会变得难以维护——你要手动计算每个任务的执行时序,确保 LED 闪烁的同时还能响应按键、处理传感器数据。一旦需求变化,你可能需要重写整个循环结构。

操作系统则将应用拆分为多个独立任务,每个任务只管自己的逻辑。操作系统负责"什么时候该运行哪个任务",开发者不用再操心时序问题。

通用OS vs RTOS

通用操作系统(Linux、Windows、macOS)优先保障系统流畅运行,公平调度所有程序,但无法保证某个任务在确定时间内完成。它们追求的是"平均响应好",而不是"最坏情况有保证"。

实时操作系统(RTOS) 的核心是"任务必须在给定的截止时间(Deadline)内完成"。

安全气囊案例:汽车碰撞后,安全气囊必须在 30ms 内完全打开。即使车载 ECU 有强大的 CPU 和充足的内存,如果系统在执行其他复杂计算任务时耽搁了气囊的响应,就会造成严重事故。

实时性不是靠堆砌硬件性能来实现的,而是靠确定性的调度机制。RTOS 确保关键任务在任何情况下都能在规定时间内响应。

FreeRTOS 简介

基本概念

FreeRTOS 是市场占有率最高的嵌入式实时操作系统,由美国的 Richard Barry2003 年发布。2017 年被亚马逊收购,更名为 AWS FreeRTOS

采用 MIT 开源许可,每 170 秒就有一次下载。适用于微控制器和小型微处理器,突出可靠性和易用性

工作原理

FreeRTOS 作为一个小型 RTOS 内核,提供以下核心功能:

  • 任务调度:通过调度器管理多个任务,支持优先级抢占和时间片轮转
  • 任务通信与同步:队列、信号量、事件组等机制确保任务间数据安全传递
  • 内存管理:提供 heap_1 ~ heap_5 五种动态内存分配方案
  • 定时器与中断处理:软件定时器和可靠的中断响应
  • 高可移植性:支持多种芯片架构,移植只需替换 portable 层文件

核心函数速查表

FreeRTOS 基础 API 分类概览(本章仅作了解,后续章节详细展开):

类别 主要函数 用途
任务创建 xTaskCreate() 动态创建任务
任务删除 vTaskDelete() 删除指定任务
任务延时 vTaskDelay() 相对延时
任务挂起 vTaskSuspend() 挂起任务
任务恢复 vTaskResume() 恢复任务

常见问题与避坑

  • 不要把 RTOS 当成万能的:RTOS 解决的是任务调度问题,不解决算法效率问题。一个低效的算法在任何系统上都是低效的。
  • 裸机思维转换:从裸机转向 RTOS 时,不要试图在任务中手动控制时序——让调度器帮你做,用 vTaskDelay 代替 HAL_Delay
  • 优先级不是越高越好:优先级设计不当会导致低优先级任务"饿死"(无法获得 CPU 时间)。