FreeRTOS :Real Time Engineers Ltd.
《A_Hands-On_Tutorial_Guide》 作者:Richard Barry
本专栏是对 FreeRTOS-《A Hands On Tutorial Guide》的翻译、解释、引申 加以本人一点点理解。
书可以在 FreeRTOS 官网 SUPPORT 下面的 Books & Maunals 找到,即 《Mastering the FreeRTOS Real Time Kernel-A Hands On Tutorial Guide》。
有关 FreeRTOS 接口的详细介绍在 《 Reference Manual 》中。
在开始正文之前,本节先用来介绍一些先验知识,以帮助大家更好更全面的理解 FreeRTOS。
什么是 FreeRTOS ?
什么是 RTOS
参考 wiki 可知:
实时操作系统(Real-time operating system, RTOS),又称即时操作系统,它会按照排序执行、管理系统资源,并为开发应用程序提供一致的基础。
实时操作系统与一般的操作系统相比,最大的特色就是“实时性”,如果有一个任务需要执行,实时操作系统会马上(在较短时间内)执行该任务,不会有较长的延时。这种特性保证了各个任务的及时执行。
为什么是 FreeRTOS
完全免费、开源、市场占有率高。
创始人 Richard Barry 提供了大量的移植代码和配套文档。基于 FreeRTOS 的 SafeRTOS 经过了安全性验证,侧面表现了 FreeRTOS 安全方面做的也是比较好的。FreeRTOS 代码量少,和 Linux 等其他系统动辄上多少万的代码量相比真是小巧精致,但是也是五脏俱全。
开源、免费、而且提供了大量的帮助和指导文档,Richard Barry 的开源精神,这些实在是非常让人无法拒绝的地方。
了解 FreeRTOS
本专栏将从如下方面了解 FreeRTOS:
- FreeRTOS 文件结构和编码风格
- 堆内存管理
- 任务管理
- 队列管理
- 软件计时器管理
- 中断管理
- 资源管理
- 事件管理
- 任务通知
- 开发者支持
- 问题定位
两类实时性要求
- 软实时:声明了 deadline,但是超过也不会导致整个系统无用(useless),例如键盘敲击的响应慢,只是让人感觉不好,但不会导致系统不可用,整个系统仍然是可用的
- 硬实时:声明了 deadline,超过之后会引起系统绝对的错误(absolute failure),例如汽车安全气囊对碰撞传感器输入响应太慢,安全气囊可能产生的坏处大于好处(airbag has the potential to do more harm than good)。
FreeRTOS 是一个实时内核(或者实时调度器),在其之上可以构建嵌入式程序来满足其硬实时需求。他允许把多个程序组织为独立执行线程的集合。单核处理器下,内核通过检查程序设计者赋予程序的优先级来决定某一个时刻应该执行哪个线程。例如,程序可以被赋予高优先级,来满足其硬实时需求,低的优先级来满足软实时的需求,这会确保硬实时需求的程序总是在软实时需求的程序之前执行。但是优先级赋值是困难的(不总是简单的,are not always that simplistic)。
价值观 value proposition
FreeRTOS 是专业开发的、严格质量把控、健壮、被支持并且不存在任何知识产权模糊,在商业应用程序中免费使用且不需要暴露任何你拥有的源代码,更不要说支付费用。任何时候,想要一个书面的保证、保障或者备份,都有一个简单的低成本的商业升级路径。任何时候都可以选择走商业路径,十分便利(原文 peace of mind comes with you can take opt to commercial route an any time you choose)。在 FreeRTOS 中每个可执行的线程(thread)也被称为任务(task)。
优势
除了满足应用程序硬实时要求之外的优势:
- 抽象出时序信息(Abstracting away timing information)
- 内核负责执行的时许,并提供与之相关的 API。这允许应用代码的结构变得简单、体积更小
- 可维护性、可扩展性(Maintainability/Extensibility)
- 抽象时序细节使得模块之间的相互影响更低,并且软件会以可预测和控制的方式运行、演变。因为内核负责时序,因此应用程序的性能不太容易收到底层硬件变化的影响
- 模块化(Modularity)