本文是对一些对Linux等系统有认识,但却没有接触过FreeRTOS系统的人提供一些帮助,能够了解FreeRTOS大致的一些工作原理和如何在FreeRTOS系统上开发还有网络协议栈实现等。作者对于FreeRTOS开发时间还不长,发现文中有哪些谬误,烦劳指出不胜感谢。本文大致分为以下几部分:
- Preface 主要描述RTOS与通用系统之间的区别和FreeRTOS系统的特性
- Task Management 主要描述Task如何创建、哪些状态切换等
- Task Communication & Synchronization 主要描述Task间通信及同步方式
- FreeRTOS Network 主要描述FreeRTOS的网络实现方式
- FreeRTOS Debug & Performance Analysis 主要描述 FreeRTOS的一些debug手段以及性能分析方式
1 Preface
What is RTOS?
那么什么是实时操作系统,实时操作系统又与我们平时使用的Linux、Windows操作系统有哪些不同呢?
先简单介绍下大多数操作系统都允许多个程序同时执行,称为多任务处理。但实际上每个处理器在同一时刻只能处理单个执行线程,而操作系统的调度程序来选择在何时运行哪个程序,并通过在每个程序之前快速切换从而提供同时执行的假象。
RTOS(Real-time operating system)实时操作系统和非实时操作系统根本区别就在于调度机制的不同。实时操作系统要旨在于确定性的执行模式。因为认为只有在可预测操作系统行为(确定)时,才能够满足实时的需求。大部分的RTOS操作系统是通过用户设定每个执行线程的优先级来实现确定性。在调度时,一定会优先执行高优先级的程序。而非实时操作系统是保证每个执行线程都不会饿死,尽量保证高优先级的程序较多运行。
那么,使用了实时操作系统,系统响应速度一定快,实时性一定得到保障了么?
不一定。在实时性要求较高的系统里,仍需注意以下两点:
- 因为实时操作系统本身引入了执行开销,所以对于小型应用来说,有RTOS的性能也许不如无操作系统的情况。实时操作系统的优势最能体现在中大型系统中,当任务间存在复杂的耦合和依赖关系,并且应用程序经常要长时间等待外部资源时。
- 在决定使用RTOS情况下,如果需提供实时性保证,仍需要使用实时系统理论对任务可调度性和相应时间进行分析,才可得到科学、系统的相应性保证。
常见的RTOS有FreeRTOS、uCosII / uCosIII、Nucleus RTOS等
常见应用场景是针对实时性要求较高使用,像汽车引擎控制、轨道交通、工业机器人、飞行器控制系统等
What is FreeRTOS?
FreeRTOS是一种RTOS系统,已经在