FreeRTOS|FreeRTOS —— 0.前言

MCU当遇到比较复杂的开发时,往往都会采用RTOS,而FreeRTOS是最为广泛使用的实时操作系统之一,正好目前工作中使用到了FreeRTOS,借助官方使用介绍文档,一边学习一边翻译。翻译工具主要借助GOOGLE,同时也会优化语句。
文档来源:https://www.freertos.org/Documentation/RTOS_book.html
FreeRTOS|FreeRTOS —— 0.前言
文章图片

Mastering the FreeRTOS Real Time Kernel - a Hands On Tutorial Guide (掌握FreeRTOS?实时内核) 这是161204副本,尚未涵盖FreeRTOS V9.0.0,FreeRTOS V10.0.0或低功耗无滴答操作。 定期检查http://www.FreeRTOS.org,以获取其他文档和本书的更新。 有关FreeRTOS V9.x.x的信息,请参见http://www.FreeRTOS.org/FreeRTOS-V9.html。 有关FreeRTOS V10.x.x的信息,请参见https://www.freertos.org/FreeRTOS-V10.html。 以后使用FreeRTOS V9.x.x创建的应用程序可以在编译时静态分配所有内核对象,而无需包括堆内存管理器。
此文本是免费提供的。 作为回报,我们要求您使用http://www.FreeRTOS.org/contact上的业务联系人电子邮件链接提供反馈,评论和更正。 谢谢你。
前言 关于FreeRTOS
FreeRTOS由Real Time Engineers Ltd.独家拥有,开发和维护。RealTime Engineers Ltd.与世界领先的芯片公司紧密合作已有十多年了,可为您提供屡获殊荣的商业级和完全免费的高质量产品 软件。
FreeRTOS非常适合使用微控制器或小型微处理器的深度嵌入式实时应用程序。 这种类型的应用程序通常包括硬实时需求和软实时需求的混合。
软实时需求是那些规定了时间期限的要求,违反期限不会使系统失效。 例如,对击键的响应太慢可能会使系统看起来很烦人,而实际上却使它无法使用。
硬实时要求是那些指出时间期限的要求,违反期限将导致系统绝对故障。 例如,如果驾驶员的安全气囊对碰撞传感器的输入响应太慢,则其危害可能大于危害。
FreeRTOS是一个实时内核(或实时调度程序),在其之上可以构建嵌入式应用程序以满足其严格的实时要求。 它允许将应用程序组织为独立的执行线程的集合。 在只有一个内核的处理器上,任何时候都只能执行一个线程。 内核通过检查应用程序设计者分配给每个线程的优先级来确定应该执行哪个线程。 在最简单的情况下,应用程序设计人员可以为实现硬实时需求的线程分配较高的优先级,而为实现软实时需求的线程分配较低的优先级。 这样可以确保始终在软实时线程之前执行硬实时线程,但是优先级分配决策并不总是那么简单。
如果您还没有完全理解上一段中的概念,请不要担心。 以下各章提供了许多示例的详细说明,以帮助您了解如何使用实时内核,尤其是如何使用FreeRTOS。
价值主张
FreeRTOS前所未有的全球成功来自其引人注目的价值主张。 FreeRTOS是专业开发,严格质量控制,强大,受支持的,不包含任何知识产权所有权歧义,并且真正可以免费用于商业应用程序而无需公开您的专有源代码。 您可以使用FreeRTOS将产品推向市场,而无需与Real Time Engineers Ltd.交谈,更不用说支付任何费用了,成千上万的人都这样做。 如果您希望在任何时候获得额外的备份,或者您的法律团队需要额外的书面担保或赔偿,则可以采用一种简单的低成本商业升级途径。 您可以随时选择采用商业路线,这使您高枕无忧。
有关术语的注释
在FreeRTOS中,每个执行线程都称为“任务”。 嵌入式社区内部尚未就术语达成共识,但是我更喜欢“任务”而不是“线程”,因为线程在某些应用领域中可能具有更具体的含义。
为什么要使用实时内核?
有许多成熟的技术可以在不使用内核的情况下编写出色的嵌入式软件,并且,如果所开发的系统很简单,则这些技术可能会提供最合适的解决方案。 在更复杂的情况下,使用内核可能会更可取,但是发生交叉点的位置始终是主观的。
如前所述,任务优先级排序可以帮助确保应用程序满足其处理期限,但是内核也可以带来其他不太明显的好处。 其中一些在下面非常简短地列出。

  • 提取定时信息
    内核负责执行计时,并为应用程序提供与时间相关的API。 这样可以简化应用程序代码的结构,并减小整体代码的大小。
  • 可维护性/可扩展性
    提取时序细节可以减少模块之间的相互依赖关系,并允许软件以可控和可预测的方式发展。 另外,内核负责计时,因此应用程序性能不易受到基础硬件更改的影响。
  • 模块化
    任务是独立的模块,每个模块都应有明确定义的目的。
  • 团队发展
    任务还应具有定义明确的界面,以使团队更轻松地进行开发。
  • 更容易的测试
    如果任务是定义明确的具有干净接口的独立模块,则可以对它们进行隔离测试。
  • 代码重用
    更高的模块化和更少的相互依赖关系导致可以更轻松地重用代码。
  • 提高效率
    使用内核可以使软件完全由事件驱动,因此,通过轮询未发生的事件不会浪费处理时间。 仅在必须执行某些操作时才执行代码。
    与效率节省相反,需要处理RTOS滴答中断,并将执行从一个任务切换到另一个任务。 但是,不使用RTOS的应用程序通常无论如何都会包含某种形式的滴答中断。
  • 空闲时间
    调度程序启动时,将自动创建“空闲”任务。 只要没有希望执行的应用程序任务,它就会执行。 空闲任务可用于测量备用处理能力,执行后台检查或仅将处理器置于低功耗模式。
  • 能源管理
    通过使用RTOS获得的效率提高允许处理器在低功耗模式下花费更多时间。
    通过在每次空闲任务运行时将处理器置于低功耗状态,可以大大降低功耗。 FreeRTOS还具有特殊的无滴答模式。 使用无滴答模式可以使处理器进入比其他方式更低的功耗模式,并在低功耗模式下保持更长的时间。
  • 灵活的中断处理
    通过将进程推迟到应用程序编写器创建的任务或FreeRTOS守护的任务,可以使中断处理程序保持非常短的状态。
  • 混合进程要求
    简单的设计模式可以在应用程序中实现定期,连续和事件驱动的处理的混合。 此外,可以通过选择适当的任务和中断优先级来满足硬性和软性实时要求。
