目录
前言
一、简述
二、开源网址
三、原理及功能特性
1.原理
2.功能
3.特点
4.优缺点
四、参考书籍
五、实现方式
总结
前言
FreeRTOS是一个免费的、开源的实时操作系统,专为微控制器和嵌入式系统设计,它以其轻量级、高效、易于移植和强大的功能而闻名,成为许多嵌入式开发者的首选。FreeRTOS操作系统支持多种不同架构的不同型号的处理器,比如STM32系列的 F1、F4、F7 和H7等都可以移植 FreeRTOS,同时ST公司也在其STM32CubeMX生态系统中加入了对FreeRTOS操作系统的支持,这极大的方便了我们学习和使用FreeRTOS操作系统。
一、简述
Free Real-Time Operating System(免费的实时操作系统,简写FreeRTOS)是一个免费、开源的、可裁剪的、抢占式实时多任务内核,具有高度可移植性,适用于资源有限的微控制器等环境。FreeRTOS诞生于2003年,由Richard Barry发布初版,并由Real Time Engineers Ltd进行开发和维护。2017年,亚马逊(Amazon Web Services, AWS)收购了FreeRTOS,并推出了增强的版本Amazon FreeRTOS,集成了更多的联网和安全功能。FreeRTOS_百度百科 (baidu.com)
由于FreeRTOS需占用一定的系统资源(尤其是RAM资源),只有μC/OS-II、embOS、salvo、FreeRTOS等少数实时操作系统能在小RAM单片机上运行。相对μC/OS-II、embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行。在嵌入式领域中,嵌入式实时操作系统正得到越来越广泛的应用。采用嵌入式实时操作系统(RTOS)可以更合理、更有效地利用CPU的资源,简化应用软件的设计,缩短系统开发时间,更好地保证系统的实时性和可靠性。
FreeRTOS广泛应用于工业自动化、智能家居、汽车电子、医疗设备和无人机等领域。例如,在智能家居系统中,FreeRTOS可以管理多个传感器和执行器(如温度传感器、光照传感器、智能插座等),实现家庭安全、节能和舒适度的提升。在无人机控制系统中,FreeRTOS通过多任务调度和实时性能保障,确保无人机能够稳定飞行并响应各种控制指令。
二、开源网址
FreeRTOS官方网址为FreeRTOS™网站,上面提供了大量的FreeRTOS操作系统的相关文档及例程源码,如下所示。
也可以在上面可以下载相应版本的FreeRTOS源码包,或者到github存储库上下载。
三、原理及功能特性
1.原理
任务调度机制是嵌入式实时操作系统的一个重要概念,也是其核心技术。FreeRTOS的内核可根据用户需要设置为可剥夺型内核或不可剥夺型内核。当FreeRTOS被设置为可剥夺型内核时,处于就绪态的高优先级任务能剥夺低优先级任务的CPU使用权,这样可保证系统满足实时性的要求;当FreeRTOS被设置为不可剥夺型内核时,处于就绪态的高优先级任务只有等当前运行任务主动释放CPU的使用权后才能获得运行,这样可提高CPU的运行效率。
FreeRTOS内核支持优先级调度算法,每个任务可根据重要程度的不同被赋予一定的优先级,CPU总是让处于就绪态的、优先级最高的任务先运行,优先级高的任务一旦就绪就能剥夺优先级较低任务的CPU使用权,提高了系统的实时响应能力。FreeRTOS内核同时支持轮换调度算法,系统允许不同的任务使用相同的优先级,在没有更高优先级任务就绪的情况下,同一优先级的任务共享CPU的使用时间。
当进行任务调度时,调度算法首先实现优先级调度。系统按照优先级从高到低的顺序从就绪任务链表数组中寻找第一个不为0的优先级,此优先级即为当前最高就绪优先级,据此实现优先级调度。若此优先级下只有一个就绪任务,则此就绪任务进入运行态;若此优先级下有多个就绪任务,则需采用轮换调度算法实现多任务轮流执行。
2.功能
作为一个轻量级的操作系统,其功能包括:任务调度、任务管理、中断处理、信号量、消息队列、内存管理、通信和同步机制、软件定时器、低功耗模式等,这些功能使得FreeRTOS能够高效地管理嵌入式系统中的多个任务,实现任务的并发执行和资源共享。
- 抢占式多任务调度:FreeRTOS支持抢占式多任务调度机制,允许高优先级的任务抢占低优先级的任务,从而保证了系统的实时性要求。这种调度机制使得系统能够在确定的时间内响应任务,非常适合对实时性要求较高的应用场景。
- 任务管理:FreeRTOS提供了强大的任务管理功能,包括任务的创建、删除、挂起、恢复等操作。这使得开发者能够方便地管理系统中的多个任务,实现任务的并发执行和资源共享。
- 中断处理:FreeRTOS提供了高效的中断处理机制,允许任务在中断服务例程中与内核进行交互。这有助于开发者更好地处理系统中的中断事件,提高系统的稳定性和响应速度。
- 消息队列:基于队列,FreeRTOS 实现了多种功能,其中包括队列集、互斥信号量、计数型信号量、二 值信号量、递归互斥信号量,因此很有必要深入了解FreeRTOS的队列。
- 内存管理:虽然FreeRTOS本身并不提供复杂的内存管理功能(如虚拟内存),但它提供了一些简单的内存分配和释放函数,方便开发者管理系统内存。
- 丰富的通信和同步机制:FreeRTOS提供了消息队列、信号量、互斥量、事件标志组等多种通信和同步机制,用于协调多个任务之间的运行,防止数据竞争和死锁等问题。
- 软件定时器:FreeRTOS提供了软件定时器机制,允许开发者创建定时任务,在指定时间间隔后执行特定操作。这对于需要周期性执行任务的应用非常有用。
- 低功耗模式:在一些特殊场景中,如长期无人照看的数据采集采集设备、可穿戴设备等,都对设备的 功耗有着很严格的要求,为了迎合这种特殊需求,大多数 MCU 也都有相应的低功耗模式,以此来降低设备的整体功耗。
3.特点
FreeRTOS具有如下特点。
- 用户可配置内核功能,使其具有可裁剪的轻量级内核,一般FreeRTOS的内核占用内存非常小,通常只有几KB到十几KB,这使得它能够在资源受限的微控制器上运行,成为小型嵌入式系统的理想选择。
- 免费开源的源代码,采用C语言编写,遵循MISRA-C标准的编程规范,生成目标代码较小,支持多个平台简单易用,提供一个高层次的信任代码的完整性;
-
不限制的任务数量,可根据需求设置任务优先级,在多个任务时可以分配相同的优先权,
-
强大的执行跟踪功能,堆栈溢出可检测。
4.优缺点
优点:
-
开源:FreeRTOS是开源的,可以免费使用并根据开源许可证进行修改;
-
小巧:FreeRTOS的核心代码非常小巧,方便嵌入到微控制器中;
-
实时性:FreeRTOS被设计为提供确定的实时响应;
-
可移植性:FreeRTOS支持多种硬件架构,包括ARM,NIOS,Microblaze等;
-
支持软件组件:FreeRTOS提供了诸如队列、信号量、互斥锁等多种软件组件,简化了开发过程;
-
社区支持:FreeRTOS有一个活跃的社区,可以获得技术支持和查找资源。
缺点:
-
文档和支持:相比商业操作系统,FreeRTOS的文档和支持可能不够丰富;
-
商业支持:虽然FreeRTOS本身是开源的,但是商业支持可能需要购买提供商的额外服务;
-
学习曲线:FreeRTOS的学习曲线相对较陡峭,需要开发者理解任务调度、任务同步等实时系统概念;
-
更新和维护:FreeRTOS的更新和维护需要开发者自己处理,可能需要定期更新或修复漏洞。
四、参考书籍
FreeRTOS更为详细功能特性参考原子的《FreeRTOS开发指南_V1.10.pdf》,在文末链接处可以下载阅读,该手册会有如下介绍,参考目录。
或者参考freertos给出的Usage Guide《FreeRTOS实时内核使用指南_中文版.pdf》,在文末链接处可以下载阅读,该手册会有如下介绍,参考目录。
五、实现方式
STM32工程实现FreeRTOS操作系统的应用,跟前面几篇讲的lwip实现的方式一样,既可以通过官网上下载移植FreeRTOS到STM32工程项目中,也可以可视化工具STM32CubeMX完成对FreeRTOS操作系统的配置,然后一键化生成工程代码。这两种方式均可以实现,但各有优缺点,通过移植的方式实现,有一定的困难,需要对FreeRTOS的熟练度有一定的要求,如果对FreeRTOS不是足够了解,博主推荐采用STM32CubeMX实现,同时这钟方式也是博主比较推荐的,比较简便快捷。
总结
FreeRTOS涉及到的功能知识点比较多,更多详细的使用参考下方文档链接单片机STM32F407-Case程序代码例程-CSDN文库下载,找到对应的例程目录。