目录
一、什么是FreeRTOS?
二、为什么选择FreeRTOS?
三、FreeRTOS的特点
四、FreeRTOS资料与源码下载
五、FreeRTOS源码文件介绍
Free即免费的,RTOS的全称是Real time operating system,中文就是实时操作系统。注意:RTOS不是指某一个确定的系统,而是指一类操作系统。比如:uc/OS,FreeRTOS,RTX,RT-Thread等这些都是RTOS类操作系统。
操作系统允许多个任务同时运行,这个叫做多任务。实际上,一个处理器核心在某一时刻只能运行一个任务。操作系统中任务调度器的责任就是决定在某一时刻究竟运行的哪个任务。任务调度在各个任务之间的切换非常快,就给人们造成了同一时刻有多个任务同时运行的错觉。
某些操作系统给每个任务分配同样的运行时间,时间到了就轮到下一个任务,比如Unix操作系统,FreeRTOS操作系统则是由用户给每个任务分配一个任务优先级,任务调度器就可以根据此优先级来决定下一刻应该运行哪个任务。
FreeRTOS是RTOS系统中的一种,FreeRTOS十分的小巧,可以在资源有限的微控器中使用,当然FreeRTOS不仅仅局限于在微控器中使用,但从文件数中来说FreeRTOS要比uc/OS小的多。
RTOS类系统有很多,比如说UC/OS,资料很多,尤其是中文资料,那为什么要选择FreeRTOS呢?
2.1 FreeRTOS是免费的,学习RTOS操作系统的话,UC/OS是首先,但是做产品的话,免费的FreeRTOS操作系统就是个不错的选择。
2.2 很多半导体厂商产品的SDK(Software Development Kit)软件开发工具包,就使用FreeRTOS作为其操作系统,尤其是WIFI、蓝牙这些带有协议栈的芯片或模块。
2.3 简单,因为FreeRTOS的文件数量很少。
FreeRTOS是一个可裁剪的小型的RTOS系统,其特点包括:
①FreeRTOS的内核支持抢占式,合作式和时间片调度。
②提供了一个用于低功耗的Tickless模式。
③系统的组件在创建时可以选择动态或者静态的RAM,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等。基本可以满足较小系统的应用。
④FreeRTOS-MPU支持Core-M系列中的MPU单元,如STM32F429。
⑤FreeRTOS系统简单、小巧、易用,通常情况下内核占用4k-9k字节的空间。
⑥高移植性,代码主要用c语言编写。
⑦高效的软件定时器。
⑧强大的跟踪执行功能。
⑨堆栈溢出检测功能。
⑩任务数量不限、任务优先级不限。
找资料最好在官网下载,FreeRTOS的官网是:www.freertos.org。
①进入FreeRTOS官网首页,就会看到download下载链接
②进入后下载“FreeRTOS 202112.00”文件,下载完成后解压到指定目录。
由于该网址是国外网站,建议下载,否则加载的非常慢。
打开源码文件夹,重点看上面的两个文件夹:FreeRTOS和FreeRTOS-Plus,这两个文件里面的文件就是FreeRTOS的源码。
①FreeRTOS文件夹
打开FreeRTOS文件夹,可以看到里面有四个文件夹:
Demo文件夹里面就是FreeRTOS针对不同的MCU提供的相关例程,进行程序移植的时候可以参考这些例程。
License文件夹里面的就是相关许可信息。
Source文件里面就是FreeRTOS的源代码文件,include文件夹是一些头文件,移植的时候也是需要的,下面这些c文件就是FreeRTOS的源代码文件,移植的时候也是需要的。
重点来看一下portable这个文件夹,FreeRTOS是个系统,归根结底是软件的东西,它是怎么和硬件联系在一起的呢?那么中间就必须有一个桥梁,portable文件夹里面的东西就是FreeRTOS系统和具体的硬件之间的连接桥梁。不同的编译环境,不同的MCU,其桥梁是不同的,打开portable文件夹,如下图所示:
MemMang这个文件夹就是跟内存管理相关的,我们移植的时候是必须的。Keil文件夹里面的东西也是必须的,但是我们打开keil文件夹以后里面只有一个文件:See-also-the-AVDS-directory.txt,意思是参考RVDS文件夹里面的东西!
RVDS文件夹针对不同架构的MCU做了详细的分类,GD32F103C8T6就参考CORTEX_STM32F103_Keil,打开CORTEX_STM32F103_Keil文件夹,里面有两个文件就是我们移植的时候所需要的。