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 像一个厨房团队,主厨只管炒菜,配菜工负责备料,每个人专注自己的任务,由店长(调度器)统一协调。

操作系统介绍

Basic concept

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

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

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

Bare metal vs OS development

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

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

General OS vs RTOS

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

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

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

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

FreeRTOS 简介

Basic concept

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

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

Working principle

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

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

Core API Reference Table

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

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

Common Issues & Pitfalls

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