PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : FAT: Freien/Belegten Speicher auslesen



Jaecko
18.10.2008, 20:59
Moin.

Eine zwar einfache Frage, aber evtl komplizierte Antwort...

Hab bereits ne SD-Karte mit FAT16 am laufen. Grundlage waren die Sources von U.Radig. Ich bin gerade dabei, das ganze noch erweitern, u.a. um den freien/belegten/gesamten Speicherplatz der SD-Karte zu ermitteln.

Für den belegten wäre meine Idee, einfach durch alle Ordner durchwühlen, alle Verzeichniseinträge auslesen und die Grössenangaben zu addieren.
Den Freien gibts dann als Differenz zum Gesamten (den müsste ja man irgendwo im CSD/CID finden?)

Gibts für den belegten Speicher noch was einfacheres oder evtl sogar schon was fertiges?

mfG
S.C

sternst
18.10.2008, 22:00
Nun, ich kenne den FAT-Aufbau nicht im Detail, aber jedes Dateisystem beinhaltet auch immer eine relativ einfache Möglichkeit (z.B. eine Tabelle), um zu erkennen, welche Blöcke frei und welche belegt sind. Das ist ein integraler Bestandteil des Dateisystems, denn es wäre schon ziemlich ineffektiv, wenn man sich auf der Suche nach einem freien Block (z.B. für eine neue Datei) durch alle existierenden Dateien hangeln müsste.
Diese Tabelle/Liste/WasAuchImmer musst du nur durchgehen und die jeweiligen Blöcke (frei/belegt) aufaddieren.

cipher
19.10.2008, 11:43
Hi!

Ich hab mich früher zu DOS-Zeiten auch mal mit dem Aufbau von FAT16 beschäftigt. So einfach, wie Du meinst, funktioniert das mit dem Druchtraversieren durch den Verzeichnisbaum leider nicht: Der Datenträger wird in 512 Byte große Blöcke unterteilt, in denen die Dateien gespeichert werden. Dabei wird aber ein Block nur für eine Datei verwendet. Das hat zur Folge, dass der Inhalt einer Datei mit 1 Byte bereits die vollen 512 Byte verbrät. Und das ist wie gesagt nur der Inhalt. Du brauchst auch noch Blöcke für das gesamte Management des Datenträgers (Bootsektor, FAT-Tabelle(n), defekte Sektoren, etc.). Auch die Verzeichnisse schlucken mehr, als man bei erster Betrachtung meinen will. Die müssen nämlich speichern, welche Dateien sie enthalten.

Das Beste, um den freien und belegten Speicher zu prüfen ist es, die belegten Sektoren zu zählen (aus der FAT nehmen) und gegen die gesamte Anzahl zu rechnen.

Persönlich halte ich FAT16 für ein doch ganz brauchbares Dateisystem für kleine Anwendungen, da es alles enthält, was man so braucht und relativ einfach in der Implementierung ist. Wenn man geschickt und mit ein bisschen Tricks programmiert, sollte das auch relativ sparsam im Umgang mit RAM sein.



Viele Grüße

Markus