Der SCSI-Treiber ist eine offene Software-Schnittstelle 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 beliebige Schnittstellen schicken.
Die Quelltexte für die Software auf dieser Seite sind auf GitHub verfügbar.
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 8 LUNs (SCSI-Untereinheiten) pro Gerät, obwohl SCSI (nicht aber ACSI) 32 LUNs erlaubt. Mit PiSCSI lassen sich leicht Geräte mit mehr als 8 LUNs einrichten. Mit einer kleinen, abwärtskompatiblen Erweiterung der SCSI-Treiber-Schnittstelle lassen sich seit HDDRIVER 12 alle 32 LUNs verwenden.
HDDRIVER unterstützt als einziger Treiber die Target-Schnittstelle: 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 festlegen, 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 | CBHD/MM_SCSI.PRG | Steffen Engel, Thomas Tempelmann |
MagiCPC | CBHD/SCSIDRIV.DLL | Steffen Engel |
Hatari 2.x (Linux SCSI/IDE/ATAPI/SATA/USB) | NF_SCSI, s. unten | Uwe Seimet |
ARAnyM 1.1 (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.
Dieser SCSI-Treiber für TOS erlaubt mit Linux direkten Zugriff auf Geräte wie Festplatten, SSDs, Speicherkarten, optische Laufwerke oder Streamer. Unterstützte Schnittstellen sind SCSI, IDE/SATA und USB. NVMe-SSDs erfordern einen NVMe-nach-USB-Adapter.
Der Treiber kann als reguläres Programm oder als HDDRIVER-Modul gestartet werden. Bei Hatari muss die NatFeats-Unterstützung explizit in der Hatari-Konfigurationsdatei oder per Kommandozeile aktiviert werden.
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. Das Programm kann als reguläres Programm oder als HDDRIVER-Modul gestartet werden.
SCSI-Treiber- und Firmware-Testsuite 2.33
Dieses Archiv enhält Tools zum Testen von SCSI-Firmware/Emulationen (insbesondere SCSI-2 und neuer) und gewisser SCSI-Treiber-Funktionen, auch für SCSI-Treiber, die IDE/SATA-Platten oder USB-Geräte unterstützen.
Das Beispiel-Logfile zeigt die Daten von Geräten, die alle Tests bestehen: Eine IBM DDRS-39130-Festplatte, eine von PiSCSI emulierte Festplatte und das Target-Interface von HDDRIVER.