FreeRTOS 系统架构
FreeRTOS 通常作为单个已编译映像,与设备应用程序所需的所有组件一起,刷写到设备。此映像中结合了嵌入式开发人员针对应用程序编写的功能、Amazon 提供的软件库、FreeRTOS 内核,以及适用于硬件平台的驱动程序和主板支持程序包 (BSP)。不论使用的是何种微处理器,对于 FreeRTOS 内核和所有 FreeRTOS 软件库,嵌入式应用程序开发人员均可以采用相同的标准化接口。
系统架构
FreeRTOS 是一个相对较小的应用程序。最小化的 FreeRTOS 内核仅包括3个(’’.c’’)文件和少数头文件,总共不到 9000 行代码,还包括了注释和空行。一个典型的编译后(二进制)代码映像小于10KB。
FreeRTOS 的代码可以分解为三个主要区块:任务,通讯,和硬件接口。
- 任务:大约有一半的 FreeRTOS 的核心代码用来处理多数操作系统首要关注的问题:任务。任务是给定优先级的用户定义的C函数。task.c 和 task.h 完成了所有有关创建,调度,和维护任务的繁重工作。
- 通讯:任务很重要,不过任务间可以互相通讯则更为重要!它给我们带来 FreeRTOS 的第二项任务:通讯。大约 40% 的 FreeRTOS 核心代码是用来处理通讯的。queue.c 和 queue.h 是负责处理 FreeRTOS 的通讯的。任务和中断使用队列互相发送数据,并且使用信号灯和互斥来发送临界资源的使用情况。
- 硬件接口:接近 9000 行的代码拼凑起基本的 FreeRTOS,是硬件无关的;相同的代码都能够运行,不论 FreeRTOS 是运行在不起眼的 8051,还是最新、最炫的 ARM 内核上。大约有6%的 FreeRTOS 的核心代码,在硬件无关的 FreeRTOS 内核与硬件相关的代码间扮演着垫片的角色。我们将在下个部分讨论硬件相关的代码。