1、什么是FreeRTOS?
FreeRTOS 是 RTOS 系统的一种,FreeRTOS 十分的小巧,可以在资源有限的微控制器中运行,当然,FreeRTOS 不仅局限于在微控制器中使用。但从文件数量上来看 FreeRTOS 要比uC/OSII 和 uC/OSIII 小的多。
2、FreeRTOS特点
(1)FreeRTOS内核支持抢占式、合作式和时间片调度;
(2)能够提供一个低功耗的Tickless模式;
(3)已将在超过30种架构的芯片上进行移植;
(4)FreeRTOS-MPU支持Cortex-M系列中的MPU单元;
(5)支持实时任务和协程;
(6)任务与任务、任务与中断之间可以使用任务通知、消息队列、二值信号量、数值型信号量、递归互斥信号量和互斥信号量进行通信和同步;
(7)具有优先级继承特性和互斥信号量;
(8)具有堆栈溢出检测功能、任务数量不限、任务优先级不限。
3、辅助开发资料查找
(1)FreeRTOS官网
www.freertos.org
(2)参考资料
正点原子《FreeRTOS开发手册》
(3)FreeRTOS源码下载
在官网首页进行下载:
4、FreeRTOS源码结构分析
打开源码文件夹,可以看到有两个文件夹,4 个 HTML 格式的网页和一个 txt 文档,HTML 网页和 txt 文档就不用介绍了,看名字就知道是什么东西了,重点在于上面那两个文件夹:FreeRTOS 和 FreeRTOS-Plus,这两个文件夹里面的东西就是 FreeRTOS 的源码。
打开 FreeRTOS 文件夹,可以看到里面有三个文件夹:
Demo文件夹里面就是 FreeRTOS 针对不同的 MCU 提供的相关例程,其中就有 ST 的 F1、F4 和F7 的相关例程,这对于我们学习来说是非常友好的,我们在移植的时候就会参考这些例程。License 文件夹里面就是 相关的许可信息,要用 FreeRTOS 做产品的得仔细看看,尤其是要出口的产品。
Source 文件夹 里面就是 FreeRTOS 的源码文件,也是我们以后打交道的,可以看出,相比于 uC/OS来说 FreeRTOS 的文件非常少!include 文件夹是一些头文件,移植的时候是需要的,下面的这些.C 文件就是 FreeRTOS 的源码文件了,移植的时候肯定也是需要的。
MemMang 这个文件夹是跟内存管理相关的,我们移植的时候是必须的。
重点来看一下 portable这个文件夹,FreeRTOS 是个系统,归根结底就是个纯软件的东西,它是怎么和硬件联系在一起的呢?软件到硬件中间必须有一个桥梁,portable 文件夹里面的东西就是 FreeRTOS系统和具体的硬件之间的连接桥梁!不同的编译环境,不同的 MCU,其桥梁应该是不同的,打开 portable 文件夹,如下图所示: