FAT32 Merkwürdigkeit

  • 1
  • 2
  • 3
  • 4
  • Page 1 of 4
rage
Benutzer
Avatar
Gender: n/a
Age: 65
Homepage: processanalytik.de
Posts: 237
Registered: 02 / 2007
Subject:

FAT32 Merkwürdigkeit

 · 
Posted: 21.08.2017 - 12:18  ·  #1
Hallo,

wir haben mit dem FAT32 Treiber eine kleine gemeine Merkwürdigkeit. Eigentlich hatte ich die schon im November 2016 mal als Bug gemeldet und als behoben betrachtet. Der Kunde für den wir die Entwicklung übernommen haben, hat auch einige Monate keine weitere Fehler gemeldet. Die ist aber eher der Tatsache geschuldet, das wir an völlig anderen Teilen der Software gearbeitet haben. Jedenfalls sind wir jetzt fast durch und eigentlich nur noch am testen. Und siehe da der Bug ist wieder (schon wieder oder immer noch) da.
Unter Umständen tauchen auf der SD-Karte Dateien auf die es so nicht geben kann. Siehe Bild 1. Im Windows-PC sieht die Karte völlig korrekt aus, zeigt keine Fehler und eine erzwungene Fehlerbehebung meldet hinterher auch "ES WAR ALLES OK". In fast allen alten Fällen ist danach die Karte auch wieder fehlerfrei gewesen. Jetzt hilft das auch nicht mehr. Die fehlerhaften Dateien sind immer noch da. Sie tauchen auch in unterschiedlichen Verzeichnissen auf, dann immer mit einigen Dateien im Schlepptau die dort nicht hingehören und auch garnicht da sind. Siehe Bild 2.
Beim Erzeugen der Dateien kann eigentlich auch kein Fehler passieren, den wir schreiben immer ein vielfaches von 512 Byte:

Code
Procedure SaveDataFromFRAMToSD(Count:Byte);
var uCount:Word;
    Temp:Array[0..511] of Byte;
    res: word;
    bool:Boolean;
    fHandle:File of Byte;
Begin
  bool  :=  F16_FileAssign(fHandle, ActualSaveFolder, ActualSaveFile);
  if bool then
    bool  :=  F16_FileAppend(fHandle);
    if Bool then
       For uCount:=0 to Pred(Count) do
         ReadDataFromFRAM(uCount*512,@Temp,512);
         F16_BlockWrite  (fHandle,@Temp,512,res);
       endfor;
       F16_FileClose(fHandle);
    else
       F16_FileClose(fHandle);
    endif;
  endif;
end;

Wenn ich mir die Dateien dann anschaue, sind alle Daten völlig korrekt geschrieben. Es gibt auch keine Datei die beim Einlesen falsche Blöcke hat. Ausschließlich Auflisten der Verzeichnis-Struktur ist das Problem.
Code

Function ListAllDirectory(Path:String[32]):Byte;
var SR:TSearchRec;
    Ret:Byte;
Begin
  Ret:=0;
  if F16_FindFirst(Path, '*.*', faAnyFile, SR) then
    repeat
      mDelay(5);
      Inc(Ret);
    until not F16_FindNext(SR);
  Endif;
  Return(Ret);
end;


Im Testprogramm tauchen die Dateien dann auch (leider) zuverlässig auf. Nun sind meine Kenntnisse der FAT32 nicht so wirklich genug um den Fehler auf der Blockebene zu erkennen. Ich habe eine der 8GB SD-Karten mit dem Win32DiskImager kopiert und als RAR gepackt, dann ist das nur knapp 4 Mbyte groß.
Wenn noch Infos gebraucht werden einfach Bescheid geben. Ich bin hier ziemlich ratlos.
Gibt es ein Programm, womit man die Verzeichniss-Struktur untersuchen kann?

Einen schönen Tag
rage
Attachments
FAT32 Merkwürdigkeit
Filename: SDCardError.jpg
Filesize: 130.08 KB
Title:
Download counter: 172
FAT32 Merkwürdigkeit
Filename: SDCardFehler01.jpg
Filesize: 180.94 KB
Title:
Download counter: 175
FAT32 Merkwürdigkeit
Filename: SDCardFehler02.jpg
Filesize: 179.21 KB
Title:
Download counter: 179
Filename: SDCardError.rar
Filesize: 3.92 MB
Title:
Download counter: 30
Filename: FAT32test.rar
Filesize: 383.68 KB
Title:
Download counter: 32
miparo
Administrator
Avatar
Gender:
Location: Germany
Age: 58
Posts: 959
Registered: 09 / 2007
Subject:

Re: FAT32 Merkwürdigkeit

 · 
Posted: 21.08.2017 - 15:30  ·  #2
Hi Rage,
dein Prog kann nicht funktionieren mit {$NOSHADOW}.
Das dieses define noch nicht gesperrt worden ist im AVRco !
Es macht heutzutage überhaupt kein Sinn mehr und verursacht nur Probleme.
Ich bin da gerade beim MIRF selbst drüber gestolpert. Mein Porg hat selbst keinen Int benutzt aber trotzdem ist mein Prog gestorben mit NOSHADOW. Ich vermute, das eine System Funktion vergisst ein Register zu sichern.