FreeRTOS功能
FreeRTOS具有以下标准功能:
  • 抢占或协同调度
  • 非常灵活的任务优先级分配
  • 灵活,快速,轻巧的任务通知机制
  • 队列
  • 二进制信号量
  • 计数信号量
  • 互斥量
  • 递归互斥量
  • 软件计时器
  • 事件组
  • 滴答钩子功能
  • 空闲钩子功能
  • 堆栈溢出检查
  • 跟踪记录
  • 任务运行时统计信息收集
  • 可选的商业许可和支持
  • 完整的中断嵌套模型(对于某些体系结构)
  • 极低功耗应用的无滴答功能
  • 适当时由软件管理的中断堆栈(这可以帮助节省RAM)
许可以及FreeRTOS,OpenRTOS和SafeRTOS系列
FreeRTOS开源许可证旨在确保:
  1. FreeRTOS可以用于商业应用。
  2. FreeRTOS本身仍然可供所有人免费使用。
  3. FreeRTOS用户保留其知识产权的所有权。
有关最新的开源许可证信息,请参见http://www.FreeRTOS.org/license。
OpenRTOS是FreeRTOS的商业许可版本,由第三方Real Time Engineers Ltd.许可提供。
SafeRTOS与FreeRTOS具有相同的使用模型,但其开发是根据声称符合各种国际公认的安全相关标准所必需的实践,程序和过程进行的。
获得本书随附的示例
随附的zip文件中提供了本书中所有示例的源代码,预配置的项目文件和完整的构建说明。 如果您没有随书附带副本,则可以从http://www.FreeRTOS.org/Documentation/code下载zip文件。 压缩文件可能不包含FreeRTOS的最新版本。
【FreeRTOS|FreeRTOS —— 0.前言】本书中包含的屏幕截图是在使用FreeRTOS Windows端口在Microsoft Windows环境中执行示例时拍摄的。 使用FreeRTOS Windows端口的项目已预先配置为使用Visual Studio的免费Express版本构建,可以从http://www.microsoft.com/express下载。 请注意,尽管FreeRTOS Windows端口提供了便利的评估,测试和开发平台,但它并未提供真正的实时行为。

    推荐阅读