“电气和计算机工程令人兴奋但挑战性的领域之一是嵌入式系统设计。如果您不确定什么是嵌入式系统设计,请参阅文章末尾的链接。嵌入式系统设计如此具有挑战性的部分原因在于任何嵌入式系统都需要众多的设计约束。这些因素包括功耗、有限的内存、I/O 可用性、温度、空间限制,当然还有总体成本。对于某些嵌入式系统,一个特别重要的约束是时间。
”电气和计算机工程令人兴奋但挑战性的领域之一是嵌入式系统设计。如果您不确定什么是嵌入式系统设计,请参阅文章末尾的链接。嵌入式系统设计如此具有挑战性的部分原因在于任何嵌入式系统都需要众多的设计约束。这些因素包括功耗、有限的内存、I/O 可用性、温度、空间限制,当然还有总体成本。对于某些嵌入式系统,一个特别重要的约束是时间。
当系统必须在严格定义的时间内响应事件或请求时,我们将其称为实时系统。这个规定的时间被称为期限。这些系统必须是可预测的,因此根据定义是确定性的。
如果实时系统是嵌入式的,我们称其为实时嵌入式系统。我们在本文中互换使用这两个术语。实时嵌入式系统的示例是“关键任务”应用,例如飞机控制、防抱死制动系统、起搏器和可编程逻辑控制器。
实时系统可以根据错过其时序约束的可接受性进行分类。如果错过时间限制是不可接受的,例如,如果这可能导致人员伤亡,我们将其称为硬实时系统。上面提到的起搏器就是一个例子。
如果缺少时序约束是可以接受但不受欢迎的,我们将其称为软实时系统。电子邮件系统、无线路由器和有线电视盒都有其设计要满足的实时限制。即便如此,错过这些期限的后果通常很小或微不足道,例如,您可能会因为您喜欢的电视节目必须缓冲一秒钟而感到恼火。当软实时系统错过给定操作的期,该操作不会立即失去其所有价值。相反,该值会随着时间的推移而减小,即,随着时间超出截止日期,该值会逐渐减小到零(参见图 1 左侧)。
许多系统存在从硬到软的范围,错过期限并不是不可接受的,但这样做会使正在执行的操作立即失去其所有价值。属于此范围内的系统通常称为固定实时系统(参见图 1 中间)。
在硬实时系统中,错过期限不仅会造成价值完全损失,还会造成负价值,即损害(见图 1,右)。
图 1.实时系统分类(改编自:Rochange、Uhrig 和Sainrat 。“时间可预测架构”。2014 年,1.1.2)
每个实时系统都有一组旨在满足的时序约束。如果系统没有时间限制,那么它就不是实时的。这些时序约束可以分为两类:事件响应和任务调度。
事件是系统必须响应的刺激。这些可以在硬件和软件中启动,它们表明发生了某些事情并且必须进行处理。当事件以内部或外部中断的形式出现时,它可能看起来熟悉。例如,当按下按钮时,系统可能会感知到这一情况并执行必要的操作。系统检测到变化时可以随时生成事件。系统检测到事件的时刻和响应该事件的时刻之间的时间称为延迟。延迟定义为响应时间减去检测时间。
L = T r – T d
任务调度
任务是需要由系统处理器运行的一组指令。一些实时系统设计人员更喜欢安排任务,特别是如果这些任务定期运行的话。许多嵌入式系统需要重复感测大量输入,然后根据这些新信息修改输出。这些类型的系统适合使用任务。这些任务通常使用称为调度程序的软件结构来调度和运行。计划任务应该运行和实际运行之间的时间称为抖动。抖动定义为实际时间减去期望时间。
J = T a – T d
无论实时系统是否使用事件响应、任务调度或两者,终目标都是尽可能减少延迟和抖动,同时定义可接受的上限(坏情况)。
设计模式
如何着手设计实时嵌入式系统?随着系统需求的增长和时序限制的收紧,在满足期限的同时管理嵌入式系统的所有需求变得越来越困难。以下是整个行业使用的一些既定原则。
循环赛
循环调度是用于管理实时系统约束的和广泛使用的调度算法之一。正如其名称所示,它的工作原理是:它让每个系统组件轮流使用共享资源并完成所需的任务。下面的图 2 显示了 CPU 在切换到下一个任务之前为每个任务提供 500 毫秒的处理时间。任务可能会也可能不会在 500 毫秒内完成,并且通常会在轮到他们时从上次中断的地方继续。
图 2.循环任务调度程序
排队
实时系统中另一个有用的结构是队列。队列可以被认为是一条生产线,其中的物品进入并等待处理。准备好后,系统从队列中删除下一个项目并处理它。这样,需要执行的新任务可以放入队列中,并在系统处理之前的任务时等待。终,新任务得到处理,尽管后面还有更多任务。图 3 显示了先进先出 (FIFO) 队列,其中任务 C 位于队列中,直到任务 A 和任务 B 都被处理为止。
分享到:
猜你喜欢