当前位置: 首页 > news >正文

第一章 FreeRTOS简介

        从本章开始学习FreeRTOS, FreeRTOS 是一个 RTOS 类的嵌入式实时操作系统。 在学习和使用 FreeRTOS 之前, 需要先了解什么是 FreeRTOS? 为什么选择学习FreeRTOS? 以及FreeRTOS 的特点。
本章分为如下几部分:
1.1 初始 FreeRTOS
1.2 FreeRTOS资料说明

1.1 初识 FreeRTOS

1.1.1 什么是 FreeRTOS?

        首先看一下 FreeRTOS 的名字, 可以分为两部分:“Free” 和“RTOS”,“Free” 就是免费的、自由的、 不受约束的意思, “RTOS” 全称是 Real Time Operating System, 中文名是实时操作系统, 要注意的是,RTOS并不是值某一特定的操作系统, 而是指一类操作系统, 例如,µC/OS,FreeRTOS,RTX,RT-Thread 等这些都是 RTOS 类的操作系统。 因此,从FreeRTOS 的名字中就能看出, FreeROTS是一款免费的实时操作系统。
本次学习的FreeRTOS 是众多 RTOS 类操作系统中的一种,FreeRTOS是一款​​免费开源的实时操作系统内核​​,专为资源受限的嵌入式微控制器设计。它的核心价值在于,通过​​多任务管理​​,让一个处理器能够“同时”处理多个任务,并确保关键任务能够在其截止时间前得到执行,从而满足嵌入式应用的实时性需求。
为了快速抓住核心,下表概括了FreeRTOS的主要特征:

核心特征

说明

​​硬实时/软实时​​

采用​​抢占式调度​​,可满足严格时限(硬实时)或允许偶尔超时(软实时)的应用场景。

​​多任务并发​​

将复杂应用分解为多个独立​​任务​​,由调度器管理CPU时间,简化程序结构。

​​丰富的同步机制​​

提供​​队列、信号量、互斥量、事件组​​等,安全高效地实现任务间通信与同步。

​​高度可裁剪​​

内核轻量(最小可至约6KB ROM),功能模块可配置,适应不同资源约束的硬件平台。

​​多任务调度​​

支持基于优先级的​​抢占式调度​​(高优先级任务立即运行)和​​时间片轮转调度​​(同优先级任务轮流运行)。

​​强大的可移植性​​

使用C语言编写,已移植支持40多种处理器架构,包括ARM Cortex-M、RISC-V、ESP32等。

图 1.1.1.1 FreeRTOS的主要特征

1.1.2 为什么选择 FreeRTOS?

        FreeRTOS 操作系统是一个功能强大的 RTOS 操作系统, 并且能够根据需求进行功能裁剪,以满足各种环境的要求, FreeRTOS 的特点如下图所示:

图 1.1.2.1 FreeRTOS 特点

1.1.3 为什么要学习FreeRTOS?

        对于ESP32开发者来说,学习FreeRTOS不是一道选择题,而是一门必修课。这主要是因为ESP32的官方开发框架ESP-IDF构建在FreeRTOS之上。为了让能快速把握全貌,下面这个表格总结了学习FreeRTOS为ESP32开发带来的核心价值。

核心价值

说明

​​开发模式升级​​

从“裸机”的轮询架构升级为多任务并发的现代编程模型,使程序结构更清晰。

​​硬件潜力释放​​

充分利用ESP32的双核处理器资源,实现真正的并行处理,提升系统效率和响应能力。

​​项目基石​​

ESP-IDF及其所有组件和示例都基于FreeRTOS,要使用官方资源就必须掌握它。

​​资源管理专业化​​

提供队列、信号量、互斥锁等机制,能优雅地解决多任务环境下的资源共享和同步问题。

表1.1.3.1 学习FreeRTOS为ESP32开发带来的核心价值说明

1.1.3.1 告别“裸机”限制

        在传统的“裸机”编程中,所有功能通常都塞在一个大的 while(1)循环里。这会导致一个严重问题:如果某个任务(比如读取传感器)需要等待,整个系统都会被阻塞,其他任务(如更新显示屏)也无法执行。
FreeRTOS通过​​多任务并发​​解决这个问题。可以为每个独立的功能(如网络连接、传感器采集、用户界面更新)创建一个独立的​​任务​​。每个任务都有自己的运行上下文,操作系统内核(调度器)负责在多个任务之间快速切换,让它们看起来像是在同时运行。这带来了几个显著好处:

  • 模块化与团队协作​​:每个功能模块可以独立开发和测试,代码更易维护和复用;
  • ​​实时性保证​​:可以为不同任务设置​​优先级​​。例如,处理紧急指令的任务可以设为高优先级,确保它能立即抢占低优先级任务(如日志记录)的CPU时间,从而满足实时性要求。
1.1.3.2 发挥双核威力

        ESP32是一款功能强大的​​双核​​处理器。FreeRTOS的SMP(对称多处理)支持允许将任务精确地分配到指定的CPU核心上运行。
