Unter der Annahme, dass wir an einem Echtzeit-Linux-System und einer Hardware arbeiten, die aus hochauflösenden Timern besteht, wirkt sich eine RTC auf die Echtzeit des Systems aus?
Hier heißt es, dass es die CPU- und Speicherauslastung reduziert, aber gibt es eine Möglichkeit, den Unterschied irgendwie zu vergleichen?
Antworten:
Der Artikel, den Sie verlinkt haben, ist einfach vollständig und völliger Unsinn. Die "Echtzeit" in der "Echtzeituhr" (wie sie für den im Artikel beschriebenen Typ des Hardward-Geräts verwendet wird) und die "Echtzeit" in "Echtzeitsystemen" sind völlig unterschiedliche Begriffe. Ersteres bedeutet, die aktuelle Kalenderzeit zu speichern (normalerweise eine sehr schlechte Annäherung daran, im Gegensatz zu einer hohen Präzision wie im verlinkten Artikel behauptet) und sie ohne externe Stromversorgung mit einer langlebigen Knopf- / Münzbatterie voranzutreiben. Letzteres bedeutet, auf Ereignisse mit harten Grenzen für die Latenz vom Zeitpunkt des Ereignisses bis zum Zeitpunkt der Antwort zu reagieren.
Ein paar andere Teile aus dem Artikel, um festzustellen, dass er als nicht vertrauenswürdig angesehen werden sollte:
1 Sek. In 100 Jahren sind ungefähr 317 ppt (ja, das sind Teile pro Billion ). Diese Art von Taktstabilität kann mit keiner im Handel erhältlichen Uhrentechnologie erreicht werden. Selbst wenn 1 Sekunde pro Jahr erreicht wird, ist mindestens ein OCXO erforderlich, für den ein leistungsstarker, ständig eingeschalteter Ofen erforderlich ist, der die Temperatur reguliert. Die Idee, es mit einem Gerät zu bekommen, das mit einer langlebigen Münzbatterie betrieben wird, ist lächerlich.
Keines davon würde man Echtzeitsysteme nennen.
quelle
Echtzeitsysteme sind etwas, das auf ein internes oder externes Ereignis / einen internen Stimulus in einer bestimmten Zeit reagiert und diese Zeit normalerweise in Milli- oder Mikrosekunden beträgt. Es benötigt einen Timer mit geringer Präzision anstelle von RTC.
Die Antwort auf Ihre Frage lautet "Nein". Dies hat keinen Einfluss auf die tatsächliche Aktualität des Systems.
quelle
Wenn Ihr System nach dem Zurücksetzen und der RTC offline ist, kann es die richtigen Daten in die Protokolle einfügen. Protokolle können sehr umfangreich sein, falls Sie sie durchsehen müssen. Ein falscher Zeitstempel macht Sie, Ihre Softwareentwickler und Kunden verrückt und im Allgemeinen fast unmöglich.
Leicht oder schwierig, niedrig oder hoch in dem Artikel, auf den Sie sich beziehen, ist eine Art persönliche Meinung. Es ist schwierig und kostspielig, wenn Sie es noch nie zuvor getan haben und keine klaren Systemanforderungen und Arbeitsaufstellungen haben. und es ist einfach und billig, wenn Sie wissen, was Sie brauchen und welches Gerät am besten geeignet ist.
quelle
Dies scheint ein terminologisches Problem im Zusammenhang mit der Verwendung des Begriffs "Echtzeit" zu sein.
Echtzeituhr
Eine Echtzeituhr ist ein Gerät zur stabilen / genauen (innerhalb einiger Toleranz) Zeitmessung, sodass das Host-System damit Ereignisse / Aktionen mit der Zeit und dem Datum des Auftretens verknüpfen kann.
Sie können sich eine Echtzeituhr als analog zu den Innereien einer an den Computer angeschlossenen Digitaluhr vorstellen. Es verfügt über eine unabhängig betriebene Zeitreferenz, die stabil und relativ genau ausgelegt ist. Wie bei einer Digitaluhr wird die aktuelle Uhrzeit nicht aus den Augen verloren, nur weil der Host-Computer heruntergefahren wurde. Echtzeituhren wurden hauptsächlich aus praktischen Gründen an Computern angebracht, damit der Benutzer nicht bei jedem Systemstart die aktuelle Uhrzeit und das aktuelle Datum erneut eingeben oder häufige Anpassungen vornehmen muss, um Abweichungen auszugleichen.
Die Alternative zu einer Echtzeituhr wäre die Verwendung von Software und internen Zeitgebern, die von der Systemuhr gesteuert werden. Ein solcher Ansatz ist praktikabel (der ursprüngliche IBM-PC hat auf diese Weise funktioniert), ist jedoch nicht besonders stabil. Außerdem verliert es zu jedem Zeitpunkt, an dem das Betriebssystem heruntergefahren wird, hängt oder abstürzt, den Überblick über Datum und Uhrzeit.
Echtzeitsystem
Wenn der Begriff "Echtzeit" auf ein Computersystem oder eine Anwendung angewendet wird, beschreibt er ein System, das in sehr kurzer, deterministischer Zeit auf reale Ereignisse reagiert - oft nur wenige Millisekunden, manchmal weniger, mit definierter Reihenfolge von gleichzeitigen Eingaben. Echtzeitsysteme werden beispielsweise für die Maschinensteuerung verwendet - Robotik, Simulationen und Spiele. Obwohl eine Echtzeitanwendung möglicherweise aktuelle Zeit- und Datumsinformationen verwendet, ist eine Anwendung nicht "Echtzeit", nur weil sie die aktuelle Uhrzeit und das aktuelle Datum verwendet.
Echtzeituhren gegen hochauflösende Timer
Wie oben erwähnt, besteht der Zweck einer Echtzeituhr darin, das aktuelle Datum und die aktuelle Uhrzeit zuverlässig zu verfolgen, im Allgemeinen nur auf die Sekunde genau. Ein guter hat eine minimale Drift (Sekunden, die jeden Tag gewonnen oder verloren werden). Echtzeituhren haben im Allgemeinen keine hohe Auflösung. Ihre Basistakte laufen im Vergleich zu modernen CPU-Takten oft recht langsam. Dies dient dazu, den Stromverbrauch zu minimieren (Stromverbrauch an der unabhängigen Stromquelle), damit die Uhr weiterhin zuverlässig die Zeit hält, wenn der Host-Computer über einen längeren Zeitraum ausgeschaltet wird.
Ein hochauflösender Timer befasst sich nicht mit der aktuellen Uhrzeit oder dem aktuellen Datum. Sein Zweck ist es, Zeitintervalle mit einer gewissen Genauigkeit zu messen, vielleicht Mikrosekunden oder sogar weniger. Um dies zu erreichen, muss es auf einem stabilen Hochfrequenztakt basieren - typischerweise dem Computersystemtakt. Hochauflösende Timer befassen sich normalerweise auch nicht mit Drift über lange Zeiträume, da der übliche Zweck die Zeitmessung über kurze Zeiträume ist. Hochauflösende Timer haben nicht den gleichen Stromverbrauch wie Echtzeituhren, da sie bei ausgeschaltetem Host-Computer keine Aufgabe haben.
quelle
In den meisten Systemen besteht der einzige wirkliche Vorteil eines RTC-Peripheriegeräts gegenüber anderen Formen der Zeitmessung darin, dass die Zeitmessungen des RTC nicht beeinflusst werden, wenn der Rest des Systems in den Ruhezustand wechselt oder - in einigen Fällen - vollständig ausgeschaltet wird. Viele RTC-Peripheriegeräte sind in der Tat so konzipiert, dass sie für die meisten anderen Zwecke als die Aufzeichnung der ungefähren Tageszeit unpraktisch sind. Viele RTC-Peripheriegeräte (wahrscheinlich eine Mehrheit, aber möglicherweise keine Supermajorität) sind beispielsweise auf die Berichtszeit in Schritten von einer Sekunde beschränkt, und viele von ihnen erfordern zumindest manchmal ein Warten auf die Synchronisation, wenn ein Alarm oder ein Einstellen eingestellt wird einige Fälle - sogar einfach versuchen, die Zeit zu lesen. Infolgedessen besteht die normale Art, eine RTC zu verwenden, darin, ihren Wert beim Start einfach auf eine nützlichere Uhr zu kopieren und sie immer dann einzustellen, wenn "Wandzeit" eingestellt ist.
und vier aufeinanderfolgende Lesevorgänge würden garantiert zwei enthalten, die übereinstimmen (und somit korrekt sind), es sei denn, zwischen dem ersten und dem letzten vergehen mehr als 1/32768 Sekunden. Das Einstellen des Alarms kann zu falschen Weckereignissen führen, aber die Reihenfolge:
sollte alle Randfälle so leicht handhaben können, dass sie für die allgemeine Zeitmessung geeignet sind. Leider sind RTC-Peripheriegeräte aus irgendeinem Grund nie so konzipiert, sondern komplizierter und weniger nützlich.
quelle
Ich denke, der Hauptgrund für eine Echtzeituhr ist die genaue Zeit in bis zu einem gewissen Intervall. Der reguläre Takt wird normalerweise mit Kondensatoren getrimmt und kann größere Frequenzabweichungen aufweisen, die auf einer Vielzahl von Faktoren beruhen, die möglicherweise außer Kontrolle geraten, wie z. B. falsch eingestellte Kapazität / Widerstand der Taktzeitschaltung, Unsicherheit in der Zeitsteuerung des verwendeten Takts dient dem Duellzweck für die Leistung, und es gibt oft eine programmierbare Logik, um die Zeiten zu teilen, was wiederum zu Fehlern führen kann.
Normalerweise kann die RTC Timer und Wachhunde usw. haben. Sie ist mit ihr verbunden, was eine garantierte oder gute Annahme gibt, dass in regelmäßigen, präzisen Intervallen, die sogar mit verschiedenen Dingen in Phase bleiben können, bestimmte Prozeduren oder Codes ausgeführt werden. Mit einer normalen Uhr ist das nicht einfach. Oder Sie müssen in der Produktion sehr vorsichtig sein, dass die Uhr genau ist. Sie können Dinge wie Audio sehen und was möglicherweise nicht benötigt wird, um den RTC anstelle der Hochgeschwindigkeits-Systemuhr zu verwenden.
Was RTC bedeutet, kann ich selbst nicht mit Sicherheit sagen. Ich weiß, dass Linux ein weit verbreitetes Tool in der Embedded-Welt ist, bin mir jedoch nicht sicher, wie gut es für alle Echtzeitanwendungen funktioniert. Multithreading kann die Ausführungszeiten nicht deterministisch machen. Wenn die Hardware jedoch die Leistungsanforderungen erheblich überschreitet, funktionieren viele Lösungen auch in Echtzeitanwendungen einwandfrei.
Dann gibt es geschäftskritische und leistungsschwache Anwendungen. Eine wünschenswerte Sache ist hier eine deterministische und oft weniger komplexe Lösung. Hier kann natürlich die RTC verwendet werden. Linux bietet möglicherweise speziellen Zugriff auf die damit gekoppelten Interrupts. Es scheint mir, dass Sie für deterministische Echtzeit nicht nur einen RTC benötigen, sondern auch Interrupts oder OS-Zugriff auf sie.
quelle
Sie benötigen eine Echtzeituhr, wenn Sie sich auf eine sichere Kommunikation mit anderen Computern im Internet verlassen (nicht zu 100%, aber wenn Sie keine lokale Zeitreferenz haben, müssen Sie etwas anderem vertrauen, und Sie können ' t Zertifikaten nur vertrauen, wenn Sie das Datum kennen).
Nein, Sie benötigen nicht eines für alle Echtzeitsysteme. Abhängig von Ihrer Anwendung möchten Sie jedoch möglicherweise immer noch eine RTC als energieeffizienteste Methode, um nach einem Energiesparmodus eine gute Zeitkorrektur zu erzielen.
quelle