Ist eine Echtzeituhr (RTC) für Echtzeitsysteme erforderlich? [geschlossen]


11

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?


12
Der Vergleich im Link ist einfach albern.
Pipe

9
Ja, @pipe und obendrein sind sogar die Zahlen völlig falsch. Ich kaufe gerne den DS12C887-teuren RTC-Chip mit "1 Sek. Fehler in 100 Jahren". Tatsächlich werde ich so viele kaufen, wie meine Ersparnisse mir erlauben, zu kaufen. Das ist eine Genauigkeit von 300 ppb. Über 100 Jahre. Das ist genau dort eine ernsthafte Frequenzgüte.
Marcus Müller

8
Echtzeitsysteme und Echtzeituhr sind verschiedene Dinge und es gibt keinen Vergleich. RTC dient der Zeitmessung und das Echtzeitsystem wird verwendet, um Echtzeitzwecken (nicht wie in UTC, sondern wie in Schnelligkeit) zu dienen
MaNyYaCk

2
@pipe DS12C887, 100-Jahres- Planversion .
Marcus Müller

3
@ JimmyB Uhren wie diese sind für das Timing , nicht für die Zeit ! Selbst wenn Sie eine Referenz-Epoche haben, setzen wir diese im Allgemeinen auf TAI (oder GPS) und wenden die entsprechende UTC-Korrektur an, wenn wir UTC benötigen. Bei GPS stammt dieser Korrekturparameter aus der Ephemeride. UTC ist in diesem Sinne eine Art "Zeitzone". Ebenso setzen Sie Ihre Uhr nicht zurück, wenn die Sommerzeit in Kraft tritt, und warten, bis sie sich wieder stabilisiert hat. Es gibt nichts zurückzusetzen, da die Uhr Impulse und keinen Zeitstempel liefert.
Leichtigkeit Rennen mit Monica

Antworten:


39

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:

Fast vernachlässigbar. In der Größenordnung von 1 Sek. In 100 Jahren

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.

Echtzeitsysteme wie Digitaluhr, Anwesenheitssystem, Digitalkamera

Keines davon würde man Echtzeitsysteme nennen.


1
Tatsächlich haben diese Systeme höchstwahrscheinlich Echtzeitkomponenten, wenn auch "weiche Echtzeit", da die Konsequenzen des Fehlens / Überlaufens eines Verarbeitungs-Ticks gering sind. Nicht in dem fehlgeleiteten Sinne, den der Autor des Links dachte.
Graham

2
@ Abraham: In gewissem Sinne tun sie das, aber die Ränder sind so groß, dass Sie sie im Allgemeinen als nicht in Echtzeit betrachten. Letztendlich ist jedes interaktive System in Echtzeit, wenn Sie die Definition weit genug erweitern, denn wenn es Minuten oder Stunden lang nicht reagiert, geht jemand davon aus, dass es abgestürzt ist. :-) Ich denke, es ist nur nützlich, etwas als "Echtzeit" zu kategorisieren, wenn es kleine Ränder und schwerwiegende Konsequenzen für das Fehlen gibt.
R .. GitHub STOP HELPING ICE

3
@R .. Nicht alle Systeme sind in Echtzeit, auch mit großen Margen. Wenn ein System ist fähig auf unbestimmte Zeit hängen, kann es nicht ein Echtzeit - System sein. Die Systeme müssen die absolute Garantie haben, dass ein Zeitfenster nur eine begrenzte Zeit in Anspruch nimmt und ein Hang (Deadlock / Livelock) per Definition unendlich ist.
Wald

2
Eine Metadiskussion darüber, was genau ein Echtzeitsystem ist, gehört jedoch nicht in einen Kommentarbereich.
Pipe

1
@Uwe: In der Tat habe ich es vermasselt, aber jetzt, wo ich es mir noch einmal ansehe, denke ich, dass ich um 2 Faktoren von 10 abwesend bin - sollte es nicht 0,316ppb sein? Abbildung als 1s / (100 * secs_per_year) wobei secs_per_year = 31556952.
R .. GitHub STOP HELPING ICE

39

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.


1
Dies ist eine kurze und präzise Antwort auf die Frage IMO.
Rev1.0

Einige Bundesbehörden wie Banken verwenden 1ns RTCs in ihren Servern, basierend auf Atomuhren. Selbst ein Hinweis auf Manipulationen an den Mikrowellenverbindungen ändert die Laufzeit zum Empfänger. Schnelle RTC auch gut für mehrphasige Semaphoren.
Sparky256

4
Einige Echtzeitsysteme benötigen keinen Timer, da sie vollständig ereignisgesteuert sind und keines der Ereignisse zeitbasiert sein muss. Das System muss nur auf jedes Ereignis innerhalb des für dieses Ereignis festgelegten Zeitraums reagieren, auch wenn mehrere Ereignisse sehr nahe beieinander auftreten. In einigen Fällen kann ein präventiver Kernel erforderlich sein. Externe Timer können verwendet werden, um zu überprüfen, ob das System innerhalb seiner Zeitbeschränkungen arbeitet.
rcgldr

2
Wenn Sie ein Beispiel aus der Praxis wünschen, ist das OS-9-Betriebssystem von MicroWare für die Prozessoren Motorola 6809 / Hitachi 6309 ein Echtzeit-Betriebssystem. Die Tandy Color Computer-Serie verwendete 6809s und lief unter OS-9 (meine erste Exposition gegenüber einem * nix-ähnlichen Betriebssystem). Echtzeituhren waren auf diesem System nie Standardausrüstung und für die Funktion von OS-9 nicht erforderlich.
Zmerch

