Hallo, in sehr vielen Dokumenten (z.B. fatgen103.pdf) wird immer wieder beschrieben, dass die "Number of Reserved Sectors" für FAT32 den Wert 32 haben sollte und für FAT16 den Wert 1. Nun habe ich hier unterschiedliche SD/SDHC Karten mit FAT/FAT32 an meinem STM32 eingelesen und sehe an Byte 14-15 alle Möglichen anderen Werte (z.B. 4350 bei FAT32, oder auch 2 oder 8 bei unterschiedlichen FAT16 Karten). Wie sind denn so eure Erfahrungen mit dieser Zahl. Mir kommt dieser Wert sehr merkwürdig vor. Generell funktioniert meine SD und FAT library gut - ich will es nur verstehen. Formatiert habe ich sie unter Windows 10. Gruß, Heiko
Heiko schrieb: > Nun habe ich hier unterschiedliche SD/SDHC Karten mit FAT/FAT32 an Diese Karten benutzen u.a. die reservierten Sektoren um die FAT an 1MB/4MB Grenzen auszurichten. So groß sind nämlich die Flash Strukturen intern in der Karte (laut Spec). SDHC Karten sollte man nur mit dem Formatter von SDcard.org formatieren.
Oh Ja. Das ändert doch schonmal für die FAT16 SD Karte den Wert auf die erwartete 1. Aber bei der FAT32 SDHC Karte lese ich auch nach dem erneuten Formatieren diese merkwürdige 4350... Noch irgendeine Idee dazu?
Heiko schrieb: > Oh Ja. Das ändert doch schonmal für die FAT16 SD Karte den Wert auf die > erwartete 1. > Aber bei der FAT32 SDHC Karte lese ich auch nach dem erneuten > Formatieren diese merkwürdige 4350... > Noch irgendeine Idee dazu? Die Clustergrösse kann bei FAT32 (abhängig von der Mediengrösse und der gewählten Partitionierung) variieren (512 Bytes, 1, 2, 4, 8, 16 KBytes). Weil die FAT nun mal Cluster- (und keine Sektor-) Indizes verwaltet, muss der Datenbereich an einer Clustergrenze beginnen. Die reservierten Sektoren werden dazu verwendet, um den Beginn des Datenbereichs darauf auszurichten. Dazu werden je nach gewählter Clustergrösse (und ein paar anderen Parametern wie beispielsweise Anzahl der Reserve-FATs) unterschiedlich viele "Füll"-Sektoren gebraucht.
Heiko schrieb: > Aber bei der FAT32 SDHC Karte .. sind die internen Sektoren in der Karte (laut Spec) 4MB gross, da muss das SD Formatter Tool mehr Platz am Anfang frei lassen. Auf den krummen Wert musst Du ja noch den Offset aus der Partitionstabelle aufaddieren.
Jim M. schrieb: > Heiko schrieb: >> Aber bei der FAT32 SDHC Karte > > .. sind die internen Sektoren in der Karte (laut Spec) 4MB gross, da > muss das SD Formatter Tool mehr Platz am Anfang frei lassen. Auf den > krummen Wert musst Du ja noch den Offset aus der Partitionstabelle > aufaddieren. Muss es nicht unbedingt (funzt auch so), aber sollte: wenn die FAT (deren Sektoren ja sowieso schon praktisch ständig neu geschrieben werden müssen) die Grenze zwischen zwei Flash-Pages überstreicht, müssen bei jedem Schreibzugriff auch noch zwei solcher Pages gelöscht und neu beschrieben werden.
Aber dennoch sagt die Spezifikation etwas von Number of Reserved Vectors = 32. Wie kommen die dann auf diesen Wert?
Heiko schrieb: > Aber dennoch sagt die Spezifikation etwas von Number of Reserved Vectors > = 32. Nein, das tut sie nicht. Lies' einfach mal selber nach, was dort tatsächlich steht. Und mal abgesehen davon, dass das nicht wirklich dort steht, sagt schon allein die Logik: Würde in diesem Feld immer nur der gleiche Wert stehen dürfen, dann bräuchte es dieses Feld garnicht geben, es wäre schlicht vollkommen überflüssig, denn der Typ des FS wird ja an anderer Stelle bereits eindeutig identifiziert und damit der (nur nach deiner Lesart) konstante Offset, der zu verwenden wäre.
c-hater schrieb: > Nein, das tut sie nicht. Lies' einfach mal selber nach, was dort > tatsächlich steht. Danke - ich habe nachgelesen: "... typicall 32 for FAT32 ..." Wieso gehst du davon aus, dass ich nicht selber nachlesen könne? Dann sag mir doch bitte welche Spec du durchgelesen hast und was dort steht. Dann verstehe ich es vielleicht auch - das war schließlich der Grund meines Fragens.
Heiko schrieb: > c-hater schrieb: >> Nein, das tut sie nicht. Lies' einfach mal selber nach, was dort >> tatsächlich steht. > > Danke - ich habe nachgelesen: "... typicall 32 for FAT32 ..." Und du erkennst nicht den unterschied zu: Heiko schrieb: > Aber dennoch sagt die Spezifikation etwas von Number of Reserved Vectors > = 32. ? "typically" ist nicht die englische Übersetzung von "zwingend". Sondern es ist der typische Wert. Je nach Situation (z.B. wenn es sich um eine SD-Karte handelt) kann von diesem Wert auch abgewichen werden. Sonst wäre es - wie "c-hater" schon schrieb - ja auch völlig nutzlos, ihn überhaupt mit anzugeben.
Heiko schrieb: > Aber dennoch sagt die Spezifikation etwas von Number of Reserved Vectors > = 32. Wie kommen die dann auf diesen Wert? Welche "Spezifikation" sagt das denn? In meiner steht: Number of reserved sectors in the reserved region of the volume starting at the first sector of the volume. This field is used to align the start of the data area to integral multiples of the cluster size with respect to the start of the partition/media. This field must not be 0 and can be any non-zero value. This field should typically be used to align the start of the data area (cluster #2) to the desired alignment unit, typically cluster size. Und das ist genau das, was wir dir hier schon mehrfach mitgeteilt haben.
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.