mikrocontroller.net

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


Autor: Bernd E. (edi)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Max Power (maxpower)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ...mal richtig gute Unterlagen, zu diesem Thema
Hier ist die offizielle Microsoft Spec:
http://www.microsoft.com/whdc/system/platform/firm...

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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.