31. Mär. 2025: Universelles PCI-Treibersystem: OpenPCI 40.2

Nach mehreren Betaversionen (amiga-news.de berichtete) hat Thomas 'Thor' Richter mit der Version 40.2 die erste stabile Version seines universellen PCI-Treibersystems "OpenPCI" veröffentlicht, die ohne Rückgriff auf die Software des jeweiligen Herstellers alle bekannten PCI-Lösungen für den Amiga unterstützt. Der Autor hat auf Nachfrage uns freundlicherweise die Hintergründe und Idee des Projektes erläutert:

"In diversen Foren wie zum Beispiel dem P96-Support gab es immer wieder Klagen über Probleme mit dem P96 Voodoo-Treiber, die sich letztlich auf Fehler in der Elbox-Implementierung eingrenzen ließen und zu einigen zuschaltbaren Workarounds im RTG-Treiber P96 (amiga-news.de berichtete) geführt haben. Es gab demnach von Anwendern den Wunsch, hier einen neuen fehlerfreien Treiber zu entwickeln. Ich wollte da eigentlich nicht im Elbox-Teritorium wildern, mich andererseits dem Wunsch aber nicht gänzlich verweigern und habe letztlich die Treiberentwicklung an die Bedingung der Bereitstellung eines A4000 geknüpft - vielleicht auch aus der Idee heraus, dass darauf sowieso niemand eingehen würde und ich damit meine Ruhe haben würde für Elbox und deren Hardware noch Support machen zu müssen.

Nun, unverhofft kommt oft, und tatsächlich hatte sich dann später ein User bei mir mit einem A4000 gemeldet. Er möchte lieber anonym bleiben, und ich möchte dem entsprechen - aber so bin ich recht überraschend in den Besitz eines A4000 mit Mediator und Voodoo-Graphikkarte gekommen - und hatte nun meine Bringschuld abzuarbeiten. Leider gibt es vom Mediator keine Dokumentation, so war auch dies mit einiger Arbeit verbunden - der Treiber selbst hingegen war nicht so kompliziert, hat 3dfx doch zumindest seinen Teil der Dokumentationspflichten erfüllt.

PCI als Erweiterungsschnittstelle für Amiga und als logischer Nachfolger von Zorro und Expansion blieb aber leider ein Problem. CBM hat mit Zorro damals den in PCs verbauten ISA-Bus in den Schatten gestellt, bei dem man noch mit Jumpern Karten konfigurieren musste, Karte A nicht mit Karte B funktionierte, und für jedes Programm die Konfiguration an die Hardware selbst vorgenommen werden musste. Autoconfig war also durchaus ein Meilenstein, der es als Erweiterung des 68k-Busses aber nicht in die PC-Welt schaffen konnte. PCI hat letztlich viele Ideen und Konzepte in ähnlicher Weise in der PC/x86-Welt etabliert, wie etwa IDs für Hersteller und Geräte, und konfigurierbare Basisadressen für Erweiterungskarten. PCI wäre wohl auch der nächste Amiga-Bus geworden, hätte sich CBM nicht vom Markt verabschiedet.

Leider stellte mich das jetzt vor das Problem, auf welche Basis ich den fertigen Voodoo-Treiber stellen sollte. Die undokumentierte Elbox-Schnittstelle zu PCI konnte nur als Notnagel dafür herhalten, und andere PCI-Lösungen arbeiten nur den jeweiligen Boards - die ganze Situation war für PCI etwa ähnlich verfahren wie für die MMU: Jeder "bastelt mal seins" in seiner Ecke, und Kompatibilität war den Egoismen der Hersteller wegen nicht gegeben. Ich bin dann durch Hinweise von Mitgliedern des a1k-Forums auf openpci aufmerksam geworden, was letztlich eine gemeinsame Schnittstelle für PCI darstellen wollte. Leider ist das Projekt im Stillstand, es entwickelt niemand mehr, und als Grundlage für weitere Entwicklungen hat das den Nachteil, dass für einige Hardware notwendige Features eben nie implementiert wurden.

Letztlich hat das dann zu der Überlegung geführt, es doch wieder selbst machen zu müssen. Anders als die ursprüngliche Idee von openpci, oben auf Herstellertreiber aufzusetzen, wollte ich direkt die Hardware ansprechen, weil einerseits die Hersteller gar nicht mehr existieren (G-Rex von P5) oder andererseits nicht mit guter Softwareentwicklung glänzten - Mediator von Elbox und deren undokumentierte Schnittstellen und deren ungewarteter Voodoo-Treiber waren Argumente gegen das ursprüngliche openpci-Design. Ferner hatte das ursprüngliche openpci ein paar Lücken im Interface, die leider einige Treiber unmöglich machen.

So entsteht jetzt also eine Library aufbauend auf dem ursprünglichen openpci-Interface, mit notwendigen Erweiterungen die zu einem guten Teil aus dem Prometheus-Projekt entlehnt sind; Erweiterungen, die neue zusätzliche Treiber ermöglichen, und welches die Abstraktion auf die PCi-Interface Hardware nach innen in die Library verschiebt anstatt von dem (teilweise doch mangelhaften) Willen der Hersteller abzuhängen. Es gibt also nur noch eine recht schmale interne Schnittstelle, die die Eigenheiten der jeweiligen Hardware wegabstrahiert und in eine gemeinsame Schnittstelle nach außen trägt. Das Gesamtwerk ist natürlich so angelegt, dass es sich nahtlos in das restliche System integriert, also passend zu SetPatch, den CPU-Libraries und der mmu.lib gebaut ist. Die Boot-Zeiten verkürzen sich, und Kompatibiltätsprobleme werden (hoffentlich) verringert." (dr)


< Point'n Click-Adventure: NEONnoir V1.2 mit deutschem Sprachkatalog | Amiga-Emulator: Amiberry 7.0.7 für Linux und macOS >