FAT falscher Sektor

Gast #779921
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.
Gast #779941
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 !
Gast #780045
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???
Gast #780052
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.
Gast #780060
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?
Gast #817638
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
Gast #817938
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
Gast #831514
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren