Hallo Besucher, der Thread wurde 1,2k mal aufgerufen und enthält 3 Antworten

letzter Beitrag von Zirias/Excess am

opencbm Treiber für Parallel-Port auf FreeBSD?

  • Hi zusammen,


    unwahrscheinlich, aber ich frage trotzdem mal bevor ich das irgendwann dann selbst mache: Hat irgendjemand den Linux-Treiber von opencbm (für die parallelen Kabel, z.B. XM-1541) schonmal auf FreeBSD portiert? Sollte theoretisch machbar sein, ppbus auf FreeBSD scheint ein recht ähnliches API zu bieten wie parport auf Linux -- aber sicher trotzdem ne Menge Mühe, das zu portieren :o

  • portieren ist sogar mehr Aufwand als ich ursprünglich dachte ... von der Idee, den Linux Treiber Stück für Stück umzuschreiben habe ich mich verabschiedet, stattdessen implementiere ich "from scratch" und nehme den Linux Treiber als "Spickvorlage".


    Bin jetzt so weit, dass ein Treiber geladen wird, der sich auf den "ppbus" hängt, die FreeBSD abstraktion des parallelport als "Gerätebus". Schön.


    Der originale Treiber auf Linux reserviert sich beim laden exklusiv den Parallelport. Als ich das auf FreeBSD versucht habe schien es zu funktionieren, beim Entladen des Treibers hat aber das System mit einem spontanen Reset reagiert :( So gut und umfassend die FreeBSD doku aus Anwender und Anwendungsprogrammierer-sicht ist -- aus Kernelprogrammierersicht ist fast nichts da, also vermute ich, dass mein Ansatz zur Reservierung des Parallelports einfach falsch war ...


    Weiß jemand warum opencbm auf Linux den Parallelport dauerhaft reserviert, und ob das wirklich nötig ist?

  • Die Frage nach dem warum hat sich erledigt, hatte es falsch gemacht, wenn ich es richtig mache klappt es auch (oh Wunder) und dann ist es sicher sinnvoll, sich den Port exklusiv zu reservieren. Fortschritte also sichtbar ;)

    Code
    1. nexus# kldload ./opencbm.ko
    2. nexus# dmesg -c
    3. opencbm0: <Serial CBM bus driver> on ppbus0
    4. opencbm0: parallel port is mine now
    5. opencbm0: using passive (XM1541) cable (auto)
  • Soo, der Treiber funktioniert! Wunderbar, kann ich mein altes XMP-1541 Kabel weiter nutzen, wer braucht schon den USB Kram ;)


    https://github.com/Zirias/opencbm-driver-freebsd/


    Allerdings muss ich noch viel zu viele Debug Ausgaben "stillegen" ... und einen Port für die Userland-Tools dazupacken, da das originale OpenCBM leider sehr "sloppy" mit ioctl() umgeht -- was auf Linux funktioniert, nicht aber auf FreeBSD. Wird bald nachgereicht :)