USB2LPT ist als sog. Multifunktionsgerät mit zwei (gleichzeitig wirksamen) Funktionen entwickelt.
Hauptsächliche Funktion ist das Durchreichen von Direktzugriffen auf das Parallelport, mit der USB-bedingten Verzögerung beim Port-Lesen. Alle Parallelport-Erweiterungen (PS/2, EPP und ECP) werden von der Firmware simuliert, müssen jedoch ggf. vom Windows-Treiber mit angezapft werden.
Das extra Drucker-Interface ermöglicht den Einsatz dieses Gerätes an Druckern ohne Geschwindigkeits-Einbuße. Alle bidirektionalen Drucker-Protokolle (Nibble Mode, Byte Mode, EPP und ECP) werden unterstützt und für den Rückkanal verwendet (ungetestet!).
Die dritte Funktion (JTAG) ist noch nicht implementiert. Es fehlt an Dokumentation über die verwendeten Datenströme. Sofern vorhanden wäre USB2LPT nicht langsamer, sondern deutlich schneller als ein konventioneller paralleler JTAG-Adapter an einer herkömmlichen Parallelschnittstelle.
Der Anwender muss selbst dafür Sorge tragen, dass sich die drei Funktionen nicht ins Gehege kommen! Also nicht drucken, wenn man gerade programmiert.
Mit dem Anstecken von USB2LPT an einen Windows-Rechner ergibt sich folgendes Treiber-Bild:
Die portzugriff-auslösende Software geht über eine der beiden Möglichkeiten, Debugregister-Trap oder angezapfte Portzugriffsfunktion* zum Haupttreiber usb2lpt.sys. Dieser wiederum reicht den Zugriff an USBD weiter, der seinerseits über den USB den Firmware-Teil Direkte Ein-/Ausgabe anspricht.
Auch hier fehlt noch die Implementation der dritten Funktion. Es wäre nur eine angepasste .INF-Datei vonnöten.
- READ_PORT_UCHAR()
- READ_PORT_USHORT()
- READ_PORT_ULONG()
- WRITE_PORT_UCHAR()
- WRITE_PORT_USHORT()
- WRITE_PORT_ULONG()