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!
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.
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.
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.
B. Jue schrieb: > wie aber geht man mit dem Problem des Spannungsausfalls beim Schreiben um? http://www.mikrocontroller.net/articles/Speicher#EEPROM_Schreibzugriffe_minimieren
Ich habe erst jetzt weitere Artikel zum Thema gefunden: Beitrag "USB Stick Schreibzyklen" Beitrag "Eure Erfahrungen zu Geschwindigkeit und Zuverlässigkeit von VDIP1, VNC1L, RS232, USB-Stick" Beitrag "Vinculum VNC1L USB Stick + RS232" Beitrag "Sensordaten auf USB Stick kopieren"
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.