257
10.09.2023, 11:03 Uhr
Ordoban
|
Ich habe ein Problem entdeckt. Einige IDE-Festplatten akzeptieren bestimmte CHS-Parameter nicht. Das kann dazu führen, dass Dateinen nicht korrekt gelesen/geschrieben werden. Betroffen davon ist nur die letzte Firmware-Version 0.4
Zur Erklärung: Um von IDE-Festplatten Daten-Blöcke zu lesen/schreiben muss man der Platte sagen welcher Block gemeint ist. Das kann auf zwei Arten passieren: CHS und LBA. Bei CHS werden Zylinder, Kopf und Sektor-Nummern direkt angegeben. Bei LBA werden die Blöcke der gesamten Festplatte von 0 bis X durchnummeriert, und die Festplatte rechnet dann selber aus welcher Zylinder/Kopf/Sektor das ist. Die weiß nämlich selber, wieviele Zylinder, Köpfe und Sektoren die in der realen Hardware hat. Viele IDE-Festplatten haben nur eine Magnet-Scheibe, und nur ein oder 2 Köpfe. Die haben dafür sehr viele Zylinder und Sektoren. Da an verschiedenen Stellen des Systems die Anzahl von Zylindern, Köpfen und Sektoren begrenzt sind, würde man bei diesen Festplatten nur einen Bruchteil der Kapazität nutzen können. Die Festplattenhersteller haben deshalb die CHS-Translation erfunden. Die Festplatte rechnet zuerst die CHS-Angabe vom System in LBA um, und danach wieder in ihr eigenes CHS. Nach welchen Parametern die erste Umrechnung passiert, lässt sich einstellen. Man kann der Festplatte also sagen: "Du tust jetzt so, als hättest du 16 Köpfe und 17 Sektoren". Die Festplatten, die ich bisher hatte, haben das alle anstandslos gemacht. Deshalb bin ich davon ausgegangen, dass wirklich alle Festplatten alle Parameter-Kombinationen annehmen, und habe keine Fehlerbehandlung dafür in der Firmware. Jetzt habe ich eine Toshiba MK4309MAT (4GB 2.5°) bekommen, und die weigert sich, weniger als 8 Köpfe anzunehmen. Die bleibt dann auf den voreingestellten 8944 Zylindern, 15 Köpfen, 63 Sektoren. Das Problem bei der Firmware V0.4 ist, dass die mehrere Blöcke auf einmal lesen/schreiben kann. Man sagt der Festplatte: "Gib mir 6 Blöcke von Zylinder 10, Kopf 3, Sektor 15". Die Festplatte liest nun Sektor 15... 16... 17...... und müsste nun auf Kopf 4 Sektor 1 springen, liest aber statt dessen Sektor 18... 19... 20.
Es gibt ein kleines Programm, mit dem ihr herausfinden könnt ob eure Festplatte betroffen ist: https://imoriath.com/downloads/privat/cm1910/AFIINFO.EXE Das sollte bei "Aktuelle CHS-Paramter" die eingestellte Anzahl Köpfe und Sektoren anzeigen. (Die Anzahl Zylinder errechnet sich nach der Kapazität der Festplatte) -- Gruß Stefan |