本文将首先介绍实时嵌入式系统,包括分类,约束和设计模式。
嵌入式系统设计是电气和计算机工程领域中最令人兴奋但又充满挑战的领域之一。如果不确定什么是嵌入式系统设计,请参考本文末尾的链接。使得嵌入式系统设计如此具有挑战性的部分原因是任何嵌入式系统所需的众多设计约束。这些可能包括功耗,有限的内存,I / O可用性,温度,空间限制,当然还有总体成本。对于某些嵌入式系统,一个特别重要的约束是时间。
当系统必须在严格定义的时间内响应事件或请求时,我们称其为实时系统。此定义的时间称为截止时间。这些系统必须是可预测的,因此根据定义是确定的。 如果是嵌入式实时系统,我们称其为实时嵌入式系统。我们在本文中互换使用这两个术语。实时嵌入式系统的示例是“关键任务”应用,例如飞机控制,防抱死制动系统,起搏器和可编程逻辑控制器。
1、实时分类可以基于缺少时序约束的可接受性来对实时系统进行分类。如果缺少时序约束是绝对不能接受的,例如,如果这可能导致人员伤亡,则我们将其称为硬实时系统。上述起搏器就是一个例子。 如果缺少时序约束是可以接受的,但是不希望有的话,我们将其称为 软实时系统。 电子邮件系统,无线路由器和电缆盒均具有实时的约束,可以满足这些约束。即使这样,错过那些最后期限的后果通常很小或微不足道,例如,您可能会因为最喜欢的电视节目需要缓冲一秒钟而感到恼火。当软实时系统错过给定操作的最后期限时,该操作不会立即失去其所有价值。取而代之的是,该值会随着时间的推移而减小,即,随着时间越过截止日期,它会朝着零方向减小(请参见左图1)。 从硬到软,存在许多系统,错过最后期限并不是不可接受的,但是这样做会使正在执行的操作立即失去其所有价值。处于此范围内的系统通常称为公司实时系统(请参见图1,中间)。 在硬实时系统中,错过最后期限不仅会造成价值的完全损失,还会带来负面的价值,即伤害(参见图1,右)。
图1.实时系统分类(改编自:Rochange,Uhrig和Sainrat 。“时间可预测的体系结构” ,2014,1.1.2 )
2、时间约束每个实时系统都具有一组设计要满足的时序约束。如果系统没有时序限制,则它不是实时的。这些时序约束可以分为两类:事件响应和任务调度。
3、事件回应事件是系统必须响应的刺激。这些可以在硬件和软件中启动,它们表明发生了某些事情并且必须对其进行处理。当事件以内部或外部中断的形式出现时,可能看起来最为熟悉。例如,当按下按钮时,系统可能会感应到这一点并执行必要的操作。事件可以在系统检测到更改时随时生成。系统检测到事件的时间与系统响应该事件的时间之间的时间称为等待时间。延迟定义为响应时间减去检测时间。
4、任务调度任务是一组需要由系统处理器运行的指令。一些实时系统设计人员更喜欢安排任务,特别是如果这些任务会定期运行。许多嵌入式系统需要反复检测大量输入,然后根据此新信息修改输出。这类系统适合使用任务。通常使用称为调度程序的软件结构来调度和运行这些任务。计划的任务应该运行到实际运行之间的时间称为抖动。抖动定义为实际时间减去所需时间。
无论实时系统是使用事件响应,任务调度还是两者都使用,最终目标都是在定义可接受的上限(最坏情况)的同时,尽可能减少延迟和抖动。
5、设计模式如何设计一个实时嵌入式系统?随着系统需求的增长和时序约束的严格,在满足最后期限的同时管理嵌入式系统的所有需求变得越来越困难。以下是整个行业中使用的一些公认的原则。
轮循
循环调度是用于管理实时系统约束的最著名和广泛使用的调度算法之一。顾名思义,它的工作原理是:它使每个系统组件都可以使用共享资源并完成所需的任务。下面的图2显示了一个CPU,它为每个任务提供500毫秒的处理时间,然后再切换到下一个任务。任务可能会在500毫秒内完成,也可能不会完成,并且通常会在轮到他们时从停下的地方接起任务。
图2.循环任务调度程序
排队实时系统中的另一个有用的构造是队列。队列可以看作是一条生产线,其中有物品进入并等待处理。准备就绪后,系统会从队列中删除下一个项目并进行处理。这样,可以将需要执行的新任务放在队列中,并在系统处理之前执行的所有任务时等待。最终,即使后面有更多任务,新任务也将得到处理。图3显示了先进先出(FIFO)队列,其中任务C位于队列中,直到已处理任务A和任务B。
图3.先进先出(FIFO)队列
实时操作系统在实时系统的设计和实现中,有一点很重要,即管理时序约束的开销非常大,以至于使用任何单一的设计模式或原理都不再可行。在这一点上,实时操作系统成为最合适的解决方案。实时操作系统或RTOS(发音为R-toss)利用了调度和排队的设计模式,但它增加了更多功能,包括任务优先级,中断处理,任务间 通信,文件系统,多线程和更多。所有这些都是实现和超越时间限制目标的最有效方法。
流行的实时操作系统包括VxWorks,QNX,eCos,MbedOS和FreeRTOS。上一个列表中的前两个是专有的,但是其他三个可以免费使用。MbedOS可与Arm的Mbed平台一起使用,并且FreeRTOS已移植到许多不同的微控制器上。我们可能会在以后的文章中探讨如何启动其中之一。
6、结论在本文中,我们对实时嵌入式系统进行了高级介绍,重点是如何对这些类型的系统进行分类和定义。我们根据错过时限的可接受程度以及错过时限的后果对实时系统进行分类。我们还讨论了时序约束以及组织和实施实时系统的三种常见方法。
作为引言,本文重点更多地是在概念上的理解,而不是动手知识。即使这样,在了解了这些概念,微控制器和RTOS之后,您仍可以使下一个设计解决以前无法解决的问题。
|