Der SCSI-Treiber ist eine offene Software-Schnittstelle (API) für den Zugriff auf beliebige Peripheriegeräte, nicht nur SCSI-Geräte. Auch SATA-Laufwerke für optische Medien wie DVDs und BDs verwenden den SCSI-Kommandosatz. Für andere Hardware-Schnittstellen, z. B. IDE oder USB, lassen sich SCSI-Kommandos emulieren, so wie es HDDRIVER für IDE- und SATA-Festplatten tut. Alles in allem lassen sich mit SCSI-Treibern beliebige SCSI-Kommandos an nahezu beliebige Schnittstellen schicken.
Die Quelltexte für die Software auf dieser Seite sind auf GitHub verfügbar.
Intern besteht HDDRIVER aus zwei Treiber-Schichten: Dem SCSI-Treiber und dem eigentlichen Festplattentreiber. Letzterer greift ausschließlich über den SCSI-Treiber auf Geräte zu. So lassen sich beliebige Geräte-Schnittstellen nahtlos integrieren. Beim SCSI-Treiber kann es sich um einen der in HDDRIVER eingebauten SCSI-Treiber handeln (für ACSI/SCSI/IDE/ATAPI/SATA), um einen SCSI-Treiber eines Drittanbieters, z. B. für USB, oder eine Kombination. Existiert beim Start von HDDRIVER bereits ein SCSI-Treiber für Bus 0 (ACSI), 1 (SCSI) oder 2 (IDE) benutzt HDDRIVER zum Zugriff auf diesen Bus automatisch den bereits vorhandenen SCSI-Treiber statt seines eigenen.
Ein Milan mit PCI-SCSI-Karte stellt ein gutes Beispiel dar: Für SCSI-Zugriffe nutzt HDDRIVER den PCI-SCSI-Treiber des Milan, der bereits beim Start von HDDRIVER verfügbar ist. Für IDE-Zugriffe nutzt HDDRIVER seinen eigenen SCSI-Treiber für Milan IDE/ATAPI/SATA. Bei MagiCMac, MagiCPC, Hatari und ARAnyM ist es ähnlich, vorausgesetzt dass HDDRIVER nach dem SCSI-Treiber für die jeweilige Plattform/Hardware gestartet wird.
HDDRIVER unterstützt die aktuelle Version 1.01 der SCSI-Treiber-Schnittstelle vollständig. Die Dokumentation ist im ST GUIDE-Format verfügbar und beinhaltet C- und Modula-2-Bindings.
Eine kleine Schwachstelle der SCSI-Treiber-Schnittstelle ist die Beschränkung auf die LUNs 0-7 (SCSI-Untereinheiten) pro Gerät, obwohl SCSI (nicht aber ACSI) 32 LUNs erlaubt. Durch eine abwärtskompatible Erweiterung der SCSI-Treiber-Schnittstelle lassen sich mit HDDRIVERs SCSI-Treiber alle 32 SCSI-LUNs verwenden. Mehr als 8 LUNs werden beispielsweise von SCSI2Pi unterstützt.
HDDRIVER unterstützt als einziger Treiber die SCSI-Treiber-Target-Schnittstelle: Ein TT oder Falcon werden von anderen Computern (auch Nicht-Ataris) als SCSI-Geräte erkannt und können standardisierte oder selbstdefinierte SCSI-Kommandos ausführen.
Beispielcode in C für die Implementierung eigener SCSI-Kommandos ist auf GitHub verfügbar. Für die fehlerfreie Funktion des Target-Interfaces muss jede Software, die auf SCSI-Peripherie zugreift, dies über die SCSI-Treiber-Schnittstelle tun.
In den HDDRUTIL-Einstellungen lässt sich konfigurieren, ob HDDRIVER mit oder ohne Unterstützung der Target-Schnittstelle installiert werden soll. Ohne Target-Unterstützung (das Standard-Interface bleibt verfügbar) belegt HDDRIVER etwa 3 KiB weniger RAM.
Voll funktionsfähige SCSI-Treiber sind für die folgenden Hardware-Schnittstellen bzw. Emulatoren verfügbar:
Schnittstelle/Emulator | Softwarepaket | Autor |
---|---|---|
Atari ACSI/SCSI/IDE | HDDRIVER CBHD/SCSIDRV.PRG |
Uwe Seimet Claus Brod, Steffen Engel |
Atari ATAPI/SATA | HDDRIVER | Uwe Seimet |
Milan IDE/ATAPI/SATA | HDDRIVER | Uwe Seimet |
Milan SCSI | Milan PCI SCSI Driver | Michael Schwingen |
MagiCMac | MM_SCSI.PRG | Steffen Engel, Thomas Tempelmann |
MagiCPC | SCSIDRIV.DLL | Steffen Engel |
Hatari (Linux SCSI/IDE/ATAPI/SATA/USB) | NF_SCSI, s. unten | Uwe Seimet |
ARAnyM (Linux SCSI/IDE/ATAPI/SATA/USB) | NF_SCSI, s. unten | Uwe Seimet, Thorsten Otto |
Es gibt auch andere, möglicherweise unvollständige Implementierungen mit unbekanntem Status (z. B. für USB), die hier nicht aufgeführt sind. Der SCSI-Treiber der FireBee hat leider bekannte Fehler und kann daher nicht von HDDRIVER und HDDRUTIL genutzt werden.
Zur Implementierung eines neuen SCSI-Treibers wird empfohlen, neben der SCSI-Treiber-Dokumentation die offiziellen SCSI-Standards zu lesen. Informationen zum SCSI-Treiber-Interface liefern auch einige meiner Artikel für die Zeitschrift ST Computer.
Mit Linux erlaubt dieser SCSI-Treiber den direkten Zugriff auf Massenspeicher. Die Webseite zu Emulatoren liefert weitere Informationen.
SCSI_MON protokolliert Aufrufe des SCSI-Treibers. Dies hilft bei der Fehleranalyse oder beim Entwickeln eines neuen SCSI-Treibers. SCSI_MON hilft auch beim Verstehen der SCSI- und SATA-Software-Protokolle.
SCSI-Treiber- und Firmware-Testsuite 3.00
Dieses Archiv enhält mehrere Tools zum Testen von SCSI-Firmware/Emulationen (insbesondere SCSI-2 und neuer) und einiger SCSI-Treiber-Funktionen, auch für SCSI-Treiber, die IDE/SATA-Platten oder USB-Geräte unterstützen. Getestet wird die Kompatibilität zu SCSI-2, nicht die Kompatibilität zu HDDRIVER. Letztere folgt aus der SCSI-2-Kompatibilität. Die Testsuite zeigt außerdem eine Reihe von Geräteeigenschaften an.
Das Beispiel-Logfile zeigt die Daten von Geräten, die alle Tests bestehen: Eine IBM DDRS-39130-Festplatte, eine von SCSI2Pi emulierte Festplatte, ein von SCSI2Pi emulierter Streamer und das Target-Interface von HDDRIVER.