| Zeile 16: | Zeile 16: | ||
Falls keine der vorherigen Prüfungen fehlgeschlagen ist, müsste jetzt mindestens ein Gerät am Bus vorhanden sein. Das wird jetzt sichergestellt und genauer ermittelt, welche Geräte wirklich vorhanden sind. Dies wird mit dem IDENTIFY DEVICE Befehl gemacht. Beim Senden dieses Befehls ist es sehr wichtig, dass man die ATA-Spezifikation genau befolgt, und sich an die dort erwähnten Protokolle hält. Wenn das korrekt gemacht wird, geht das Erkennen ohne ewig lange Timeouts und co. von statten. Falls das Identifizieren eines Gerätes fehlschlägt, heißt das noch nicht, dass kein Gerät vorhanden ist. Denn es könnte auch sein, dass es sich um ein Gerät mit PACKET Interface handelt. Diese Geräte lassen sich mit dem IDENTIFY PACKET DEVICE identifizieren. | Falls keine der vorherigen Prüfungen fehlgeschlagen ist, müsste jetzt mindestens ein Gerät am Bus vorhanden sein. Das wird jetzt sichergestellt und genauer ermittelt, welche Geräte wirklich vorhanden sind. Dies wird mit dem IDENTIFY DEVICE Befehl gemacht. Beim Senden dieses Befehls ist es sehr wichtig, dass man die ATA-Spezifikation genau befolgt, und sich an die dort erwähnten Protokolle hält. Wenn das korrekt gemacht wird, geht das Erkennen ohne ewig lange Timeouts und co. von statten. Falls das Identifizieren eines Gerätes fehlschlägt, heißt das noch nicht, dass kein Gerät vorhanden ist. Denn es könnte auch sein, dass es sich um ein Gerät mit PACKET Interface handelt. Diese Geräte lassen sich mit dem IDENTIFY PACKET DEVICE identifizieren. | ||
| + | == Register == | ||
| + | {| {{Prettytable}} | ||
| + | ! Beschreibung !! 1. Kanal || 2. Kanal || 3. Kanal || 4. Kanal | ||
| + | |- | ||
| + | | Datenregister || 0x1F0 || 0x170 || 0x1E8 || 0x168 | ||
| + | |- | ||
| + | | Fehlerregister || 0x1F1 || 0x171 || 0x1E9 || 0x169 | ||
| + | |- | ||
| + | | Sektoranzahl || 0x1F2 || 0x172 || 0x1EA || 0x16A | ||
| + | |- | ||
| + | | LBA niedrig || 0x1F3 || 0x173 || 0x1EB || 0x16B | ||
| + | |- | ||
| + | | LBA mittel || 0x1F4 || 0x174 || 0x1EC || 0x16C | ||
| + | |- | ||
| + | | LBA hoch || 0x1F5 || 0x175 || 0x1ED || 0x16D | ||
| + | |- | ||
| + | | Geräteauswahl || 0x1F6 || 0x176 || 0x1EE || 0x16E | ||
| + | |- | ||
| + | | Status/Kommandoregister || 0x1F7 || 0x177 || 0x1EF || 0x16F | ||
| + | |- | ||
| + | | Status2/Steuerregister || 0x3F6 || 0x376 || 0x3EE || 0x36E | ||
| + | |} | ||
| + | |||
| + | === Datenregister === | ||
| + | Das Datenregister dient zur Übermittlung der Lese/Schreib-Words(!). | ||
| + | === Fehlerregister === | ||
| + | {| {{Prettytable}} | ||
| + | |||
| + | |} | ||
| + | === Sektoranzahl === | ||
| + | === LBA niedrig === | ||
| + | === LBA mittel === | ||
| + | === LBA hoch === | ||
| + | === Geräteauswahl === | ||
| + | {| {{Prettytable}} | ||
| + | ! width="60pt" | 7 !! width="60pt" | 6 !! width="60pt" | 5 !! width="60pt" | 4 !! width="60pt" | 3 !! width="60pt" | 2!! width="60pt" | 1 !! width="60pt" | 0 | ||
| + | |- | ||
| + | | r||r||r||r||r || SRST || nIEN || 0 | ||
| + | |} | ||
| + | |||
| + | * r: reserviert | ||
| + | * SRST: Software Reset | ||
| + | * nIEN: ??? | ||
| + | * 0: Immer 0 | ||
| + | |||
| + | === Status/Kommandoregister === | ||
| + | === Status2/Steuerregister === | ||
== Fehlerquellen == | == Fehlerquellen == | ||
| Zeile 29: | Zeile 76: | ||
* [http://t13.org/Documents/UploadedDocuments/project/d1321r3-ATA-ATAPI-5.pdf Working-Drafts der aktuellen Spezifikationen zu ATA(PI)] | * [http://t13.org/Documents/UploadedDocuments/project/d1321r3-ATA-ATAPI-5.pdf Working-Drafts der aktuellen Spezifikationen zu ATA(PI)] | ||
| − | [[Kategorie:Hardware]] | + | [[Kategorie:Hardware]][[Kategorie:Stub]] |