马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
嵌入式开发人员通常习惯于裸机编程,或者对使用实时操作系统(RTOS)有所保留。这里谈谈RTOS的作用,以及为什么应该考虑使用它们。
嵌入式开发人员通常习惯于裸机编程,或者对使用实时操作系统(RTOS)有所保留。这里谈谈RTOS的作用,以及为什么应该考虑使用它们。
现今的产品开发周期变得越来越复杂。开发时间越来越短,但所需功能集日益扩展,使得繁忙的开发人员需要千方百计在更短的时间内完成更多工作。通常,使用RTOS可以提高任务管理和资源共享的效率。
什么是实时操作系统(RTOS) ?
简而言之,RTOS是一款旨在有效管理中央处理器(CPU)时间的软件。当时间是应用的重点时,这对于嵌入式系统尤为重要。
Windows等操作系统与嵌入式系统中常用的RTOS的主要区别,在于对外部事件的响应时间。Windows等普通OS提供对事件的不确定性响应,即使试图保持响应速度也无法保证何时处理事件。使得用户认为操作系统响应灵敏,比处理基础任务更为重要。另一方面,RTOS则提供了实时响应和高度确定性的反应。
习惯使用Windows或Linux等操作系统的开发人员将会非常熟悉嵌入式RTOS的特性。它们经设计在内存有限的系统中运行,并且可以无限期运行而无需重置。
由于RTOS旨在快速响应事件并在重负载下执行,RTOS在执行大型任务时可能会较其他OS慢。
RTOS调度
RTOS的价值在于很高的响应速度,而高级调度算法是其中的关键组件。
嵌入式系统的时间要求各有不同,从软实时洗衣机控制系统到硬实时飞机安全系统等等。在后者的情况下,只有能够准确预测OS调度程序的行为,才能满足实时要求的基础需求。
许多操作系统给人以一次执行多个程序的印象,但是这种多任务处理其实只是一种错觉。单个处理器内核在任一时间只能运行单个执行线程。操作系统的调度程序决定何时运行哪个程序或线程。通过在线程之间快速切换,它带来了同时执行多项任务的错觉。
灵活的RTOS调度程序允许采用广泛的方法来处理优先级,尽管RTOS通常主要用于非常狭窄的应用程序集。RTOS调度程序应提供最小的中断延迟和最小的线程切换开销。这是使得RTOS与重视时间的嵌入式系统如此密切相关的原因。
在嵌入式设计中使用RTOS
许多嵌入式设计编程人员避免使用RTOS,因为他们怀疑RTOS给其应用程序增加了太多的复杂性,或者RTOS其实是一个未知的领域。RTOS通常需要最多占用5%的CPU资源来执行其任务。尽管总会有一些资源上的损失,但RTOS可以在简化的确定性,通过硬件抽象的易用性,减少的开发时间以及更便利的调试等等方面弥补这一不足。
使用RTOS意味着你可以同时运行多项任务,并在需要时引入基本的连接性、隐私、安全性等。RTOS允许针对项目的特定需求创建优化的解决方案。
推出Zephyr RTOS
这有许多RTOS解决方案,Nordic世界的许多开发人员都专注于开发低功耗嵌入式系统。如果是这样,我们建议查看Zephyr,它非常适合要求超低功耗的连接解决方案。
模块化的Zephyr RTOS支持多种架构,因此开发人员可以轻松定制解决方案以满足其需求。
Zephyr是真正的开源解决方案。某些声称是开源的RTOS其实是由私人企业推动的,而Zephyr则由Linux基金会管理,因此是开源协作方案。Nordic代表担任委员会和工作组成员,他们与来自其他大型和小型企业的代表一起工作。
额外的好处
到目前为止,RTOS的确定性调度功能已经成为焦点。此外,诸如Zephyr之类的RTOS还具有其他有用的功能。
Zephyr带有功能强大的日志记录系统,能够输出到多个后端,例如UART或RTT。日志具有不同的优先级,带有时间戳,并且可以按照模块或关键性级别轻松过滤。
Zephyr还有许多简化调试的工具,例如CPU使用率监控器、堆栈标记、错误处理程序以及对PC工具的支持,这些工具可让户查看线程的执行和调度。
当然,Zephyr还支持成熟的OS功能,例如互斥锁、内存分配服务以及保护、线程同步和数据传递。当然,拥有一系列用于组件选择的现成驱动程序也是很棒的功能。它使得开发人员可以专注于手头的应用程序,而不必制作和测试低级驱动程序。
经过一些适应之后,我相信大多数嵌入式开发人员将更喜欢使用RTOS而不是裸机编程。 |