如果我对本翻译内容享有所有权。允许任何人复制使用本文章,不会收取任何费用。如有平台向你收取费用与本人无任何关系
序言
关于FreeRTOS
FreeRTOS是由Real Time Enginners公司拥有,开发和维护。Real Time Enginners公司已经和世界各地的领军企业合作超过10年,为你提供优质的,商业级和高质量完全免费的软件支持。
FreeRTOS非常适用于微处理器和小微处理器上运行实时程序。这种程序通常是硬件和实时软件需求的混合。
软件的实时需求是一个时间期限状态,但违背时间期限不会导致系统不可用。比如按键响应太慢可能让系统看起来失去响应,但实际上不会让它无法使用。
硬件的实时需求是另一种的时间期限,违背这些时间期限会绝对的导致系统错误。比如,汽车的安全气囊破坏传感器输入,导致响应缓慢会造成更多伤害相比好的时候。
FreeRTOS是一个在嵌入式程序之上的实时系统(实时调度器),它可以满足这些硬件实时需求。程序就像一个个独立被执行的线程一样初始化。单处理器系统上,一次只能有一个线程任务执行。内核会通过测试每个任务关联优先级决定执行哪个线程。最简单的方式程序设计者可以指定一个更高的优先级,以满足硬件实时需求,低优先级线程任务实现软件实时需求。这样确保硬件实时需求总是在软件实时需求之前执行,但程序优先级的设置往往没有这么简单。
如果你不是完全理解上面章节的概念也不要担心。接下来的章节会提供详细的解释,还会带有例子帮助你明白,怎么使用实时系统,怎么使用FreeRTOS。
价值观
FreeRTOS史无前例的成功源自它的价值观;FreeRTOS有专业开发,严格质量控制,健全的,富有支持的,不包括任何所有权不明确的属性,可以真正免费用于商业程序,在不公开你源代码的前提下。你也可以再不通知Real Time Enginners公司的前提下在应用商店发布你的产品。更不必说支付费用,有很多人就是这做的。如果有一天你想要额外的保证,或你的团队需要一个额外的书面保证或豁免,那么可以进行一个低价格的商业版升级。放心的使用它,你可以随时升级成商业版本。
术语说明
FreeRTOS中每个执行的线程叫任务。嵌入式社区没有一个统一的术语,但更习惯用任务,因为线程在一些应用领域有更多的含义。
为什么使用实时内核
如果程序相对简单,有很多不用系统写出优秀嵌入式程序的可靠技术,而且这些技术可能是最适用的方案。在更复杂的情形,可能就是用一个内核更适合,但零界点的判断却是主观性的。
如前面所述,任务优先级化可以确保程序满足处理期限要求,同时一个内核也会带来一些其他的好处。下面就给出了一个简明的表述:
- 抽象化时间信息
内核会响应执行时间,并且为程序提供了时间相关的函数。这样就可以让程序的结构更简单,代码量也更少。 - 可维护性和可扩展性
抽象化时间细节导致模块之间更少的依赖关系,允许程序以可控的和可预测的方式进化。因为内核可以响应时间,所以程序就可以更少的处理容易受硬件影响的代码。 - 模块化
任务实独立模块,每一个都有一个定义好的目的 - 团队开发
任务也应该有定义好的接口,程序员可以轻松的组建团队开发 - 方便测试
如果任务都是定义好的独立模块,拥有明确的接口,它们就可以单独测试 - 代码复用
模块化程度越好,更少的相互依赖,就更容易重复使用代码 - 提高性能
用内核让程序完全的事件驱动,这样没有事件发生时就不会有处理器时间浪费。只有在有事情发生的时候才会执行代码。
为了处理RTOStick中断和从一个任务切换到另外一个任务,需要保存有效的计数值。如果不用RTOS,通常程序中都需要包含一个时钟中断。 - 空闲时间
开启调度器会自动创建一个空闲任务。当没有其他任务执行时它就会运行。空闲任务可以用于统计处理器备用性能,也可以用作后台检查,或者让处理器进入低耗电模式。 - 电源管理
通过RTOS获取效率,就可以使处理器更多的时间运行在低耗点模式。
可以通过每次进入空闲任务时将处理器置入低耗电模式,从而有效降低电能消耗。FreeRTOS还有一个特别的tick-less模式。使用tick-less模式让处理器消耗电能更低,而且保持在低耗电的时间更长。 - 灵活的中断操作
可以通过推迟操作到程序创建的任务或FreeRTOS的守护任务中,使中断服务程序非常短小。 - 混合处理需求
用一个简单的设计模式可以获取程序中的周期性的,连续性的和事件驱动的任务的混合。甚至软件和硬件需求也可以用合适的任务和优先级中断处理。
FreeRTOS功能
FreeRTOS有一下的基础功能
- 任务抢占和合作
- 灵活的任务优先级分配
- 灵活,快速,高效的任务通知机智
- 队列
- 二进制信号量
- 普通信号量
- 互斥锁
- 互斥继承锁
- 软件定时任务
- 事件组
- Tick勾子函数
- 空闲勾子函数
- 栈溢出检查
- 追踪记录
- 任务运行时状态收集
- 商业许可证选项和支持
- 一些架构的完全体中断嵌套
- tick-less模式,程序的极低耗电模式
- 合适的用软件管理中断堆栈
许可证,FreeRTOS,OpenRTOS,SafeRTOS家族
FreeRTOS开源协议用于确保:
- FreeRTOS可以用于商用目的
- FreeRTOS源码每个人都可以免费使用
- FreeRTOS用户保有自己创造产品所有权
更多许可证信息查看http://www.FreeRTOS.org/license
OpenRTOS是由Real Time Enginners公司提供的,在FreeRTOS许可证之下的第三方版本。
SafeRTOS和FreeRTOS共享同样的使用模块,但根据各种声名符合国际安全标准的实践,程序和流程进行开发。
包含的源码文件和项目
这本书中所有例子的源代码,预配置项目文件和所有的编译指令都以zip的压缩文件提供。你可以从http://www.FreeRTOS.org/Documentation/code
网址下载zip文件,如果你没有下载成功。可能最新版本的zip文件还没有包含进FreeRTOS中。
本书中的所有屏幕截图都是来自于运行中的Windows电脑,使用的是Windows的系统。这里的FreeRTOS项目都是用免费的Visual Studio预配置和编译的,可以从http://www.microsoft.com/express
下载。注意,Windows版本的FreeRTOS提供一个方便的测试开发平台方案,但它不提供真正的实时行为。