Embedded Linux - Systemzeit über GPS setzen

Gast #2741212
Guten Abend!

Ich habe hier ein Linux System basierend auf AT91RM9200, das keine 
(batteriegepufferte) Echtzeituhr hat. Es hat aber ein GPS-Modul auf der 
Platine, und dieses wiederum ist mit einer Pufferbatterie versehen.

Das GPS-Modul ist über die serielle Schnittstelle erreichbar (NMEA, 
9.600 Baud). Das PPS-Signal ist nicht angeschlossen.

Folgende Aufgabe: Nach dem Booten soll vom GPS-Modul die Zeit geholt 
werden und die Systemzeit entsprechend gesetzt werden. Dabei kommt es 
nicht auf eine sekundengenaue Synchronisation an. Es geht mir 
hauptsächlich darum, dass das Gerät - es handelt sich um einen 
Datenlogger, auf meiner SD-Karte Dateien mit halbwegs stimmigem Datum 
anlegt.

Es reicht also völlig, wenn die Systemzeit einmal gesetzt wird und dann 
langsam vom GPS wegdriftet.

Gibt es dafür ein Tool? Am besten irgendetwas, was man in den 
Bootskripten aufrufen kann, das sich einen NMEA-Datensatz holt und die 
Systemzeit liest, und anschließend die serielle Schnittstelle wieder 
freigibt? Denn diese wird vom anschließend startenden Anwendungsprogramm 
nämlich benötigt.

Oder wie würdet ihr das angehen? Ich hatte schon eine Menge gesucht, 
aber nichts gefunden. Es soll auch einen ntpd geben, der mit NMEA-Daten 
klarkommt. Dann bräuchte man wahrscheinlich gpsd, damit mehrere Prozesse 
gleichzeitig auf das GPS-Modul zugreifen können. Das heißt, ich müsste 
meine Logger-Anwendung umschreiben, was ich möglichst vermeiden möchte.

Freue mich über jeden Tipp!
Gast #2741267
>Systemzeit liest, und anschließend die serielle Schnittstelle wieder
>freigibt? Denn diese wird vom anschließend startenden Anwendungsprogramm
>nämlich benötigt.

Wie wirst du das GPS Modul an der Schnittstelle wieder los?
Gast #2741275
Ueberlegung:

Ein Shellscript schreiben, welches ein kleines Programm startet (von dir 
erstellt). Dieses Programm greift auf TTY zu, liest einen Satz Daten und 
spuckt dir dann ein "date"-konformes Datum aus.
Dieses Datum leitest du dann an "date" weiter.
Nachdem dies geschehen ist, startet das Script deinen Logger.

Gruesse,
Richard
Gast #2741284
> Wie wirst du das GPS Modul an der Schnittstelle wieder los?

Was ich meinte war, dass die Schnittstelle als solche wieder freigegeben 
wird, d.h. kein Prozess im Hintergrund läuft, der die Schnittstelle 
offen hält. Denn mein Applikationsprogramm möchte ebenfalls das 
GPS-Modul nutzen.

> Ein Shellscript schreiben, welches ein kleines Programm startet (von dir
> erstellt). Dieses Programm greift auf TTY zu, liest einen Satz Daten und
> spuckt dir dann ein "date"-konformes Datum aus.
> Dieses Datum leitest du dann an "date" weiter.

sfz

So werde ich es wohl machen müssen. Schade, ich dachte so ein Tool gibt 
es vielleicht schon.
Gast #2741290
holger schrieb:
> Wie wirst du das GPS Modul an der Schnittstelle wieder los?

Das will er nicht. Er hat eine Anwendung verpfuscht, indem sie direkt 
auf die Schnittstelle des Moduls zugreifen muss, doch jetzt fiel ihm 
ein, dass er irgendwie auch noch die Systemzeit von der Schnittstelle 
holen und setzen muss.

Man könnte das jetzt richtig machen (Anwendung holt Daten von gpsd, gpsd 
schreibt gleichzeitig Daten für ntpd in Shared Memory) oder man versucht 
sich durchzuwurchteln.
Gast #2741379
Nein, er macht das jetzt richtig, mit gpsd. Weil es ja so schön Mode 
ist, möglichst viele Layer übereinanderzupacken. Irgendwo muß der 
Overhead für das Auslasten eines ARM9 ja herkommen.

Gleichzeitig vergibt er dir noch 10 Extrapunkte für über den Standard 
dieses Forums hinausgehende Höflichkeit.
Gast #2741436
Ja, ja, ist schon schlimm, wenn sich der eigene Pfusch nicht so einfach 
zukleistern lässt. Echte Männer benutzen ja gar keine Treiber, kein 
Betriebssystem, keine Programmierbibliothek und schon gar keine 
Hochsprache wie C. Neumodischer Layerscheiss. Echte Männer machen auch 
nicht auf Mädchen und heulen über den Standard des Forums heulen. 
Taschentuch? Bei der Mami anrufen?
Gast #2741547
Die Verwendung eines GPS antelle einer RTC ist fragwuerdig. GPS bedingt 
Sicht zu einem Teil des Himmels. Ich glaube nicht das meine Systeme 
damit rechnen koennen. Und wenn sie in einem Metallgehause eingebaut 
sind sowieso nicht. Wenn sie nicht in einem Metallgehause eingebaut sind 
hat man moeglicherweise EMV Probleme.
#2741551
sieben von neun schrieb:
> Die Verwendung eines GPS antelle einer RTC ist fragwuerdig. GPS bedingt
> Sicht zu einem Teil des Himmels.

Wer lesen kann ist klar im Vorteil. Er schreibt ja, dass er in seiner 
"richtigen" Applikation auch das GPS-Modul braucht.
Also kann man wohl davon ausgehen, dass die Sicht zum Himmel 
gewährleistet ist, sonst funktioniert es eh nicht.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.