通过使用 xTaskCreatePinnedToCore()这个API,可以实现精细的任务分配。例如,将需要快速响应的Wi-Fi/蓝牙任务绑定到核心0,将复杂的后台数据处理任务绑定到核心1。这样就能真正发挥ESP32的硬件潜力,大幅提升整体处理能力,避免单个核心忙死而另一个核心闲置的情况。

1.1.3.3 使用官方生态的前提

        乐鑫为ESP32提供的​​ESP-IDF​​开发框架,其内核就是FreeRTOS。这意味着:

  • ​​官方示例基于FreeRTOS​​:几乎所有ESP-IDF的示例代码都是通过创建FreeRTOS任务来组织的;
  • ​​系统组件依赖FreeRTOS​​:Wi-Fi、蓝牙、文件系统等高级功能,其底层驱动和事件处理都依赖于FreeRTOS的任务调度和通信机制。

        因此,不学习FreeRTOS,就很难深入理解和灵活运用ESP-IDF提供的强大功能。

1.1.3.4 优雅处理多任务协作

        当多个任务需要访问同一资源(如全局变量、串口)时,如果没有保护机制,会导致数据混乱。FreeRTOS提供了一整套成熟的​​同步与互斥​​机制来优雅地解决这些问题:

  • 队列​​:任务间安全传递数据的管道,实现解耦;
  • ​​信号量和互斥锁​​:互斥锁带有优先级继承机制,能有效防止优先级反转问题,安全地保护共享资源;
  • ​​事件组​​:允许任务等待多个事件中的一件或多件发生后才继续执行。
1.1.3.5 如何开始学习
  • 搭建环境​​:按照ESP-IDF官方文档安装开发环境;
  • ​​理解核心概念​​:重点理解​​任务​​、​​状态​​(运行、就绪、阻塞、挂起)、优先级调度和上述的通信机制;
  • ​​从示例入手​​:从最简单的“hello_world”任务创建示例开始,编译、烧录、观察串口日志,体会任务的创建、延时和删除;
  • 逐步实践​​:尝试创建多个不同优先级的任务,观察调度行为;然后使用队列在任务间传递数据;最后在共享资源访问中引入互斥锁。

1.2 FreeRTOS资料说明

        获取FreeRTOS最权威、最实时的资料,FreeRTOS官网是最好的地方,FreeRTOS的官网网址是https://www.freertos.org/,打开后如下图所示:

图 1.2.1.1 FreeRTOS 官网

        FreeRTOS 的官网是全英文的,打开后分别是“Download FreeRTOS” 和“FreeRTOS Documentation”, 通过“Download FreeRTOS” 就能够下载到最新发布的 FreeRTOS, 而右侧的“FreeRTOS Documentation” 就是在 FreeRTOS 官网查看在线资料的入口,点击进入“FreeRTOS Documentation” 可以看到FreeRTOS相关介绍。

图 1.2.1.2 FreeRTOS 官网查看在线资料网页

        FreeRTOS 官方对相关相关API有详细说明,并且提供了两份 PDF 文档和一份文档配套的源代码, 其中一份PDF是FreeRTOS的教程指南, 另一份PDF是FreeRTOS的参考手。后续会参开着两份手册进行编程, 如下图所示:

图 1.2.1.3 FreeRTOS 编程参考书籍

http://www.dtcms.com/a/507760.html

相关文章:

  • 【任务调度】DolphinScheduler钉钉告警消息格式修改
  • 医院的网站关键词定位一般是什么潜江招聘资讯网
  • 网站制作软件培训网络推广培训心得
  • YOLOv4:目标检测更亲民更精准
  • 解决Jmeter警告
  • 构建企业数字化办公核心:安全高效的内网im私有化协同平台
  • 天津建设网站的公司哪家好wordpress+手机站目录
  • 19.9 ChatPPT v2.0语音识别实战:从噪音数据到92%准确率的企业级方案
  • 看风格的网站seo是什么意思 职业
  • Tomcat核心原理与运维实战指南
  • MyBatis-Plus的分页插件
  • S4双向链表
  • h5模板是什么网站开发好什么进行界面的优化
  • 淘宝做短视频网站自学网页设计的网站
  • 【含文档+PPT+源码】基于SpringBoot+Vue的校园电子设备租赁系统
  • 渗透测试快速启动工具箱
  • 在 go-zero 中优雅使用 Google Wire 实现依赖注入
  • Springboot3.5.6 + jdk21使用第三方xjar加密
  • [go 面试] 构建高效微服务通信:选择合适的通信方式
  • 推荐营销型网站建设做电影资源网站手机版
  • 厦门网站设计排行网站建设培训费用多少
  • 哪个网站做图文素材多项目投资网
  • Python3编程之面向对象
  • 【AI4S】从直觉到人工智能:药物发现中的小分子表征演变
  • docker compose 2.33版本安装
  • 在线解决window和linux对linux远程问题
  • 公司企业做网站好做吗深圳市网站备案
  • rabbitmq的多交换机(扇出为例)监听实现
  • 做网站那个好做淘宝联盟网站要多少钱
  • 4A 架构(业务架构、数据架构、应用架构、技术架构)在智慧电网中的实战:从边缘 AI 到云边协同的代码级拆解