Hallo, ich schreibe meinen eigenen kleinen FAT-Treiber und habe da ein Problem. Ich habe ein SD-Karte mit 4K Blockgrösse, frisch formatiert eine 24K Datei belegt die Cluster 2-7 (am PC erstellt). Wenn ich mich durch die FAT hangel zum Auslesen bekomme ich auch alle Daten. Wenn ich jetzt die Datei löschen will lösche ich sie aus dem Inhaltsverzeichnis und setze in der FAT analog zum Auslesen die Cluster 2-7 auf 0 (unbenutzt), das funktioniert offensichtlich da ich bei Cluster 7 als nächsten Verweis 0xFFFF (EOF) bekomme, trotzdem sind jetzt auf der SD-Karte 8 Kbyte belegt, also 2 Cluster nicht gelöscht??? Irgendwelche Ideen? matt
Hallo matt, in der FAT gibt es noch eine Tabelle welche Cluster Frei oder Belegt sind. In der Tabelle musst du die Cluster auch freigeben, nicht nur im Inhaltsverzeichniss. Wo diese Tabelle steht (welcher Cluster) weiß ich jetzt auf die schnelle nicht, ich würde mal Cluster0 tippen. MfG
Ich wuerde das auch so machen. Loeschen setzt ein Bit und neue dateien kommen hintennach. Ich wuerd auch erst loeschen wenn nichts mehr da ist.
da habe ich mich etwas falsch ausgedrückt. Ich setze in der Dateitabelle den Dateinamen auf ungültig und setze dann IN der FAT die entsprechenden Cluster auf unbenutzt, so wie ihr das vorschlagt und trotzdem bleibt irgendwas übrig
Ja; gibt es den irgendein Programm womit man am PC so etwas analysieren kann? (und ich meine keinen Hexeditor :-)
Was steht jetzt bei dir im Cluster 7? Haste das Offset von zwei Einträgen in der FAT beachtet?
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.