Forum: Compiler & IDEs Problem mit FAT16 und SD Karte!


von Bernd E. (edi)


Lesenswert?

Hallo,
ich programmiere jetzt schon einige Zeit an einer Software herum, mit 
der ich auf eine SD Karte mit FAT 16 eine Datei lesen/schreiben kann. 
Nur irgendwie fehlen mir mal richtig gute Unterlagen, zu diesem Thema, 
habe zwar einige gefunden, aber richtig zufrieden bin ich damit nicht. 
Wie funktioniert z.B die Sache mit den Directory Table, wenn ich 
Unterverzeichnisse habe? (Habe im Hexeditor gesehen, dass nach dem root 
Directory Table die Daten einer Testdatei kamen welche im root 
Verzeichnis liegt und darauf folgte dann wohl wieder ein Directory Table 
eines Unterverzeichnisses gefolgt vom Inhalt einer Datei die darin lag. 
Das hat mich irgendwie ganz verwirrt!) Wie komme ich zu diesen Adresse 
der Tables dieser Unterverzeichnisse?

Wenn ich auf meiner Karte nur eine einzelne Datei im root Verzeichnis 
liegen habe, auf die ich schreiben und lesen will, wie sieht es dann aus 
mit den Dir. Table?


Wenn ich jetzt nur eine Datei im root Verzeichnis habe und diese Suchen 
möchte, dann müßte es doch reichen, wenn ich mir die Adresse des 
Directory Tables des root Verzeichnisses nehme und dann diesen Table (32 
Byte x 512 Einträge) nach dem Namen meiner Datei durchsuche, oder?



Danke,
Bernd

von Wolfram (Gast)


Lesenswert?

>ich programmiere jetzt schon einige Zeit an einer Software herum, mit
>der ich auf eine SD Karte mit FAT 16 eine Datei lesen/schreiben kann.
>Nur irgendwie fehlen mir mal richtig gute Unterlagen, zu diesem Thema,
...
Einführung:
Tischer, PC_intern 3.0;
von Microsoft gibt es ein (Beta)Dokument zu FAT, welches FAT beschreibt
und "häufige" Fehler anderer Implementierungen, ist auch hier im Forum 
zu finden

>Wenn ich auf meiner Karte nur eine einzelne Datei im root Verzeichnis
>liegen habe, auf die ich schreiben und lesen will, wie sieht es dann aus
>mit den Dir. Table?
steht in der Hauptverzeichnistabelle

>Wenn ich jetzt nur eine Datei im root Verzeichnis habe und diese Suchen
>möchte, dann müßte es doch reichen, wenn ich mir die Adresse des
>Directory Tables des root Verzeichnisses nehme und dann diesen Table (32
>Byte x 512 Einträge) nach dem Namen meiner Datei durchsuche, oder?
richtig; Anzahl der Einträge ist nicht korrekt, diese muss nicht 512 
sein.
(Steht im Bootsektor)

von Max P. (maxpower)


Lesenswert?

> ...mal richtig gute Unterlagen, zu diesem Thema
Hier ist die offizielle Microsoft Spec:
http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx

Das ist eine Seite die einen ganz guten Überblick gibt:
http://www.pjrc.com/tech/8051/ide/fat32.html


> Wenn ich auf meiner Karte nur eine einzelne Datei im root Verzeichnis
> liegen habe, auf die ich schreiben und lesen will, wie sieht es dann aus
> mit den Dir. Table?

Dann hat Du einen Eintrag im Root-Dir-Table. Da steht drin, wie die 
Datei heisst, wie gross sie ist, wann sie erstellt wurde, ... und bei 
welchem Cluster der Dateiinhalt zu finden ist.

> Wenn ich jetzt nur eine Datei im root Verzeichnis habe und diese Suchen
> möchte, dann müßte es doch reichen, wenn ich mir die Adresse des
> Directory Tables des root Verzeichnisses nehme und dann diesen Table (32
> Byte x 512 Einträge) nach dem Namen meiner Datei durchsuche, oder?

Nein, Du hast bei 512 Bytes pro Sektor 16 Einträge a 32 bytes.
Vorsicht allerdings, wenn Du Dich auf einem FAT32 Dateisystem befindest, 
dort ist das Root-Dir ein normales Verzeichnis, dessen Startcluster Du 
im BPB findest.

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
Noch kein Account? Hier anmelden.