??首先看一下 FreeRTOS 的名字,可以分为两部分:“Free”和“RTOS”,“Free”就是免费的、自由的、不受约束的意思,“RTOS”全称是 Real Time Operating System,中文名就是实时操作系统,要注意的是,RTOS 并不是值某一特定的操作系统,而是指一类操作系统,例如,μC/OS,FreeRTOS,RTX,RT-Thread 等这些都是 RTOS 类的操作系统。因此,从 FreeRTOS 的名字中就能看出,FreeROTS 是一款免费的实时操作系统。
??操作系统是允许多个任务“同时运行”的,操作系统的这个特性被称为多任务。然而实际上,一个 CPU 核心在某一时刻只能运行一个任务,而操作系统中任务调度器的责任就是决定在某一时刻 CPU 究竟要运行哪一个任务,任务调度器使得 CPU 在各个任务之间来回切换并处理任务,由于切换处理任务的速度非常快,因此就给人造成了一种同一时刻有多个任务同时运行的错觉。
??FreeRTOS 操作系统是一个功能强大的 RTOS 操作系统,并且能够根据需求进行功能裁剪,以满足各种环境的要求,FreeRTOS 的特点如下图所示:
??磨刀不误砍柴工,学习一个东西第一个会的是找资料,找资料最好的就是官网:https://www.freertos.org/。
??上面有内核的学习,这边我们先下载,其中LTS版本没有库例程。下载解压后得到的文件,各子文件和子文件的的描述如下表所示:
名称 | 描述 |
---|---|
FreeRTOS | FreeRTOS 内核 |
FreeRTOS-Plus | FreeRTOS 组件 |
tools | 工具 |
GitHub-FreeRTOS-Home | FreeRTOS 的 GitHub 仓库链接 |
Quick_Start_Guide | 快速入门指南官方文档链接 |
Upgrading-to-FreeRTOS-xxx | 升级到指定 FreeRTOS 版本官方文档链接 |
History.txt | FreeRTOS 历史更新记录 |
??打开FreeRTOS 子文件夹,就能够看到 FreeRTOS 内核的文件
名称 | 描述 |
---|---|
include | 内包含了 FreeRTOS 的头文件 |
portable | 内包含了 FreeRTOS 的移植文件 |
croutine.c | 协程相关文件 |
event_groups.c | 事件相关文件 |
list.c | 列表相关文件 |
queue.c | 队列相关文件 |
stream_buffer.c | 流式缓冲区相关文件 |
tasks.c | 任务相关文件 |
timers.c | 软件定时器相关文件 |
??本文以STM32F407标准库为例,讲解如何移植FreeRTOS,编译环境为MDK。首先需要准备一个标准库例程,本文使用的是正点原子点灯实验 0.0 。然后准备好FreeRTOS内核源码就行,本文使用的版本是FreeRTOSv9.0.0,可以直接从附件下载
??