你所不了解的实时系统 微控制器最好的伴侣

电子说

1.2w人已加入

描述

实时嵌入式系统是什么?很多人都没有明确的答案,甚至可能目前获取到的都是一些似是而非的知识,简单来说,实时嵌入式系统包括分类,约束和设计模式。

嵌入式系统设计是电气和计算机工程领域中最Amazing但也是最具挑战性的领域之一。如果您不确定嵌入式系统设计是什么,请一定要看完本篇。嵌入式系统设计如此具有挑战性的很大原因在于嵌入式系统所需的众多设计约束,这些限制条件可能包括功耗,有限的内存,I/O可用性,温度,空间限制,当然还有总体成本。对于某些嵌入式系统,一个特别重要的约束是时间。

当系统必须在严格定义的时间内响应事件或请求时,我们将其称为实时系统。这个定义的时间称为截止日期。这些系统必须是可预测的,因此根据定义是确定性的。

如果嵌入了实时系统,我们称之为实时嵌入式系统,我们在本文中可互换地使用这两个术语。实时嵌入式系统很好的范例就是那些“关键任务”应用,例如飞机控制,防抱死制动系统,起搏器和可编程逻辑控制器等。

实时系统分类

可以针对错过其时序约束的可接受性这个特点来对实时系统进行分类。

如果错过时间限制是绝对不可接受的,例如,如果这可能导致人命,我们称之为硬实时系统,上面提到的起搏器就是这个类型。

如果错过或者缺少时序约束是可以接受的,那我们称之为软实时系统。像电子邮件系统,无线路由器和家里的一些有线电视盒也都具有设计要满足的实时约束,但是,即便如此,错过这些截止时间的后果往往很小或微不足道,例如,你可能会因为你最喜欢的电视节目需要缓冲一秒钟而烦恼。当软实时系统错过给定操作的最后期限时,操作不会立即失去其所有值。相反,随着时间的推移,该值会减小——即,随着时间的推移越过截止日期,它会逐渐减小到零(参见下图,左)。

许多系统存在于从硬到软的频谱上,其中错过最后期限并不是不可接受的,所以没必要去立即执行操作,一旦执行就失去了它的全部价值,位于此频谱范围内的系统通常称为固定实时系统(参见下图,中间)。

在一个硬实时系统中,错过的最后期限不仅会造成完全的价值损失,还会产生负值,即损害(见下图,右图)。

实时嵌入

时间限制

每个实时系统都有一组设计满足的时序约束,如果系统没有时序约束,则不是实时的。这些时序约束可以分为两类:事件响应和任务调度。

事件响应

事件是系统必须响应的刺激因素。这些可以在硬件和软件中启动,它们表明发生了某些事情并且必须处理。当事件以内部或外部中断的形式出现时,它可能看起来最熟悉。例如,当按下按钮时,系统可以感知到该按钮并执行必要的操作。系统检测到更改时,可以生成事件。系统检测到事件的时刻与响应该事件的时刻之间的时间称为延迟。延迟定义为响应时间减去检测时间。

任务调度

任务是一组需要由系统处理器运行的指令。一些实时系统设计人员更愿意安排任务,特别是如果这些任务会定期运行。许多嵌入式系统需要重复检测多个输入,然后根据这些新信息修改输出。这些类型的系统适合使用任务。通常使用称为调度程序的软件构造来调度和运行这些任务。计划任务运行与实际运行之间的时间称为抖动。抖动定义为实际时间减去所需时间。

无论实时系统是使用事件响应,任务调度还是两者,最终目标都是尽可能减少延迟和抖动,同时定义被认为可接受的最坏情况的上限。

设计方法

如何设计实时嵌入式系统?随着系统要求的增长和时序约束的加剧,在满足最后期限的同时管理嵌入式系统的所有需求变得越来越困难,以下是整个行业中使用的一些完善的原则。

轮询

轮询调度是用于管理实时系统约束的最熟知且广泛使用的调度算法之一。它的工作方式与其名称相同:它为每个系统组件提供了一个转向,以使用共享资源并完成所需的任务。下图显示了CPU在切换到下一个任务之前为每个任务提供500毫秒的处理时间,任务可能会或可能不会在500毫秒内完成,而接下去他们通常会在轮到他们的时候从他们离开的地方继续。

实时嵌入

队列

实时系统中另一个有用的构造是队列。队列可以被视为生产线,其中物品进入并等待处理。准备就绪后,系统将从队列中删除下一个项目并对其进行处理。通过这种方式,可以将需要执行的新任务放入队列中,并在系统处理之前执行的任何任务时等待。最终,即使更多任务进入后面,也会处理新任务。下图显示了先进先出(FIFO)队列,其中任务C位于队列中,直到任务A和任务B都已处理完毕。

实时嵌入

RTOS

当管理时序约束的开销非常大以至于使用任何单一设计方法或原理不再可行时,实时系统的设计和实现就出现了问题。正是在这一点上,实时操作系统成为最合适的解决方案。实时操作系统(RTOS)利用调度和排队的设计模式,但它增加了更多功能,包括任务优先级,中断处理,任务间通信,文件系统,多线程等,所有这些都是实现和超越时间约束目标的最有效方法。

流行的实时操作系统包括VxWorks,QNX,eCos,MbedOS和FreeRTOS。

以上前两个是专有的,也就是收费的,但后面三个可以免费使用。MbedOS与Arm的Mbed平台配合使用,FreeRTOS已经移植到许多不同的微控制器上,在以后的文章中会介绍如何启动和运行其中一个。

结论

我们对实时嵌入式系统进行了高级解析,重点介绍了如何对这些类型的系统进行分类和定义,我们根据系统错过截止日期的可接受程度以及错过截止日期的后果来对实时系统进行分类并且还讨论了时序约束以及组织和实现实时系统的三种常用方法。本文虽然更多地关注概念性理解而不是实践知识,但即便如此,通过了解这些概念,微控制器和RTOS,你也可以大致分析出目前手上的项目是否需要用到RTOS,是否可以通过RTOS来解决以前无法实现的问题。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分