mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik FAT32


Autor: Bruno (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe nun in letzter Zeit versucht das FAT32 Dateisystem zu
verstehen. Den MBR habe ich nun verstanden. Das Root Verzeichnis
scheint auch klar zu sein.
Nun zu den Problemen: Wie finde ich die Startadresse des
Root-Verzeichnis und die Adresse für die FAT? Für was braucht man die
Fat? Im Root Verzeichnis sin ja alle notwendigen Angaben vorhanden.

Danke für eure Hilfe

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Google so schwierig zu bedienen?
http://home.teleport.com/~brainy/fat32.htm mitsamt Doku vom MS.

Autor: ape (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ansonsten steht die Adresse des Root-Verzeichnisses im Volume Boot
Record und die Adresse an der die FAT beginnt lässt sich an Hand der
Adresse des VBR und der Anzahl der reserveden Sektoren berechnen.
Bei FAT32 unterscheidet sich das Root-Verzeichnis übrigens nicht mehr
von den normalen Verzeichnisen bis auf den Punkt, das die adresse im
VBR steht. Es gibt aber keine Limitierung mehr auf 512 Einträge.

Autor: Bruno (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich schreibe, dass ich die MBR und das Root verzeichniss verstanden
habe, dann scheint es doch danach, dass ich bereits bereits mit Google
diverse Beiträge gelesen habe. Frage mich sowieso, wieso du dir
überhaupt die Mühe machst, da deine Antwort nicht sehr konstruktiv
ist.

Wünsche dir (A.K.) dennoch einen schönen Abend

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sowohl in der MS Doku als auch den den anderen Stellen steht der Pointer
auf die Rootdir ziemlich explizit drin. Nach Du aber grad danach gefragt
hast, hatte ich gewisse Zweifel, was Du an Material dazu gelesen
hattest. Sorry für die Fehleinschätzung.

Autor: Jochen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also die FAT braucht man dazu um immer denn nächsten cluster, der datei
oder des Verzeichnis zu bekommen. D.h. du schaust in die Tabelle unter
dem cluster den du z.b. grad gelesen hast nach ob es noch weiter geht
oder ob es das ende der datei/verzeichnis ist, diese information steht
in der FAT. Meist ist diese zweimal vorhanden, da wenn die FAT im Arsch
ist alle daten weg sind, außer du fängst an puzzel zu spielen

Autor: LameM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
rofl manchmal habe ich so das gefühl, das manche leute sich nicht mal
den 1. beitrag durchlesen :-)


Offset                     Description
Start of Partition          Boot Sector
Start + # of Reserved       Sectors Fat Tables
...

das steht z.b. in der doku (A.K.s link)

also anfang jeder partition + anzahl der reservierten cluster und schon
sollte man bei der 1. FAT sein
achso und das root verzeichnis ist ja als pointer im bootsektor
angegeben

LameM

Autor: Jochen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@lameM
wenn du mich gemeint hast, hab sehr wohl denn ersten beitrag gelesen da
steht gegen ende
Für was braucht man die Fat?
und das hab ich wohl beantwortet

Autor: Bruno (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Laut Spezifikation müsste der Offset zum Root Verzeichnis an 0x2C
stehen:
Winhex:
00-0F EB 58 90 4D 53 44 4F 53 35 2E 30 00 02 02 22 00
10-1F 02 00 00 00 00 F8 00 00 3F 00 FF 00 20 00 00 00
20-2F E0 D1 03 00 CB 03 00 00 00 00 00 00 02 00 <= 0x0002 Cluster2

FAT32 1024 Byte/Cluster => Root@ 0x800

Stehen aber nur 00 00 drin

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Clusternummern sind relativ zum Anfang des Datenbereichs zu
verstehen, wobei Nummer 2 eigentümlicherweise den Anfang bildet. Und wo
der Datenbereich beginnt steht im o.A. Link unter "FAT32 Drive
Layout".

Wenn also die Rootdir an Cluster 2 beginnt, dann ist das der erste
Cluster vom Datenbereich und nicht etwa der dritte Cluster der Platte.
Der Datenbereich beginnt erst hinter den reservierten Sektoren (Offset
0x0E = 0x22) und beiden FATs (Grösse: Offset 0x24 = 0x3CB). Also bei
Sektor (0x22 + 2*0x3CB) = 0x7B8.

Autor: Bruno (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aha jetzt habe ich begriffen:

Rootdir=(Adr0x0e+(2 * Adr0x24)) * 512Byte=0xF7000
Rootdir=(0x22   +(2 * 0x03CB )) * 512Byte=0xF7000

FAT1   =(Adr0x0e * 512Byte) =0x4400
FAT1   =(0x22 * 512Byte)    =0x4400

FAT2   =((Adr0x0e + Adr0x24) * 512Byte) =0x7DA00
FAT2   =((0x22 + 0x03CB) * 512Byte)      =0x7DA00

Daten  =(Adr0x0e+(2 * Adr0x24) * 512Byte + 1 Cluster=0xF7400
DAten  =(0x22   +(2 * 0x03CB ) * 512Byte + 1 Cluster=0xF7400

:) passt genau danke Dir für deine Hilfe.

Ich glaube jetzt habe ich es verstanden

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.