假设我们正在使用由高分辨率计时器组成的实时Linux系统和硬件,那么具有RTC是否会影响系统的实时性?
这里说它减少了CPU和内存的使用,但是有没有办法比较两者之间的差异?
假设我们正在使用由高分辨率计时器组成的实时Linux系统和硬件,那么具有RTC是否会影响系统的实时性?
这里说它减少了CPU和内存的使用,但是有没有办法比较两者之间的差异?
Answers:
您链接的文章只是完整而毫无意义。“实时时钟”中的“实时”(用于指代本文中介绍的精简设备的类型)和“实时系统”中的“实时”是完全不同的术语。前者意味着使用长寿命的纽扣/硬币型电池来存储当前日历时间(通常相对于高精度的日历时间差得很远,而不像所要求的链接文章所述的高精度),并且无需外部电源就可以提前。后者意味着对事件的响应具有从事件时间到响应时间的潜伏期的严格限制。
文章中的其他一些内容确立了它应被视为不可信任的特征:
几乎可以忽略不计。在100年内约为1秒
100年中的1秒大约是317 ppt(是的,这是万亿分之一)。使用任何现有的商用时钟技术都无法获得这种时钟稳定性。即使每年达到1秒,也至少需要一个OCXO,它需要一个高功率,始终开启的烤箱来调节温度。使用长寿命纽扣电池供电的设备可以得到的想法是可笑的。
实时系统,如数字时钟,考勤系统,数码相机
这些都不是实时系统。
实时系统是在指定时间内响应内部或外部事件/刺激的东西,该时间通常以毫秒或微秒为单位。它需要精度较低的计时器而不是RTC。
您的问题的答案是“否”,它不会影响系统的实时性。
如果您的系统在重置后具有RTC处于脱机状态,则可以在日志中输入正确的日期。如果您需要仔细查看日志,并且时间戳不正确会使您,您的软件开发人员和客户发疯,那么在一般情况下进行调查几乎是不可能的。
您所指文章中的容易或困难,低或高是一种个人观点。如果您以前从未做过并且没有明确的系统要求和工作说明,那么这将是困难且昂贵的。当您知道需要什么以及使用哪种最佳设备时,它既简单又便宜。
在大多数系统中,RTC外设相对于其他形式的计时的唯一真正优势是,当系统的其余部分进入睡眠状态或在某些情况下完全断电时,RTC的时间测量将不受影响。实际上,许多RTC外设的设计方式使其无法用于大多数目的,而不是记录大约一天中的时间。例如,许多RTC外围设备(可能占多数,但可能不是绝大多数)仅限于以一秒为增量报告时间,并且其中许多至少有时需要在设置警报或-在某些情况下-甚至只是试图阅读时间。因此,使用RTC的正常方法是在启动时将其值简单地复制到一个更有用的时钟中,并在设置了“ wall time”时进行设置,
除非第一个和最后一个之间的间隔超过1/32768秒,否则任何四个连续的读取都将保证包含两个匹配的(因此是正确的)。设置警报可能会生成虚假的唤醒事件,但顺序如下:
应充分容易地处理所有边缘情况,以适合通用计时用途。不幸的是,无论出于何种原因,RTC外设都从未采用这种方式进行设计,而是更加复杂且使用较少。
这似乎是围绕术语“实时”的使用的术语问题。
实时时钟是用于稳定/准确(在一定公差范围内)计时的设备,因此主机系统可以使用它来将事件/动作与发生的时间和日期相关联。
您可以将实时时钟想像成与计算机相连的数字手表的内部。它具有独立供电的时间基准,旨在保持稳定和合理的准确性。就像数字手表一样,它不会因为主机关闭而丢失当前时间。实时时钟主要是为方便起见而安装在计算机上的,因此用户不必在每次启动系统时都重新输入当前时间和日期,也不必进行频繁的调整来补偿漂移。
实时时钟的替代方法是使用由系统时钟驱动的软件和内部计时器。这样的方法是可行的(原始的IBM PC就是这种方法),但不是特别稳定。在操作系统关闭,挂起或崩溃的任何时候,它也会丢失日期/时间的跟踪。
当术语“实时”应用于计算机系统或应用程序时,它描述的是一种在很短的确定性时间内(通常只有几毫秒,有时更少,具有定义的顺序)对现实事件做出响应的系统同时输入。实时系统用于诸如机器控制,机器人技术,模拟和游戏之类的事情。尽管实时应用程序可以利用当前时间和日期信息,但应用程序并不是“实时”的,因为它利用了当前时间和日期。
如上所述,实时时钟的目的是可靠地跟踪当前日期和时间,通常只跟踪秒和秒。一个好的人将具有最小的漂移(每天增加或减少几秒钟)。实时时钟通常没有高分辨率。与现代CPU时钟相比,它们的基本时钟通常运行得很慢。这是为了最大程度地降低功耗(消耗其独立电源),以便在长时间关闭主机电源后,时钟将继续可靠地保持时间。
高分辨率计时器与当前时间或日期无关。它的目的是以某种精度(也许微秒甚至更低)测量时间间隔。为此,它必须基于稳定的高频时钟-通常是计算机系统时钟。高分辨率计时器通常也不关心长时间的漂移,因为通常的目的是测量较短时间的时间。高分辨率计时器没有与实时时钟相同的功耗问题,因为在关闭主机电源时,它们没有工作要做。
我认为使用实时时钟的主要原因是在一定时间间隔内的准确时间。常规时钟通常会用电容器进行修整,并可能基于多种因素(例如时钟时序电路的电容/电阻失调,时钟时序电路的不确定性)失控而导致频率差异较大。既可以达到提高性能的目的,也经常有可编程逻辑来划分时间,而这又会引入错误。
通常,RTC可以具有计时器和看门狗等。与之耦合的是,可以保证或良好地假设,将以规则的精确间隔(甚至可以与各种事物保持同相)执行给定的过程或代码。使用常规时钟很难做到这一点。否则您需要在生产中非常小心时钟是准确的。您会看到诸如音频之类的东西,以及使用rtc代替高速系统时钟可能不需要的东西。
至于RTC的含义,我不能肯定地说。我知道Linux是嵌入式世界中流行的工具,但是我不确定Linux在所有实时应用程序中的表现如何。多线程可以使执行时间不确定,但是当硬件大大超过性能要求时,即使在实时应用程序中,许多解决方案也可以正常工作。
然后是关键任务和低性能应用程序。这里需要做的一件事是确定性的并且通常是较低复杂度的解决方案。在这里可以明显地使用RTC。Linux可能提供对与其耦合的中断的特殊访问。在我看来,对于确定性实时,您不仅需要rtc,而且需要中断或os访问它们。
如果您依赖与互联网上其他计算机的安全通信,则需要一个实时时钟(并非必须100%拥有,但是如果您没有本地时间参考,则需要信任其他东西,并且可以) t信任证书,除非您知道日期)。
因此,不,您不需要所有“实时”系统。但是,根据您的应用程序,您可能仍希望RTC处于低功耗状态后,它是获取良好时机的最节能方式。