Probleme auf eine SD Karte zuverlässig zu schreiben

  • Probleme SD Karte ??



    Ich habe eine Applikation, die laufend in ein Logfile schreibt.
    Wenn ich das Logfile auf der "FFSDISK" anlege, dann läuft meine
    Applikation über mehrere Tage problemlos. Dabei kann ich zwischendurch
    über ActiveSync das Logfile von der NetDCU auf den PC kopieren, ohne
    daß dies irgendwelche negative Auswirkungen hat.


    Nun mein Problem:
    Wenn ich das Logfile (wie geplant) auf eine SD Karte schreibe, dann
    verändert sich das Verhalten komplett.
    Es ist nicht zuverlässig vorhersehbar was passiert, aber auf jeden Fall
    ist das Logfile nicht verwendbar.


    - Es kommt vor, daß die SD Karte nach einer bestimmten Zeit im Explorer
    zwar erscheint, die Verzeichnisse oder Files darauf aber nicht sichtbar sind.
    Nach einem Reboot sind die Files dann zwar wieder vorhanden, aber das Logfile
    ist nicht vollständig, d.h. es wurde bereits vor dem Reboot schon nicht mehr
    in das Logfile geschrieben.


    - Es ist schon mehrfach vorgekommen, daß nach mehrmaligem Kopieren des Logfiles
    auf den PC, während die Applikation weiter in dieses File schreibt, Meldungen
    kommen, die behaupten die Karte hätte einen aktivierten Schreibschutz (was natürlich
    nicht der Fall ist) und danach ist dann meist das Logfile auf der SD Karte entweder
    abgeschnitten (nur die 1. Zeile ist vorhanden, der Rest ist verschwunden) oder
    gar nicht mehr vorhanden. Sehr oft ist auch die gesamte SD Karte leer und sie
    muß formatiert werden um überhaupt wieder erkannt zu werden usw.


    Auf jeden Fall gibt es hier ein massives Problem, daß die Verwendung der SD Karte
    eigentlich verbietet.
    Ich bin für jeden Tipp dankbar!


    Mein Programm macht etwa folgendes:


    Code
    1. hFile = CreateFile (fileName, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
    2. while(loop) {
    3. ...
    4. DWORD amount;
    5. WriteFile(hFile, ptBuffer, wcslen(ptBuffer) * sizeof(wchar_t), &amount, NULL);
    6. ....
    7. }
    8. FlushFileBuffers(hFile);
    9. CloseHandle(hFile);


    Mir ist bekannt, daß FAT ein Problem hat, wenn Schreibvorgänge während eines Stromausfalls
    erfolgen. Alle hier beschriebenen Probleme sind aber bei laufendem System passiert, kein
    Stromausfall und meine Applikation wurde immer sauber beendet! Bei Stromausfall kann man
    zu 90% damit rechnen, daß die SD Karte neu formatiert werden muß, wenn die Applikation
    vorher gelaufen ist.
    Außerdem treten die Probleme bei verschiednen SD Karten (verschiedene Größen, verschiedene
    Hersteller) auf - die SD karte kann nicht die Ursache sein!
    Des weiteren habe ich verschiedene NetDCU8 getestet - mit OS Version 1.3 bis 1.3.6.

  • Hallo,
    leider kann ich das Problem nicht reproduzieren. Könnten Sie mir eine kurze Anleitung geben wie ich genau vorgehen muss damit der Fehler auftritt?

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Hallo,


    leider ist das Problem nicht sehr einfach reproduzierbar. Ich werde mal versuchen zu beschreiben,
    wie ich hier den Fehler produzieren kann.


    In meiner Applikation gibt es mehrere Tasks, von denen einer alle Meldungen der anderen Tasks in ein Logfile schreibt.
    Dieser Task läuft mit der priority 218. Der Task schreibt etwa alle 2 - 20 Sekunden eine Zeile (ca. 50 Zeichen) ins Logfile.
    Wenn ich den Writer nur in die "FFSDISK" schreiben lasse, läuft meine Applikationen seit Monaten ohne irgendwelche Probleme,
    außer bei Stromausfall, aber das Problem wurde im Forum schon mehrfach angesprochen.


    Wenn ich den Writer aber auf die "Storage Card" schreiben lasse und parallel dazu (über ActiveSync) mir die Logfiles immer wieder
    auf den PC kopiere um sie dort auszuwerten, bekomme ich z.B. folgende Fehlermeldung:


    "Kopieren nicht möglich DataLogger: Zugriff verweigert.
    Stellen Sie sicher, dass auf dem mobilen Gerät genügend Speicherplatz vorhanden ist, dass die Datei nicht schreibgeschützt ist,
    und dass Sie die nötige Berechtigung haben, Dateien dieses Typs zu kopieren."


    "DataLogger" ist mein File, auf der NetDCU ist ausreichend Speicherplatz vorhanden, die Datei ist nicht schreibgeschützt (wurde ja von meiner Applikation
    geschrieben) und ich habe die nötige Berechtigung (wurde ja von mir schon mehrmals auf den PC kopiert).


    Wenn ich nun mein Programm beende, kommt beim Versuch das Logfile auf den PC zu kopieren wieder obige Meldung.
    Wenn ich SD Karte wechsle und anschließend wieder in die NetDCU einschiebe (oder einfach die NetDCU neu starte), kann ich das
    File plötzlich wieder auf den PC kopieren. Wenn ich meine Applikation neu starte, wird auch wieder in das File geschrieben.


    Ich hatte auch schon das Phänomen, daß nach obigem Szenario die SD Karte zwar im Explorer (NetDCU) erschienen ist, aber keinen
    Inhalt mehr angezeigt hat. Im Kartenleser des PC war dann (teilweise) die Karte zwar lesbar, aber das Logfile abgeschnitten (nur die
    1. Zeile war vorhanden) - oder es war gar nichts mehr auf der Karte und erst nach einem Neuformatieren war die Karte wieder
    nutzbar. Dies kann ich im Moment nicht mehr rekonstruieren, ist aber schon mehrfach aufgetreten.


    Ich vermute, daß die Probleme durch das Filesystem (od. SD Karten Treiber) verursacht werden.
    Wenn Sie mir Tipps geben könnten, wie sich das zuverlässig vermeiden läßt bzw. andersweitig weiterhelfen könnten, wäre ich ihnen außerordentlich dankbar!


    Vielen Dank im Voraus

  • Hallo,

    Quote

    ... .Wenn ich den Writer nur in die "FFSDISK" schreiben lasse, läuft meine Applikationen seit Monaten ohne irgendwelche Probleme,
    außer bei Stromausfall, aber das Problem wurde im Forum schon mehrfach angesprochen.

    Das können Sie lösen indem Sie das Filesystem F3S (http://www.fs-net.de/cms/index.php?id=28&L=0) verwenden!

    Quote

    Wenn ich den Writer aber auf die "Storage Card" schreiben lasse und parallel dazu (über ActiveSync) mir die Logfiles immer wieder
    auf den PC kopiere um sie dort auszuwerten, bekomme ich z.B. folgende Fehlermeldung: ...

    Beim mir ist das nicht abhängig von Quellspeichermedium. Auch beim kopieren von "ffsdisk" erhalte ich diese Meldung wenn die Datei offen ist! Vom PC her kenne ich dieses Verhalten auch. Werde mal prüfen welche Optionen "CreateFile" bietet.

    Quote

    Wenn ich nun mein Programm beende, ...

    Ich werden mir einen Test überlegen um das zu reproduzieren.

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Hallo,


    ja, das Filesystem F3S würde mir schon besser gefallen, aber leider ist es so, daß die Servicetechniker im Feld oft keinen PC vor Ort haben und somit die SD Karte mit den Logfiles einfach tauschen werden um dann zu Hause am PC die Logfiles auszuwerten. Der PC kann aber leider mit F3S nichts anfangen.

    Wenn Sie das Verhalten auch auf FFSDISK haben, dann beruhigt mich das nicht unbedingt - ich hatte dies bis jetzt noch nie gesehen.


    Beim PC kommt aber doch eine Warnung nur, wenn die Datei gerade im Zugriff ist und ich kann die Datei in diesem Moment nicht kopieren, aber die Quelldatei wird dadurch nicht beschädigt (bzw. der Inode in der FAT), so daß die Quelldatei danach nicht mehr schreib- und lesbar ist. Wenn das so wäre, sollte Microsoft sich vielleicht doch ein neues Geschäftsfeld suchen?


    Vielen Dank erstmals

  • Hallo,


    Quote

    Wenn Sie das Verhalten auch auf FFSDISK haben, dann beruhigt mich das nicht unbedingt - ich hatte dies bis jetzt noch nie gesehen.

    Ok, das lag nur daran das die Schreibzyklen sehr klein waren und die Datei immer im Zugriff war.


    Quote

    Beim PC kommt aber doch eine Warnung nur, ...

    Das ist mir noch nicht klar. Ist die Datei nur defekt wenn ein Kopierversuch stattfand oder auch wenn Sie Ihr Programm ganz normal beenden?

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Hallo,


    Quote


    Ok, das lag nur daran das die Schreibzyklen sehr klein waren und die Datei immer im Zugriff war.


    bedeuted dies: auf der FFSDISK gab es keine Probleme, lediglich durch die kurzen Schreibzyklen war es nicht möglich Zugriff zu erlangen?


    Quote


    Das ist mir noch nicht klar. Ist die Datei nur defekt wenn ein Kopierversuch stattfand oder auch wenn Sie Ihr Programm ganz normal beenden?


    Die Datei ist niemals defekt, wenn ich die Applikation normal beende (und wenn kein Stromausfall dazwischen kommt). Der Defekt ist ganz klar darauf zurückzuführen, daß während meine Applikation schreibt, eine weiterer Zugriff auf die Datei (kopieren) erfolgt!

  • Hallo,

    Quote

    bedeuted dies: auf der FFSDISK gab es keine Probleme, lediglich durch die kurzen Schreibzyklen war es nicht möglich Zugriff zu erlangen?


    Ja genau.

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Hallo,


    Quote


    Die Datei ist niemals defekt, wenn ich die Applikation normal beende (und wenn kein Stromausfall dazwischen kommt). Der Defekt ist ganz klar darauf zurückzuführen, daß während meine Applikation schreibt, eine weiterer Zugriff auf die Datei (kopieren) erfolgt!


    Diese Aussage muß ich zurücknehmen. Bei einem Testlauf letzte Nacht, bei dem mein Logger auf die SD Karte geschrieben hat, ist der selbe Effekt wieder aufgetreten:
    das Schreiben wurde abgebrochen, das File war im Explorer nicht mehr sichtbar, das File war im Kartenlesegerät zwar sichtbar, hatte aber keinen Inhalt - und das obwohl kein Lesezugriff während des Schreibens stattfand (ob ActiveSync hier irgendwelche Zugriffe durchführt ist mir nicht bekannt).


    Da die Tests sehr zeitaufwändig sind, kann ich nur die Probleme schildern, die in Tests aufgetreten sind. Als ziemlich gewiß kann ich jedoch sagen, daß all diese Effekte nicht auf der FFSDISK auftreten, da meine Applikation schon seit Monaten Logfiles auf dieses Medium schreibt und ich dabei noch nie (außer Stromausfall) Probleme hatte, die diese Logfiles betreffen!

  • Hallo nochmals!


    Haben Sie bereits Erkenntnisse bzw. konnten Sie den Fehler nachvollziehen?


    Ich habe jetzt meine Applikation geändert um das Problem zu minimieren:
    mein Thread schreibt ein Logfile auf FFSDISK und wenn eine bestimmte Filegröße erreicht ist, wird das Logfile auf die SD Karte verschoben.
    Damit wollte ich die Schreibzugriffe auf die SD Karte minimieren.


    ABER leider brachte das keinen großen Erflog. Meist ist nach wenigen Kopieraktionen (3 - 5 * kopieren von FFSDISK -> SD Karte) wieder der Zustand erreicht, in dem der Zugriff auf die SD Karte nicht mehr möglich ist (access denied).


    Nun ist meine SD Karte (eine der verwendeten) defekt:
    - es sind Files auf der Karte, die ich lesen aber nicht ändern oder löschen kann
    - ich kann keine neuen Ordner od. Files anlegen
    - ich kann die SD Karte nicht formatieren (nicht under Windows und nicht mit einem HP Tool)
    - chkdsk /F f: bringt auch keinen Erfolg
    (auf Wunsch kann ich Ihnen die Karte zusenden).


    Nun liegt die Vermutung nahe, daß die Anfangs beschriebenen Probleme beim Schreiben auf die SD Karte mit diesem
    neuen Problem zusammen auf einen Windows CE und/oder Treiberfehler zurückzuführen ist.


    Können Sie mir hierzu bitte einen Lösungsvorschlag machen?
    Kann es möglich sein, daß bis jetzt noch kein anderer Kunde von Ihnen ähnliche Probleme hatte?


    Ich wäre Ihnen dankbar, wenn Sie mir schnellstmöglich weiterhelfen könnten.



    Gunther

  • Hallo,
    ich bin leider noch nicht dazu gekommen eine Testapplikation zu erstellen. Könnten Sie uns ein kurze Programm zukommen lassen mit dem wir den Fehler "automatisch" reproduzieren können. Wir würden dann Teiber und Windows CE prüfen.

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Hallo,


    ja ich arbeite daran, aber da der Fehler erst nach längerer Laufzeit auftritt, kann es noch eine Weile dauern bis ich Ihen eine Testapplikation liefern kann, die den Fehler zuverlässig produziert.

  • Hallo nochmals!


    Ich habe jetzt längere Zeit getestet um (relativ) sicher zu sein, daß die Ergebnisse zuverlässig sind.
    Ich schreibe seit mehreren Wochen mit dem selben Programm Logfiles auf die FFSDISK, die ich dann auf
    die SD Karte verschiebe. Es sind dabei seit einigen Wochen KEINE Fehler mehr aufgetreten!


    Die vorher genannten Phänomene waren darauf zurückzuführen, daß eine NetDCU8 einen Wackelkontakt
    im SD Kartenschacht hatte (Schreibschutzerkennung) und ich ein paar SD Karten verwendet habe,
    die selber auch fehlerhaft waren (aber leider nur sporadische Ausfälle). Bei meinen Tests mit verschiedenen
    NetDCUs und verschiedenen SD Karten war dabei scheinbar immer ein fehlerhaftes Bauteil beteiligt.


    Vielen Dank, daß Sie versucht haben, den vermeindlichen Fehler zu finden,


    Gunther