Gast
#3322665
Hallo! Ich bin gerade dabei meinem Atmega8 FAT16 beizubringen. Ich möchte wissen warum RootDirSectors so errechnet wird: RootDirSectors = ((BPB_RootEntCnt * 32) + (BPB_BytsPerSec – 1)) / BPB_BytsPerSec; Note also that this computation rounds up. Ich habe schon Google befragt, aber keine zufriedenstellende Antwort gefunden. Angeblich hat das Aufrunden mit der Konvertierung zwischen CHS und LBA zu tun, nur eine Erklärung habe ich nicht gefunden. Jedoch spreche ich eine mmc Karte immer per LBA an. Jedenfalls bin ich bei der oben genannten Rechnung immer 1 Block über dem richtigen Ergebnis (habe ein hex dump der Karte im Hexeditor analysiert). z.B RootEntCnt=512; BPB_BytsPerSec=512 (512*32+511)/512=32,998 -> RootDirSectors=33 Jedoch ist RootDirSectors auf der Karte nur 32 Blocks groß. Möglich wäre auch das RootDirSectors=33 ein "sizeof" wert ist und ich bei der Adressierung -1 rechnen muss. Jedoch stimmt das leider auch nicht. Irgendwelche Ideen? Schöne Grüße