Free RTOS学习笔记一【简介】
这一篇没有干货,只有FreeRTOS的一些介绍,可以选择性略过。
简介
FreeRTOS非常适用于微处理器或者小型微处理器的深度嵌入式实时应用,而这类应用包括硬实时应用和软实时应用。
软实时即是在设定时间内运行,但未在该时间内运行不会使系统失效的应用,比如,响应按键输入太慢(但会影响操作体验)。
硬实时必须在设定时间内运行,如未在设定时间内运行将造成严重后果的应用,如:避障小车的距离检测与刹车装置。
FreeRTOS是一个实时内核或者称为实时调度程序,可以在其上构建嵌入式应用满足硬实时要求。它允许将各个应用程序组织为独立执行的任务集合,如果处理器是单核,则在任意时刻只能运行一个任务。内核通过检查每个任务的设定的优先级来决定执行哪个任务。最简单的情况下,可以给硬实时应用设置更高的优先级,而软实时应用设置较低级的优先级。
为什么使用Free RTOS
- 抽象时序细节
内核负责任务的执行时序,并为应用程序提供与时间相关的API。这样就可以让应用程序的代码结构更加简单,降低程序逻辑设计的复杂度。 - 可扩展性
抽象时序细节后模块间的依赖性降低,同时内核负责计时,因此应用程序性能不易受到底层硬件的影响。 - 模块化
每个任务都是独立的模块,每个模块就具有明确的目的。 - 团队开发
任务间有明确定义的接口,允许团队开发。 - 更容易测试
如果任务是具有接口的定义明确的独立模块,则可以单独测试它们。 - 代码重用
更高的模块化和更少的相互依赖性导致代码可以轻松地重复使用。 - 提高效率
使用RTOS允许软件完全由事件驱动(没有OS时,及时轮询机制),因此不会浪费任何处理时间。 代码仅在必须执行某些操作时执行。 - 空闲时间
启动调度程序时会自动创建空闲任务。 只要没有要执行的应用程序任务时,它就会执行。 空闲任务可用于测量备用处理容量,执行后台检查,或仅用于将处理器置于低功耗模式。 - 电源管理
通过使用RTOS获得的效率增益允许处理器在低功率模式下花费更多时间。每次空闲任务运行时,通过将处理器置于低功耗状态,可以显着降低功耗。 FreeRTOS还有一个特殊的无滴答模式。使用无滴答模式允许处理器进入比其他可能的低功率模式,并且保持低功耗模式更长时间。 - 灵活的中断处理
通过将处理延迟到应用程序编写器创建的任务或FreeRTOS守护程序任务,可以使中断处理程序保持非常短。 - 混合处理要求
简单的设计模式可以在应用程序中实现周期性,连续性和事件驱动的处理。 此外,通过选择适当的任务和中断优先级,可以满足硬件和软件的实时要求。
Free RTOS的特性
- 任务优先级分配灵活
- 灵活,快速,轻量级的任务通知机制
- 队列
- 二值信号量
- 计数信号量
- 互斥锁
- 递归互斥锁
- 软件定时器
- 事件组
- 任务hook函数
- 空闲hook函数
- 堆栈溢出检查
- 跟踪记录
- 任务运行时统计信息收集
- 可选的商业许可和支持
- 完全中断嵌套模型(对于某些体系结构)
- 适用于极低功耗应用的无滴答功能
- 适当时软件管理中断堆栈(这可以帮助节省RAM)
与FreeRTOS相关的两个RTOS
OpenRTOS是FreeRTOS的商业许可版本,由Real Time Engineers Ltd.许可,由第三方提供。
SafeRTOS与FreeRTOS共享相同的使用模式,但是符合国际公认的安全相关标准。
源码与资料获取
进入Free RTOS官网,即可下载源码。