Forum: Mikrocontroller und Digitale Elektronik FAT falscher Sektor


von Konz (Gast)


Lesenswert?

Nabend zusammen,

Plage mich gerade mit FAT16 auf meiner 1 GB SD Karte herum. Eine Datei 
sollte bei Sektor 32769 starten aber los gehen tut es bei 12752. Warum 
ist das denn so?

Grüße

von Benedikt K. (benedikt)


Lesenswert?

Vermutlich weil du einen Fehler in deiner Software hast.

von Konz (Gast)


Lesenswert?

Nein nein, ich schaue es mir gerade im Hex editor an.

von Konz (Gast)


Lesenswert?

Für die genauen Daten:

First Cluster bei 8001  dez. 32769
4 reservierte Sektoren
2*Fat Größe= 492 Sek
Root directory Größe 32 Sek

In der Fat Tabelle steht auf 100 der Wert 8101 und auf 102 8201 usw.

von holger (Gast)


Lesenswert?

>In der Fat Tabelle steht auf 100 der Wert 8101 und auf 102 8201 usw.

Die Cluster stehen im Little Endian Format in der Fat.
8101 => 0x0181
8201 => 0x0182

Dein Cluster 8001 hat also die Nummer 0x0180 -> 384 dez
Das ist aber nicht der Startsektor der Datei !

von IOP (Gast)


Lesenswert?

>Das ist aber nicht der Startsektor der Datei !

Warum denn?

Ich habe mich durch so viele Quellen durchgelesen, sogar durch die 
Original Spec von Microsoft, überall ist mir gesagt worden, dass der 
First Cluster bei hex 1a im Root Directory angezeigt wird. Bei Langen 
Dateinamen ist das halt bei den letzten 32Kb drin, sonst immer bei 1a. 
wenn das nicht der Fall ist, wo finde ich den Startsektor der Datei 
sonst???

von holger (Gast)


Lesenswert?

>wo finde ich den Startsektor der Datei
>sonst???

Den musst du über die Clusternummer ausrechnen:

U32 GetFirstSectorOfCluster(U32 cluster)
{
 return (((U32)(cluster - 2) * secPerCluster) + FirstDataSector);
}

secPerCluster findest du im Bootsektor.
Den Bootsektor muss man aber auch erst mal finden ;)
FirstDataSector ist der erste Sektor hinter dem Root-Directory.

von Konz (former IOP) (Gast)


Lesenswert?

Das ist mir alles schon längst klar. Trotzdem Danke. Ich finde es hat 
auch nichts mit little endian zu tun sondern mit der logischen und 
physikalsichen Sektornummer. Hat das auch einen Einfluss auf die SD 
Karten Sektoren? Ich meine das muss ja unsinnig sein, es gibt ja keine 
Leseköpfe etc. in einer SD Karte. Muss ich die CHS Nummer wirklich 
ausrechnen?

von skua (Gast)


Lesenswert?

der startcluster einer datei steht im directory eintrag
im zu diesem cluster gehoerendem eintrag der fat
steht die nummer des naechten clusters bzw das kein weiterer mehr belegt
beim berechnen der sektornummer muss die anzahl der sektoren pro cluster
beruecksichtigt werden ACHTUNG der erste datencluster ist nicht die
null da der anfang der fat schon reserviert ist

von KOnz (Gast)


Lesenswert?

Dankeschön aber der mein letzter Eintrag ist schon ca 1 Monat her. 
Mittlerweile ist der MP3 Player schon fertig und ich bin ein wahrer FAT 
Profi geworden

von Wolfgang-G (Gast)


Lesenswert?

Da muss ich doch gleich mal mein Problem ansprechen:
Gibt es eine Möglichkeit, den Anfang einer Datei durch irgendwelche 
Manipulationen auf einen bestimmten Sektor festzulegen?
Hintergrund: Wie schon mehrfach im Forum beschrieben, schreibe ich mit 
einem µC Daten bytweise in eine Datei, welche vorher auf einer 
formatierten SD-Karte angelegt wurde. Den Dateianfang suche ich mir z. 
B. mit WINHEX. Dabei musste ich feststellen, dass der Dateianfang zum 
Teil bei verschiedenen Sektoren liegt und ein einfacher Kartentausch 
somit nicht möglich ist.
Vielleicht hat der „FAT Profi“ (oder ein anderer) eine Idee, wie man den 
Dateianfang konkret festlegen kann.
MfG
Wolfgang

von willi (Gast)


Lesenswert?

wenn du sowieso schon mit nem µC auf die karte schreibst, dann lass den 
µC doch die datei erstellen

von Wolfgang-G (Gast)


Lesenswert?

liest der „FAT Profi“ noch mit und hat evtl. eine Antwort zu meinem 
Problem vom 20.3.08 ?
MfG
Wolfgang

von Sebastian (Gast)


Lesenswert?

Ich denke das beste ist, dem µC FAT richtig beizubringen, sodass er die 
Datei selbstständig findet. Du kannst ja die Einschränkung machen, dass 
die Datei im Root-Directory liegen muss, das vereinfacht die Sache 
etwas.

Alternativ kannst du natürlich über Winhex (oder ähnliche Späßle) die 
Datei händisch, also zahl für Zahl erstellen. Dann liegt sie da wo du 
sie haben willst. Ich denke aber die erste Version ist einfacher und 
praktikabler...

Sebastian

von Johnny Maxwell (Gast)


Lesenswert?

Oder man lässt das Dateisystem ganz weg.

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
Noch kein Account? Hier anmelden.