Hallo Forum,
wir haben aktuell Probleme beim Dateizugriff auf unseren SD-Karten.
Eingesetzt wird ein ATmega128-16AU mit z.B. einer Transcend microSD 2GB FAT16 oder auch einer SanDisk Ultra SDHC 8 GB FAT32 (FAT16_32 Treiber) angeschlossen über einen Hardware SPI mit folgender Config:
FAT16 = MMC_SPI, iData;
F16_MMCspeed = standard;
F16_FileHandles= 1;
F16_DirLevels = 1;
F16_StrLen = 254 ;
Compiler 5.08
Genutzt wird die SD-Karte um alle 10 min oder auch Eventgesteuert einen Datensatz von ca. 112 Zeichen pro Zeile in einer Textdatei pro Tag abzulegen.
Dies funktioniert grundsätzlich super bis es irgendwann zu einem Problem kommt, wo nicht klar ist was der Auslöser ist.
Symptom ist dann, dass das Initialisieren der SD-Karte quasi ewig dauert und der Dateizugriff einiger Dateien ebenfalls extrem langsam ist, und als Ausgabe nur leere Zeilen ergibt.
Die erste Datei in der FAT die nicht lesbar ist, ist auch nur mit unleserlichen willkürlichen Schriftzeichen gefüllt. Nach einem Neustart der Einheit an einem anderen Tag ist interessanterweise wieder eine Datei erfolgreich erstellt und befüllt worden, die Datei am darauffolgenden Tag ist wieder korrupt.
Nach Aussen hin scheint der Prozessor in diesem Moment sich aufgehängt zu haben, ein Watchdogreset erfolgt jedoch nicht. Vermutlich wird in der Routine der Wd getriggert.
Interessanterweise lassen sich alle Dateien am PC einwandfrei öffnen, auch die, indenen nur kuriose Schriftzeichen sind. Kopiert man vermeindlich defekte Dateien auf eine andere SD-Karte lassen sich diese vom AVR auch problemlos öffnen, kopiert man die gesamte SD gibt es Probleme. Dann lassen sich mitunter sogar Dateien, welche auf der OriginalSD noch lesbar sind, hier nicht mehr anzeigen.
Nicht anzeigen heißt, dass der Inhalt der SD als 00h übertragen wird. Hierbei wird das End of File offensichtlich erkannt und er springt aus der Ausgaberoutine wieder raus.
Bei manchen Dateien kommt in unterschiedlichen Abständen nur ein CR LF und er findet scheinbar kein End of File
Ich habe auch eine Datei, welche auf der Herkunfts-SD vollständig lesbar ist, welche nach dem Kopieren der gesamten SD auf der neuen SD vom AVR nur ca. die erste Hälfte der Datei angezeigt werden kann, der Rest ist dann nur noch CRLF obwohl die Datei unter Windows bis zum Ende Lesbar ist.
Ein Update auf Compilerversion 5.09.03 brachte keine Besserung.
Hat jemand schonmal ähnliche Erfahrungen gemacht?
Gibt es ggf. eine möglichkeit solche Defekte zu erkennen?
Ich habe mal die "halb"-defekte und eine ganz Defekte Datei angehängt, vielleicht hat jemand ein Tool zum analysieren. Wenn noch mehr Infos gebraucht werden bitte melden.
Vielen Dank schonmal
Nachtrag:
Ich habe über die Funktion GetDiskError mitlerweile rausgefunden, dass beim Auslesen der Dateiinhalte es zu einem ReadFail kommt.
Beim Schreiben einer Datei haben wir den Fehler noch nicht rausbekommen. Bis zum FileClose scheint der Zugriff zu funktionieren, beim FileClose hängt die Funktion und der AVR läuft nicht weiter.
Es erhärtet sich bei uns der Verdacht, dass die FAT irgendwie beschädigt ist. Löscht man die Defekten Dateien am ende der FAT inkl der letzten scheinbar korrekten Datei, scheint der Zugriff erstmal wieder zu funktionieren.
wir haben aktuell Probleme beim Dateizugriff auf unseren SD-Karten.
Eingesetzt wird ein ATmega128-16AU mit z.B. einer Transcend microSD 2GB FAT16 oder auch einer SanDisk Ultra SDHC 8 GB FAT32 (FAT16_32 Treiber) angeschlossen über einen Hardware SPI mit folgender Config:
FAT16 = MMC_SPI, iData;
F16_MMCspeed = standard;
F16_FileHandles= 1;
F16_DirLevels = 1;
F16_StrLen = 254 ;
Compiler 5.08
Genutzt wird die SD-Karte um alle 10 min oder auch Eventgesteuert einen Datensatz von ca. 112 Zeichen pro Zeile in einer Textdatei pro Tag abzulegen.
Dies funktioniert grundsätzlich super bis es irgendwann zu einem Problem kommt, wo nicht klar ist was der Auslöser ist.
Symptom ist dann, dass das Initialisieren der SD-Karte quasi ewig dauert und der Dateizugriff einiger Dateien ebenfalls extrem langsam ist, und als Ausgabe nur leere Zeilen ergibt.
Die erste Datei in der FAT die nicht lesbar ist, ist auch nur mit unleserlichen willkürlichen Schriftzeichen gefüllt. Nach einem Neustart der Einheit an einem anderen Tag ist interessanterweise wieder eine Datei erfolgreich erstellt und befüllt worden, die Datei am darauffolgenden Tag ist wieder korrupt.
Nach Aussen hin scheint der Prozessor in diesem Moment sich aufgehängt zu haben, ein Watchdogreset erfolgt jedoch nicht. Vermutlich wird in der Routine der Wd getriggert.
Interessanterweise lassen sich alle Dateien am PC einwandfrei öffnen, auch die, indenen nur kuriose Schriftzeichen sind. Kopiert man vermeindlich defekte Dateien auf eine andere SD-Karte lassen sich diese vom AVR auch problemlos öffnen, kopiert man die gesamte SD gibt es Probleme. Dann lassen sich mitunter sogar Dateien, welche auf der OriginalSD noch lesbar sind, hier nicht mehr anzeigen.
Nicht anzeigen heißt, dass der Inhalt der SD als 00h übertragen wird. Hierbei wird das End of File offensichtlich erkannt und er springt aus der Ausgaberoutine wieder raus.
Bei manchen Dateien kommt in unterschiedlichen Abständen nur ein CR LF und er findet scheinbar kein End of File
Ich habe auch eine Datei, welche auf der Herkunfts-SD vollständig lesbar ist, welche nach dem Kopieren der gesamten SD auf der neuen SD vom AVR nur ca. die erste Hälfte der Datei angezeigt werden kann, der Rest ist dann nur noch CRLF obwohl die Datei unter Windows bis zum Ende Lesbar ist.
Ein Update auf Compilerversion 5.09.03 brachte keine Besserung.
Hat jemand schonmal ähnliche Erfahrungen gemacht?
Gibt es ggf. eine möglichkeit solche Defekte zu erkennen?
Ich habe mal die "halb"-defekte und eine ganz Defekte Datei angehängt, vielleicht hat jemand ein Tool zum analysieren. Wenn noch mehr Infos gebraucht werden bitte melden.
Vielen Dank schonmal
Nachtrag:
Ich habe über die Funktion GetDiskError mitlerweile rausgefunden, dass beim Auslesen der Dateiinhalte es zu einem ReadFail kommt.
Beim Schreiben einer Datei haben wir den Fehler noch nicht rausbekommen. Bis zum FileClose scheint der Zugriff zu funktionieren, beim FileClose hängt die Funktion und der AVR läuft nicht weiter.
Es erhärtet sich bei uns der Verdacht, dass die FAT irgendwie beschädigt ist. Löscht man die Defekten Dateien am ende der FAT inkl der letzten scheinbar korrekten Datei, scheint der Zugriff erstmal wieder zu funktionieren.
Attachments
Filename: | defekt.txt |
Filesize: | 263 Byte |
Title: | Defekte Datei |
Information: | Inhalt sind nur unleserliche Zeichen |
Download counter: | 57 |
This file is too big for a preview. Please download the file. |
|
Filename: | halbdefekt.txt |
Filesize: | 1.78 MB |
Title: | Halb-Defekte Datei |
Information: | Inhalt unter Windows lesbar, im AVR nur teilweise |
Download counter: | 33 |