Einrichten der Himbeere als Datenlogger


13

Wie der Titel besagt, arbeite ich an einer einfachen eingebetteten Anwendung, die einige Informationen von der seriellen Schnittstelle liest und sie in einer Datei protokolliert. Außerdem wird auf dem Display ein bisschen Status angezeigt.

Ich bin jetzt in der Phase, in der die Protokollierung zu laufen scheint, und ich versuche, das System zu konfigurieren, und ich habe ein paar Fragen.

  1. Das System dient zum Protokollieren von Daten auf einem FAT32-USB-Stick, der jederzeit ausgesteckt, neu eingesteckt oder ausgetauscht werden kann. Was ist die bevorzugte Methode, um einen eingesteckten USB-Massenspeicher automatisch in ein festes Verzeichnis zu laden? Das usbmount-Paket scheint dies fast zu tun, aber die mangelnde Wartung macht etwas vorsichtig.

  2. Ich kann die Stromversorgung nicht garantieren und kann keine sauberen Abschaltungen durchführen. Glücklicherweise sollten die einzigen Dateien, die außer den internen Betriebssysteminformationen geschrieben werden, die Protokolle sein. Rettet mich ein Journalling-Dateisystem für das Betriebssystem vor mir selbst oder sollte ich das System schreibgeschützt einbinden oder an RAM-Datenträgern basteln?

  3. Überlebt und erholt sich das FAT-Dateisystem auf dem USB-Stick nach Stromausfällen und plötzlichen Auswürfen? Soll ich jedes Mal eine neue Protokolldatei erstellen, wenn sie bereitgestellt wird?

  4. Ich habe den X-Server so eingerichtet, dass er automatisch startet, und habe mit den LXDE-Autostart-Skripten herumgespielt, um die Statusanzeige zu starten und den Fenstermanager / Bildschirmschoner zu deaktivieren. Gibt es noch andere Gründe für die Aufrechterhaltung einer kontinuierlichen Anzeige?

  5. Der Logger hat keinen Ethernet-Zugang und benötigt eine genaue Uhr. Ist das RasClock-Modul eine geeignete Option?

Entschuldigung für den langen Beitrag und die vielen halbbezogenen Fragen.

Ich bin es gewohnt, mit einfachen eingebetteten Geräten umzugehen, für die ich die volle Kontrolle über die Software habe, und die Aufgabe, ein echtes Betriebssystem richtig zu konfigurieren, macht mir etwas Sorgen. Andererseits vermute ich eher, dass ich nicht der einzige bin, der den Pi für diese Art von Anwendung (ab-) verwendet, so dass die Fragen hoffentlich nicht zu spezifisch für meine spezielle Situation sind.


Beschreiben Sie Ihre funktionierende USB-> serielle Lösung irgendwo, damit andere potenzielle Datenlogger sie ausprobieren können? Ich bin sehr daran interessiert, aus meinem Scraper / Logger / Webcam Pi einen Mehrwert zu ziehen. Vielen Dank!
Tai Viinikka

Antworten:


7

Das System dient zum Protokollieren von Daten auf einem FAT32-USB-Stick, der jederzeit ausgesteckt, neu eingesteckt oder ausgetauscht werden kann.

Der unplugged Teil davon ist problematisch. AFAIK, kein Computersystem irgendwo verspricht Ihnen das Recht, einen USB-Stick jederzeit und ohne potenzielle Probleme unangekündigt herauszuziehen. Sie müssen sich also überlegen, wie Sie das umgehen können.

Ich kann die Stromversorgung nicht garantieren und kann keine sauberen Abschaltungen durchführen.

Wiederum ist das plötzliche Ausschalten (fast) aller Computersysteme riskant. Es endet normalerweise in Ordnung (wer hat das nicht ein paar Mal getan, aus Versehen, wegen eines Stromausfalls usw.?), Aber es scheint ungewöhnlich viele Leute zu geben, die SD-Karten-Korruption mit dem Pi melden. Also, wenn Sie meinen, "Meistens wird das System nicht sauber heruntergefahren", müssen Sie umdenken, denn das wird eine Sackgasse sein. Beachten Sie, dass das Herunterfahren auch ohne Tastatur oder Netzwerkverbindung möglich ist. Sie können auch eine ähnliche Methode verwenden, um eine saubere Demontage des USB-Sticks auszulösen.

Sie können die syncOption hinzufügen, um das /etc/fstabZwischenspeichern einzuschränken. Beachten Sie jedoch man mountFolgendes:

Bei Medien mit einer begrenzten Anzahl von Schreibzyklen (z. B. bei einigen Flash-Laufwerken) kann "sync" zu einer Verkürzung des Lebenszyklus führen.

Dies gilt auch für SD-Karten. Solange Sie jedoch daran denken, Ihre Medien gelegentlich zu testen (und gegebenenfalls zu ersetzen), kann sich dies lohnen. Dies wird sich meiner Meinung nach leicht auf die allgemeine Leistung auswirken.

Versuchen Sie also zu vermeiden, dass Sie den Stecker oder den USB-Stick plötzlich ziehen, so gut Sie können, und entwerfen Sie auf keinen Fall ein Setup, das davon abhängt. Sagen Sie sich selbst oder anderen Benutzern beispielsweise nicht, dass es in Ordnung ist, den USB-Stick jederzeit zu entfernen, da dies nicht der Fall ist und Sie dies nicht tun können.

Das Tätigen geeigneter syncAufrufe in Ihrer Anwendung (z. B. im Leerlauf oder nach einem wichtigen Schreibvorgang) ist eine gute Idee.

Sobald Sie haben alles , was Sie installiert und konfiguriert werden soll , können Sie möglicherweise das Root - Dateisystem mounten schreibgeschützt, wenn Sie erstellen Sie separate Partitionen für /var, /run, und /tmpund jene rw montieren; Sie können auch eine solche gemountete Partition erstellen und die rw-Verzeichnisse damit verknüpfen.

Auf einem Raspbian-Pi müssen Sie sich keine Sorgen machen /run, da es sich bereits um tmpfs (RAM) handelt. /sysund /procbefinden sich ebenfalls im RAM (aber verwenden Sie sie nur für den vorgesehenen Zweck). Wenn das System für einen einzigen Zweck vorgesehen ist und alle Ihre Daten auf den USB-Stick übertragen werden, /varist dies das einzige Problem, aber meiner Meinung nach nicht kritisch.


Unser Hauptproblem besteht darin, dass die Stromversorgung während eines Notstopps jederzeit unterbrochen werden kann. Ich gehe davon aus, dass dies während des Testens häufig vorkommt (daher ist zunächst ein Logger erforderlich). Ich werde prüfen, ob wir vielleicht eine Pufferbatterie für den Pi anbringen und vielleicht eine Art Sensor anschließen, um einen Stromausfall zu erkennen. Mein Leben wäre jedoch viel einfacher, wenn das Root-Dateisystem im schreibgeschützten Modus bereitgestellt und der USB-Speicher durch regelmäßige Löschvorgänge und dergleichen geschützt würde.
Doynax

@doynax: Es ist möglich, das mit dem Root-Dateisystem RO auszuführen. Ich habe noch keine Erfahrung damit, aber ich habe am Ende ein paar Absätze hinzugefügt, die meiner Meinung nach die Grundbedenken betreffen.
Goldlöckchen

2

Früher habe ich an Gerätetreibern gearbeitet, die Speicherkarten lesen / beschreiben. Sie könnten in der Mitte einer Operation herausgerissen werden, so dass selbst durch Batterie oder Kondensator gesicherte Energie nicht helfen würde. Basierend auf den Formatierungsspezifikationen der Chips habe ich das Verhalten abgeleitet, das erforderlich ist, um minimalen Schaden durch "heißes" Entfernen und Einsetzen zu verursachen.

Grundsätzlich müssen Sie sicherstellen, dass Sie die Tatsache erkennen, wenn Sie während des Schreibvorgangs eines Datenblocks abgeschnitten sind (oder die Kontakte unruhig sind). Grundsätzlich muss den Daten eine Blocknummer (und eine Länge, wenn nicht eine feste Größe) vorangestellt und am Ende eine crc und (dieselbe) Blocknummer angehängt werden.

Der erste Schreibvorgang erfolgt am Ende mit einem Wert, der NICHT die nächste Blocknummer ist. Auf diese Weise tritt eine Blocknummer-Nichtübereinstimmung auf, wenn der Schreibvorgang nicht abgeschlossen wird, und dieser Datenblock ist als Müll bekannt. Dann schreiben Sie Ihren Datenblock mit der realen Blocknummer, gefolgt von der Länge, gefolgt von Ihrer von Ihrem bevorzugten Algorithmus generierten CRC und der realen Blocknummer. (Der CRC dient zum Schutz vor blitzschnellen Kontakten, die Ihre Daten beschädigen.)

Wenn die Stromversorgung wiederhergestellt oder die Speicherkarte wieder eingesetzt wird, akzeptieren Sie sequentielle Blöcke nur bis zu dem Punkt, an dem die Anfangs- und Endsequenznummern des Blocks nicht übereinstimmen oder die CRC falsch ist. Entfernen Sie diesen Block und setzen Sie die Protokollierung fort.

Dies ist jedoch ein Teil auf niedrigem Niveau. Dies über ein Dateisystem zu tun, ist eine andere Geschichte.

Was Sie wirklich brauchen, sind redundante Kopien Ihrer FAT, und machen Sie eine ähnliche Sache um die FAT-Tabelle. Anhand der fortlaufenden Nummer können Sie erkennen, welche Version aktuell ist. Die Übereinstimmung von Vorderseite und Rückseite sowie die CRC gewährleisten die Integrität.

Es ist nach dem Zubettgehen und ich hoffe, das ist klar genug.


1

Bezüglich der genauen Uhr gibt es viele günstige GPS-Module. Es ist schwer eine genauere Uhr zu finden.


Das ist ein ausgezeichneter Vorschlag. Sparen Sie uns die Mühe, die Uhr einzustellen und mit der Batterie umzugehen. Wir müssen nur die Zeitzone (und die DST-Regeln, nehme ich an) im Auge behalten, und für einen reinen Datenlogger sollte die Weltzeit in Ordnung sein.
Doynax

Funktioniert ein GPS-Modul in Innenräumen, wenn kein Teil des Himmels sichtbar ist und dennoch Vorteile gegenüber einer einfachen Echtzeituhr bietet?
Stéphane Gourichon
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.