Daten per µC möglichst sicher auf USB Stick schreiben

OP #2179047
Lesenswert?

Hallo,
es gibt fertige Module, die einem den Anschluss eines USB Sticks an den 
µC ermöglichen. Zum Beispiel im Beitrag [[USB-Stick am 
Mikrocontroller]].
Ich möchte zyklisch Daten auf den USB-Stick schreiben.
Prinzipiell erst mal kein Problem, wie aber geht man mit dem Problem des 
Spannungsausfalls beim Schreiben um?
Welche Strategie ist dabei die Beste, um möglichst viele Daten in einer 
oder auch mehreren abgeschlossenen Datei(en) vor dem Spannungsausfall 
sicher auf dem Stick zu haben? Mir kommt es dabei nicht zwingend darauf 
an die Daten zu haben, die direkt vor dem Spannungsausfall aufgetreten 
sind. Eine dauernd geöffnete Datei macht also sicher am wenigsten Sinn. 
Könnte man immer in zwei Dateien hintereinander schreiben? Dann erwischt 
es beim Spannungsausfall nur eine der beiden Dateien. Aber das kann 
grundsätzlich auch immer den ganzen Stick unlesbar machen, oder?
Schon mal vielen Dank für Anregungen und Hinweise zu dem Thema!
#2179315
Lesenswert?

B. Jue schrieb:
> Ich möchte zyklisch Daten auf den USB-Stick schreiben.

Wie zyklisch? Sekunden  Minuten  Stunden?

> Aber das kann grundsätzlich auch immer den ganzen Stick unlesbar machen, oder?

Im Prinzip kann das passieren. Moderen Sticks rechnen damit, dass sie 
einfach so rausgezogen werden und sind diesbezüglich ziemlich tolerant. 
Fehler im Dateisystem treten aber schon mal auf.
Gast #2179323
Lesenswert?

B. Jue schrieb:
> Eine dauernd geöffnete Datei macht also sicher am wenigsten Sinn.

warum? Eine Datei ist eigentlich nie offen, weil das mehr eine 
Festlegung vom Betriebsystem ist. Eine Datei Besteht aus datenblöcken 
was soll daran offen sein?

Wichtig ist das alles änderungen am Filesystem abgeschlossen sind. Es 
kann also nur zu Problemen kommen wenn gerade die FAT manipuliert wird. 
Wenn der der Zeit etwas passiert kann man nur hoffen aber nichts 
wirklich etwas machen.

Ich würde die Datei gleich sehr gross anlegen und dann einfach 
blockweise die Daten wegschreiben, dann kann nichts passieren weil ja 
das Filesystem nicht geändert wird.
OP #2180258
Lesenswert?

Danke erst mal für die Hinweise!
Mir würde es reichen, ca. alle 5 Sekunden ca. 100 Byte zu speichern.
Ich möchte das V2DIP1 Modul benutzen:
http://www.ftdichip.com/Products/Modules/Developme...
Hier kann ich über ASCII Befehle Dateien öffnen, schreiben, lesen und 
schliessen. In der Dokumentation zu dem Modul steht:
"If a BOMS device is removed during a write operation, or even while a 
file is open for writing, then data corruption is likely."
Daher bin ich am Überlegen, durch welche Maßnahmen ich die 
Wahrscheinlichkeit bzw. das Zeitfenster möglichst klein halten kann, 
dass dieses geschieht. Daraus resultiert auch die Idee, einfach zwei 
Dateien anzulegen, in der Hoffnung, dass zumindest eine davon lesbar 
bleibt.
#2181935
Lesenswert?

B. Jue schrieb:
> Danke erst mal für die Hinweise!
> Mir würde es reichen, ca. alle 5 Sekunden ca. 100 Byte zu speichern.
> Ich möchte das V2DIP1 Modul benutzen:
> http://www.ftdichip.com/Products/Modules/Developme...
> Hier kann ich über ASCII Befehle Dateien öffnen, schreiben, lesen und
> schliessen. In der Dokumentation zu dem Modul steht:
> "If a BOMS device is removed during a write operation, or even while a
> file is open for writing, then data corruption is likely."
> Daher bin ich am Überlegen, durch welche Maßnahmen ich die
> Wahrscheinlichkeit bzw. das Zeitfenster möglichst klein halten kann,
> dass dieses geschieht. Daraus resultiert auch die Idee, einfach zwei
> Dateien anzulegen, in der Hoffnung, dass zumindest eine davon lesbar
> bleibt.

Mein Tip: Benutze das Modul nicht! Nimm eine SD-Karte als 
Speichermedium, die Du dann auf dem PC in einem Kartenleser ausliest. 
Wenn Du da einen Sektor schreibst, weißt Du, dass er auf der Karte 
angekommen ist. Bei dem USB-Modul sind zu viele Puffer dazwischen, auf 
die Du keinen Einfluss hast.

Du wirst selber ein FAT-Dateisystem implementieren müssen (oder eines 
der zahlreich vorhandenen bei Dir einbauen). Da kannst Du dann geeignete 
Maßnahmen ergreifen, z.B. eine große Datei in der FAT und im Directory 
anlegen, und dann erst die Datenblöcke schreiben.

fchk

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren