SCSI-Treiber

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.

Standard-Schnittstelle

HDDRIVER unterstützt 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.

SCSI-Treiber-Dokumentation herunterladen SCSI-Treiber-Dokumentation

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 RaSCSI lassen sich leicht Geräte mit mehr als 8 LUNs einrichten. Mit einer kleinen, abwärtskompatiblen Erweiterung der SCSI-Treiber-Schnittstelle lassen sich alle 32 LUNs verwenden.

Target-Schnittstelle

HDDRIVER unterstützt optional 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.

SCSI-Target-Interface
Der Screenshot zeigt den Geräte-Check eines TT, mit einem Falcon am selben Bus. Auf dem TT (SCSI ID 7) läuft HDDRIVER 11.06, auf dem Falcon (SCSI ID 6) HDDRIVER 11.05. Beide Computer "sehen" sich, und der eine kann vom anderen gesendete 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.

Implementierungen

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, offenbar unvollständige Implementierungen mit unbekanntem Status, die daher nicht aufgeführt sind. Der SCSI-Treiber der FireBee hat bekannte Fehler.
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.

Treiber für Hatari und ARAnyM

NF_SCSI herunterladen NF_SCSI 1.20

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.

Device check with SCSI Driver

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-Treiber-Monitor

SCSI_MON herunterladen SCSI-Treiber-Monitor 1.40

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

SCSI-Treiber- und Firmware-Testsuite herunterladen SCSI-Treiber- und Firmware-Testsuite 2.31

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 RaSCSI emulierte Festplatte und das Target-Interface von HDDRIVER 11.

Beispiel-Logfile Beispiel-Logfile