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
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.
>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 !
>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???
>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.
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?
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
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
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
wenn du sowieso schon mit nem µC auf die karte schreibst, dann lass den µC doch die datei erstellen
liest der „FAT Profi“ noch mit und hat evtl. eine Antwort zu meinem Problem vom 20.3.08 ? MfG Wolfgang
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
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.