Hi, Habe auf meinem ATMega 1284P PATA zum laufen gebracht. Von den 6 Platten die ich noch hier habe, funktionieren 5 offenbar inzw. problemlos. Kann jedenfalls lesen und schreiben ohne Probleme. Die älteste ist eine Samsung 560MB Platte von 1995. Eine Platte bereitet mir jedoch Sorgen. Eine WD Caviar 31600 von 1996. Sobald ich das READ SECTOR(S) Kommando absetze, quitiert sie das mit dem Error Status Register 0x04 (Command Aborted). Der Alternate Status steht auf 0x40 (Drive Ready), der Status steht auf 0x51 danach (Error, Drive Ready, Drive Seek Complete). Initialisiert wird die Platte wie folgt: - warte 200ms - warte bis Rdy und nicht mehr Bsy - Schreibe ins Device Head Register 0x40 - warte bis Rdy und nicht mehr Bsy - Schreibe ins Feature Register 3 - schreibe ins Sector Count Register 1 - Schreibe ins Command-Register "Set Features" - warte bis nicht mehr bsy - Schreibe ins Command-Register "Recalibrate" Damit sollte die Platte auf den Default-PIO-Mode ohne IORDY eingestellt sein - auch wenn man den ganzen Set Features block auslaesst taucht der Fehler auf. !! Danach setze ich ein "Identify Device" ab, und die zurückgelesenen 16Bit-Werte sind OK - Model Name, Firmware-Ver, Sektor usw. sind korrekt !! --> 16Bit von der Platte lesen funzt also grundsaetzlich schon.... Ich gehe beim lesen von Sektor 0 wie folgt beim lesen vor: 1. Setzen Sector Count Register auf 1 2. Setzen Sector Number Register auf 0 3. Setzen Cylinder Low Register auf 0 4. Setzen Cylinder High Register auf 0 bis hierhin nach jedem CMD: Err 0x00, AltStat 0xe0, Stat 0x50 5. Setzen Device Head Register auf 0x40 (-> LBA) jetzt: Err 0x00, AltStat 0x40, Stat 0x50 6. Setzen Command Register auf 0x20 (READ SECTOR(S)) jetzt: Err 0x04, AltStat 0x40, Stat 0x59 (Eine funktionierende: Err 0xd0, AltStat 0x40, Stat 0x58) Hier taucht also schon der Fehler auf... Nun geht es so weiter: 7. Setze AVR-Port auf Eingabe 8. Warte bis HDD nicht mehr Busy und DRQ auf High 9. Nehme entsprechende CS und DA Pins auf Low 10. Aktiviere /RD, nop(), nop(), nop() 11. Lese Low-Byte 12. Gleichzeitig wird High-Byte in einem '573 gespeichert 13. Deaktiviere /RD 14. Output-Enable des '573, nop(), nop(), nop() 15. Lese High-Byte 15. Output-Disable des '573 16. Goto 10. Bis 512B gelesen 17. Setze alle CS und DA Pins auf High Ich habe auch schonmal die LBA-Register welche vor dem READ SECTOR(S) gefuellt werden nochmal zurueckgelesen. Es stehen die Werte drinn, welche ich vorher eingetragen habe. Achja... an einem PC kann ich mit dem LW im WDMA2-Modus problemlos Daten lesen und schreiben - irgendwas muss ich also falsch machen. Hat einer Eine Idee, wiso mein Laufwerk das Read-Sectors Command nicht mag?
wenn du noch festplatten von 1996 hast, hast du doch bestimmt auch genug alte hardware, um einen pc zusammen zu schrauben, an den du diese alte festplatte anschliessen und ein testprogramm des herstellers (ibm drive fitness test o.ä.) laufen lassen kannst. wenn sie im testprogramm auch zickt, weisst du bescheid ;-)
Ich schrieb ja schon, das ich problemlos von der Platte lesen und schreiben kann aufm PC (unter FreeBSD). Zwar keine Drive-Fitness-Test, aber immerhin... OK, betreibe sie jetzt dort nicht im PIO-Modus sondern WDMA, aber ich hoffe das ist belanglos ;) Ich vermute eher, das an meiner Initialisierung etwas faul ist, oder an meinem Lesevorgang. Mein lesen (ich lese trotzdem, auch wenn schon nach READ SECTORS error auf 04 steht) liefert immer die gleichen Daten zurueck. Irgendwie findet man auch nicht raus, was man mit denen anfangen soll....
Oliver Lehmann schrieb: > Ich habe auch schonmal die LBA-Register welche vor dem READ SECTOR(S) > gefuellt werden nochmal zurueckgelesen. Es stehen die Werte drinn, > welche ich vorher eingetragen habe. Evtl.LBA-Problem? http://de.wikipedia.org/wiki/FreeDOS Bei 500 MB und 2GB war eine magische Grenze. Zum Test würde ich die fragliche HD frisch mit einem alten (damals zeitgemäßen) DOS 5.0 partitionieren und gründlich formatieren um zu sehen, daß die gesund ist und sich der Norm entsprechend verhält.
Es könnTe auch eine Jumper-Frage sein. Frag Google nach dem Typ.
Wiso denkst du, MS-DOS 5.0 wäre '96 zeitgemäß gewesen? Ich hatte '94 schon MS-DOS 6.22 ;) Ich habs gerade mal ausprobiert - kann die Platte problemlos unter MS-DOS 6.22 partitionieren und verwenden Mir kommt gerade eine Idee - es könnte ja sein, dass das Model kein LBA unterstützt - das frage ich naemlich nicht ab. Das prüfe ich mal...
Doch... sie sichert LBA-Mode zu. Feature-Byte 53 ateht auf 2.
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.