Gruß
miparo
rage
Benutzer
Avatar
Gender: n/a
Age: 65
Homepage: processanalytik.de
Posts: 237
Registered: 02 / 2007
Subject:

Re: FAT32 Merkwürdigkeit

 · 
Posted: 21.08.2017 - 16:49  ·  #3
Hallo miparo

ich habe das mal fix getestet, also in dem Testprogramm ändert sich nix am Zustand, die fehlerhaften Dateieinträge bleiben erhalten. Wäre auch zu schön gewesen. Sieh Bilder unten.
In den beiden Hauptprogrammen auch mal getestet (dort zuerst) das Ergebniss kann ich nicht sagen, weil plötzlich andere Sachen wie Sliptreiber nicht mehr funktionieren. In unserem neuen Logger hat ein wieder rückgängig machen das Programm dauerhaft in dem fehlerhaften Zustand belassen. Ok das schau ich mir morgen nochmal in Ruhe an.
Leider ist das jetzt so, das dieser Änderung keine Abhilfe schafft.
Das Define wird auch heute noch mit in einem neuen Programm erzeugt, denn das Testprogramm hatte ich ja gerade frisch erstellt. Ich belasse eigentlich alles so wie AVRCO das erzeugt, wenn ich es nicht besser weiß.
Attachments
FAT32 Merkwürdigkeit
Filename: SDCardFehler03.jpg
Filesize: 106.44 KB
Title:
Download counter: 164
FAT32 Merkwürdigkeit
Filename: SDCardFehler04.jpg
Filesize: 29.71 KB
Title:
Download counter: 153
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2134
Registered: 03 / 2003
Subject:

Re: FAT32 Merkwürdigkeit

 · 
Posted: 21.08.2017 - 16:51  ·  #4
Hi miparo,

heißt das, daß das NoShadow immer raus soll? Für was ist/war das?
Ich hatte genau das gleiche Problem auch schon, war aber nachdem ich alle Prozesse, außer den schreibenden gesperrt habe, weg.
Achja ich hatte das nur mit XMegas, bei quasi bau- und programmgleichen mit den alten Megas nie.

[Edit] Auch bei XMega-Schaltungen/Programmen älter als ca. 1 Jahr war das nicht.

Gruss
Harry
miparo
Administrator
Avatar
Gender:
Location: Germany
Age: 58
Posts: 959
Registered: 09 / 2007
Subject:

Re: FAT32 Merkwürdigkeit

 · 
Posted: 21.08.2017 - 17:18  ·  #5
Hi Harry,
eigentlich macht das nur Sinn wenn du eigene Ints in deine Prog benutzt.
Da werden dann NICHT alle Register gesichert , sonder nur die Standard Reg.
Um alle anderen Reg. musst du dich dann selnst kümmern.

UND trotzdem hängen eigene Progs, obwohl die keine eigenen Ints benutzen.
Dann gehe ich davon aus, das etwas im Sytem nicht ganz koscher ist.

In normalen Progs. hat dieses define NICHTS zu suchen.

Das ist ein Relikt aus alten Zeiten mit Micky Mouse CPU's.


Der Fehler dann taucht dann auch nicht immer sofort auf und man sucht sich dann einen Ast ab...

Das wäre eigentlich mal ein Fall für den Merlin, da der genau weiss was und wo sich da etwas auf dem Stack/Frame und tut. Der Opti zählt ja alle Push/Pop mit und da dürfte dem das schnell auffallen.

miparo
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: FAT32 Merkwürdigkeit

 · 
Posted: 21.08.2017 - 20:09  ·  #6
Hallo Miparo
Asche auf mein Haupt! Diese Geister einträge
Tauchen auch bei mir auf. Ich versuche schon seit Wochen dahinter zu kommen....
Das Noshadow ist dabei abgeschaltet...

Rolf
miparo
Administrator
Avatar
Gender:
Location: Germany
Age: 58
Posts: 959
Registered: 09 / 2007
Subject:

Re: FAT32 Merkwürdigkeit

 · 
Posted: 21.08.2017 - 20:44  ·  #7
Hi Rolf,
Das Noschadow ist da nicht alleine für verantwortlich aber es zu benutzen steht unter Strafe [-X
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: FAT32 Merkwürdigkeit

 · 
Posted: 21.08.2017 - 20:51  ·  #8
Hall miparo.
Kann sein. Ich habe aber die Effekte von
NOSHADOW untersucht konnte aber nichts
Finden was aber nichts heissen soll.
Auf jeden Fall haben die Geister Files einen
Anderen Grund. ...
rolf
  • 1
  • 2
  • 3
  • 4
  • Page 1 of 4
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 17 · Cache Hits: 15   143   158 · Page-Gen-Time: 0.038951s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI