FreeRTOS简介
概述
FreeRTOS 是一种开源的实时操作系统,通过 MIT 许可免费分发,包括一个内核和一组不断丰富的库。具有轻量级、高度可移植和免费开源等特点。它主要用于嵌入式系统和微控制器系统的任务调度和管理。
FreeRTOS作为一种轻量级架构,非常灵活,其主要特点为:
- 轻量级:FreeRTOS是一种微内核架构,仅提供基本的系统服务,例如任务调度、同步和通信机制,而不包含高级功能。这使得FreeRTOS极其轻量级,能够在非常小的硬件资源下运行。值得一提的是,其内核的核心仅包含在3个C文件中
- 任务为中心:FreeRTOS的架构围绕任务展开,任务是系统的基本单位,负责执行特定功能。这使得程序的开发和维护变得非常简 单。
- 模块化设计:FreeRTOS的各个组成部分都是模块化设计,如任务管理器、内存管理器、同步机制等。这使得系统的组成部分之间松耦合,容易移植和扩展,并且提供了丰富的API,,如任务的创建、删除、延时、调度等
- 全面的支持
- 中断处理:FreeRTOS提供了丰富的中断机制,可以方便地管理外设中断,并在中断服务程序中调用FreeRTOS的API。
- 多核: FreeRTOS 支持多核系统, 支持在多核环境下的任务调度。
- 多种编程语言,如C, C++, C#, Python 等。
- 高度可移植性:FreeRTOS支持多种平台和多种编译器,并且提供了丰富的移植文档和示例代码。这使得FreeRTOS在不同的硬件和软件环境下都能很好地运行。
- 可靠性: FreeRTOS提供了可靠的任务调度和同步机制,确保系统能够稳定运行。
- 可观测性: FreeRTOS提供了丰富的调试和监测工具,支持在线调试,并可以方便地收集系统运行数据。
架构
基本架构
FreeRTOS的一种常见架构如下:
_________ _________ _________ _________
| | | | | | | |
| User | | Task | | Kernel | | Memory |
| Tasks |<---| Manager |<---| |<---| Manager |
|_________| |_________| |_________| |_________|
|
_________
| |
| Hardware|
| Driver |
|_________|
- Task manager:管理程序中的任务, 包括创建、删除、调度任务。
- Kernel:提供资源共享机制,如信号量、互斥量、邮箱等,并管理系统的整体运行。
- Memory Manager:管理系统内存分配和释放。
- Hardware Driver:此项针对嵌入式系统,用于提供对硬件设备的驱动支持,如I2C、UART等。
- User tasks:用户编写的任务,执行特定的功能。
这些组成部分相互配合,协调工作,使得FreeRTOS系统能够高效稳定运行。
高级特性
FreeRTOS的代码由FreeRTOS和社群人员共同构建,这里给出一些高级特性的示例:
-
空闲任务:FreeRTOS空闲任务是一个特殊的系统任务,它在系统空闲时执行。当所有其他用户任务都没有可运行状态时,空闲任务就会被调度执行。空闲任务可以用来执行一些低优先级的后台任务,如系统维护,资源回收等。
FreeRTOS在初始化时会自动创建空闲任务,用户可以通过实现一个空闲任务回调函数来定制空闲任务的行为。它的优先级是最低的。