Hallo alle zusammen, ich will von einer SD-Karte auslesen wieviel Speicher noch frei ist. Das stelle ich mir so vor: In die Fat-Tabelle springen alle Einträge durchgehne und dabei zählen wie oft 0x0000 drin steht. Dann noch meinen gezählten Wert mit der Größe eines Clusters multiplizieren und fertig. Jetzt mein Problem: Wieviele FAT-Einträge gibt es den? Jeder Eintrag hat 2 Bytes -> Es gibt 65535 Cluster. Wenn es 65535 Cluster gibt dann muss es auch 65535 Einträge geben. Und wenn man 65535 Einträge zu je 2 Bytes -> dann ist die SD-Karte voll ???? Als voll nur mit der FAT. Irgendwas stimmt da nicht. Würde mich freuen jemand ein wenig Licht ins Dunkel bringen Könnte.
Ich schrieb: > Wenn es 65535 Cluster gibt dann muss es auch 65535 Einträge geben. > Und wenn man 65535 Einträge zu je 2 Bytes -> dann ist die SD-Karte voll wenn es 65535 Einträge zu je 2 Bytes dann sind das 131070byte, wenn jetzt des Cluster 512byte hat dann sind es nur 256 cluster.
Bei FAT16 können 2 Bytes die Clusternummer von maximal 65536 Cluster aufnehmen. 65536 * 2 Bytes sind 128 Kibibyte. Das ist noch weit von den max. 2 Gibibytes (65536 * 32 Kibibyte pro Cluster), die eine FAT16 Partition inkl. FAT-Tabelle maximal haben kann.
Ah danke, da wäre ich heute nicht mehr drauf gekommen. Ich hab gerechnet 65535 Einträge*65535 Cluster. Was hab ich mir da nur fuer einen SCH.. ausgedacht. Aber jetzt hab ich-->Danke
@Sefan B. Jetzt hab ichs es gibt müssen nicht immer 65536 Cluster sein. Aber es sind trotzdem immer 65536 Einträge in der FAT.
Das sehe ich nicht so. Die Beschreibung von FAT16 z.B. bei Wikipedia (http://de.wikipedia.org/wiki/File_Allocation_Table) zeigt, dass es im Bootsektor einen Eintrag Anzahl Sektoren pro FAT gibt. Und die FAT kann durchaus auch für weniger als 65536 Einträge maßgeschneidert werden.
Achtung jetzt kommt die Musterlösung Ich ernennt mich hiermit zum FATMaster. Es ist so FAT16: -In der Tabelle sind immer 65535 Einträge. Diese beziehen sich auf die Cluster -Daraus folgt das es bei FAT16 immer 65535 Cluster gibt. Folgende Daten hab ich vom 1GB Karte ausgelesen: 512 Bytes pro Sektor 32 Sektoren per Cluster -> 16KB pro Cluster 16KB pro Cluster *65535 FAT Einträge ->Ergibt genau die Größe der Karte (1GB). Bei Kleinen Karten z.B 512 MB ändert sich nur die Cluster Größe auf 8KB Weil 8KB pro Cluster*65535 Fat Einträge ist 512MB die Größe der Karte So jetzt hab ichs verstanden und im Netz verewigt. Schönen Feieraben
Ich schrieb: > -Daraus folgt das es bei FAT16 immer 65535 Cluster gibt. Nein. Das ist nicht korrekt.
@Rufus Τ. Firefly Es gibt 100% immer 65535 Cluster genauso wie es immer 65535 Einträge gibt. Ob in den CLustern und in den Einträgen was drinnen steht hängt von den Daten ab die gespeichert sind. Natürlich belegt eine 1kb datei keine 65535 Cluster und benötigt auch keine 65535 Einträge. Bei einer 1GB Karte hat man eine Clustergröße von 16kb. Eine Datei mit 1KB wird somit auf der Karte einen Eintrag erzeugen und letztendlich 16KB in anspruchnehmen. 15 KB im Cluster sind frei.
@Rufus Τ. Firefly
Hat doch recht.
> -Daraus folgt das es bei FAT16 immer 65535 Cluster gibt
Die Aussage stimmt doch nicht.
Die Anzahl der Cluster und somit der FAT-Einträge errechnet sich so
Gesamtsektoranzahl des Mediums/Anzahl Sektoren pro Cluster =
AnzahlderCluster
Dann nimm doch mal ein Medium mit 700 MB. Da bleibt die Clustergröße bei 16 kB, es sind aber weniger Cluster. Man kann größere Cluster nehmen als vorgesehen. Bei deinem Beispiel 32 kB oder 64 kB. dann brauchst du nur 32767 oder 16737 Cluster. Dann wird auch die FAT kleiner
DirkB schrieb: > Man kann größere Cluster nehmen als vorgesehen. Bei deinem Beispiel 32 > kB oder 64 kB. 64 kiB-Cluster sind eine Ausnahme, die werden nicht mehr von allen Systemen mit FAT16-Unterstützung akzeptiert. Das offizielle Größenlimit liegt bei 32 kiB und damit 2 GiB Partitionsgröße. Die "inoffiziellen" 64 kiB-Cluster hat Microsoft mit alten Versionen von Windows NT eingeführt. Bei der Installation wurde eine 4 GiB große FAT16-Partition angelegt, deren Dateisystem im Laufe der Installation zu NTFS konvertiert wurde. Die von CD gestarteten Installationsroutinen waren damals nicht in der Lage, selbst mit NTFS umzugehen, daher dieser etwas merkwürdige Zwischenschritt. Für die Diskussion hier entscheidend: Die Größe eines Clusters ist immer eine Zweierpotenz von Sektoren, d.h. 1, 2, 4, 8, 16, 32 oder 64 Sektoren à 512 Byte, also 512, 1024, 2048, 4096, 8192, 16384 oder 32768 Bytes. Die Anzahl der letzlich verwendeten Cluster wird üblicherweise so festgelegt, daß die jeweils kleinste Clustergröße verwendet wird, bei der die möglichen ca. 65000 Cluster für die Partitionsgröße ausreichen.
Ich schrieb: > Jetzt mein Problem: > Wieviele FAT-Einträge gibt es den? Jeder Eintrag hat 2 Bytes -> Es gibt > 65535 Cluster. > Wenn es 65535 Cluster gibt dann muss es auch 65535 Einträge geben. Das ist die maximale Anzahl an Cluster die das FAT-Dateisystem verwalten kann... > > Und wenn man 65535 Einträge zu je 2 Bytes -> dann ist die SD-Karte voll > ???? Wie groß die FAT-Tabelle tatsächlich ist steht im Bootsector (Bei einer 1.44MB Fat12 Floppy sind es 9 Sectoren bzw ~4,5KB) > > > Einfach Fat einlesen, "0000" Einträge zählen, mit Sectoren/Cluster und Bytes/Sector multiplizieren -> freier Speicher
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.