3

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.


Die Frage ist, wie die reduzierte CPU-Zeit und Speicherauslastung einer RTC im Vergleich zu keiner RTC in einem Echtzeitsystem quantifiziert werden kann. Ihre Antwort beantwortet das nicht.
Pipe

1
@pipe Dies hängt von der CPU-Architektur und den Anforderungen ab. Es ist einfach nicht möglich, mit knappen Informationen zu antworten. Meine Antwort sagt, warum RTC dort drin sein muss, anstatt generisch bla-bla darüber, wie es ohne es sein könnte. Programmierer und Systemarchitekt können ein gutes System und einen guten Code sowie ein schlechtes System und einen schlechten Code in Bezug auf die für das Timing aufgewendete Zeit entwerfen.
Anonym

3

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.


Als kleines Problem wird "kürzestes [...] möglich" nicht als Echtzeit betrachtet. Echtzeit ist eine Antwort in deterministischer Zeit oder mit definierter Reihenfolge, wenn mehrere Ereignisse gleichzeitig auftreten.
Awjlogan

2

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:

  • Deaktivieren Sie den Interrupt von der Weckverriegelung
  • Stellen Sie die Weckzeit für bis zu 0x7FFFFFFF-Ticks (ca. 9 Stunden) vor der Gegenwart ein
  • Weckkreis zurücksetzen
  • Lies die Uhr
  • Wenn die neu gelesene Zeit anzeigt, dass die Weckzeit erreicht wurde, handeln Sie entsprechend
  • Aktivieren Sie den Interrupt vom Weck-Latch

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.


"Echte" RTCs bieten auch Kalenderfunktionen (Tag des Monats, Wochentag, Schaltjahre, ...), deren Implementierung in Software möglicherweise umständlich ist.
JimmyB

@JimmyB: Software, die mit Datums- und Uhrzeitangaben alles tun muss, was nicht trivial ist, enthält im Allgemeinen ohnehin eine solche Logik. Die Möglichkeit, die Dinge im linearen Format zu halten, außer wenn Benutzer-E / A ausgeführt werden, wäre viel sauberer als die Konvertierung von nutzlosen Daten BCD YMDhms auf lineare Zeit jedes Mal, wenn die RTC gelesen und beim Schreiben wieder in das nutzlose fromat konvertiert wird.
Supercat

@JimmyB: Als einfaches Beispiel, wenn man das System um 2016-03-01 00:30 einschalten würde und es zuletzt um 2015-10-01 um 00:30:00 eingeschaltet wurde, was Zeit wäre es? Die Software muss wissen, dass der Februar 2016 29 Tage hatte, um festzustellen, dass die Zeit am 29.02.2015 um 23:30:00 Uhr war. Was genau kauft die Kalenderhardware?
Supercat

Der im OP referenzierte RTC-Chip handhabt Schaltjahre korrekt von selbst.
JimmyB

"Software, die alles tun muss, was mit Datum und Uhrzeit nicht trivial ist" Sicher. Aber eine RTC ist nur eine Uhr . Es sagt Ihnen, wie spät es ist, wenn Sie danach fragen. Es berechnet Ihr Alter nicht in Sekunden für Sie. Also , wenn Sie das RTC Ihre Log - Einträge zeitzustempeln wollen , ist alles , was Sie brauchen , und Sie müssen nicht beschäftigen jede Art von Datum / Uhrzeit math. Wenn Sie zu bestimmten Zeiten willkürliche Berechnungen durchführen möchten, ist dies für Sie nicht von großem Nutzen.
JimmyB

0

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.


Wie genau kann die Kopplung einer RTC an einen Watchdog sicherstellen, dass die Uhr "mit verschiedenen Dingen in Phase" bleibt?
Dmitry Grigoryev

Okay, wenn Sie eine externe Taktquelle verwenden, sind Sie von dieser Quelle sowie den Schaltkreisen, die sie verbinden, wie Kapazität und Widerstand oder Impedanz, abhängig. Dies wird also durch harmonische Schwingungen beschrieben, deren Lösung eine Welle ist und die dann den Phasenwinkel usw. sehen, sowie durch die Anwendung eines Mikroprozessors, um alles zu beantworten, was Sie gerade gefragt haben. All dieses Zeug muss leider in vielen Anwendungen berücksichtigt werden.
Marschall Handwerk

0

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.


Das stimmt nicht ganz. Sie können beispielsweise einem Zertifikat (insbesondere einem angehefteten) vertrauen, obwohl es abgelaufen ist oder theoretisch in der Zukunft ausgestellt wurde. Im Allgemeinen ist es jedoch eine bessere Idee, Ihren NTP-Fix zu erhalten, bevor Sie versuchen, ein SSL-Client zu sein. Natürlich müssen Sicherheitsschemata für NTP so konzipiert sein, dass sie funktionieren, ohne mit einer vernünftigen Vorstellung von der Zeit beginnen zu müssen.
Chris Stratton

3
Grob übertrieben und während Übertreibung eine herzerwärmende und schöne Sache ist, ist sie falsch, wenn sie die Hauptbotschaft bildet. Keine der Betriebsarten von Chiffren erfordert grundsätzlich die Uhrzeit oder das Datum.
Paul Uszak
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.