Marc Santhoff wrote:
> ich wüßte gern, wie aufwendig es ist, Windows-DLLs oder Linux.so's unter
> FreeBSD zu laden und zu nutzen.
Kommt auf den Einzelfall an, aber im allgemeinen: ziemlich
aufwendig.
> Mplayer macht das ja, bei Netzwerktreibern sogar auch (also mit
> Hardwarezugriff). Nur die Quellen sind nicht nur umfangreich sondern
> auch wenig hilfreich für mich, das Verfahren zu erklären.
Da muss man differenzieren.
Bei den Windows-DLLs, die mplayer verwendet, handelt es sich
lediglich um Codecs. Die sind "self-contained", sprich, sie
machen selbst keinerlei Zugriffe nach außen. Sie enthalten
relativ einfache Funktionen, die die Eingabedaten herein-
geschoben bekommen, dann darauf herumrechnen und zum Schluss
die Ausgabedaten liefern. Black-Box-Prinzip. Sowas ist
relativ einfach mit einem Wrapper zu verpacken.
Die Sache mit den Windows-Netzwerktreibern ist da schon etwas
aufwendiger und funktioniert auch nur unter ganz bestimmten
Bedingungen, z.B. nur im Kernel-Kontext (da es ein Treiber
ist, der direkt auf die Hardware und Kernel-APIs zugreift).
Der FreeBSD-seitige Wrapper- und Support-Code ist hier schon
relativ aufwendig; insgesamt knapp 30000 Zeilen.
Wenn man das auf beliebige Userland-DLLs ausdehnen will,
dann muss man eine vollständige Windows-Umgebung emulieren.
Und damit landest Du im prinzip bei WINE.
> Es geht dabei um am USB angeschlossene Meßgeräte, sowas wie PicoScope
> und dessen Verwandte.
Soviel ich weiß, unterstützt WINE kein USB (aber ich kann
mich da auch irren). Diese Möglichkeit fällt also aus.
> Die bekommen Steuerbefehle übermitelt und liefern
> auch Daten zurück. Seitens der Hersteller gibt es oft nur eine
> Binärdatei mit den Steuerfunktionen, die muß also auf den betreffenden
> USB-Port zugreifen können, das ist wohl der leichtere Teil. Die
> Kommunikationsprotokolle werden nicht offengelegt.
Schwierig. Mögliche Ansätze:
- Den Hersteller überreden, Dir Source-Code und/oder die
Beschreibung des Protokolls zu überlasssen. Und letzt-
endlich möchte ja niemand gerne auf potentielle Kunden
verzichten. Häufig sträuben sich Hersteller, weil sie
selbst Lizenznehmer (z.B. von Patenten) sind; in diesem
Fall hilft es manchmal, wenn man die Unterzeichnung eines
NDA anbietet. Mir ist auch ein Fall bekannt, wo eine
Art Werksvertrag (inkl. NDA) geschlossen wurde: Der
Hersteller durfte dann die Infos, die er selbst nur
lizensiert hatte, herausrücken, da der Entwickler quasi
als sein Mitarbeiter galt, und im Gegenzug hat er ein
Nutzungsrecht für dessen Code erhalten.
- Selbst versuchen, das Protokoll herauszufinden (auf Neu-
deutsch "reverse-engineering"). Wenn es nicht absicht-
lich verschleiert oder gar verschlüsselt ist, hat man da
durchaus oft gute Chancen, wenn man grundsätzlich Ahnung
von USB hat [*]. USB-Hardwaresniffer gibt es in ver-
schiedenen Preisklassen, aber unter Umständen kann es
vielleicht schon genügen, die Windows-Software in einem
Virtualisierer (VB, Qemu) unter FreeBSD laufen zu lassen
und dann usbdump(8) zum Sniffen zu verwenden. Dies habe
ich aber noch nicht selbst ausprobiert.
- Falls es wenigstens eine Library für Linux (*.so) gibt:
Diese unter FreeBSD zu verwenden, ist in der Regel
deutlich einfacher als bei einer Windows-DLL. Im Notfall
kann man zumindest die Software als Linux-Binary ent-
wickeln (auch das geht unter FreeBSD, am einfachsten
mit einem linux_dist*-Port) und dann im Linuxulator
laufen lassen.
- Andere Hardware verwenden, deren Hersteller nicht an
Microsoft "klebt", und der andere Betriebssysteme besser
unterstützt.
- Wenn's alles nichts hilft, dann muss man in den sauren
Apfel beißen und unter Windows entwickeln. Immerhin
könnte man das dann unter FreeBSD in einem Virtualisierer
laufen lassen (z.B. VirtualBox) und hat so zumindest ein
paar kleine Vorteile.
Gruß
Olli
[*] Meine persönliche Empfehlung: "USB Complete" von
Jan Axelson, Fourth Edition, Verlag Lakeview Research LLC,
ISBN 978-1-931448-08-6. Aber wenn man bei Null anfängt,
muss man damit rechnen, dass man zunächst einmal ein wenig
Zeit investieren muss.
-- Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M. Handelsregister: Registergericht Muenchen, HRA 74606, Geschäftsfuehrung: secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht Mün- chen, HRB 125758, Geschäftsführer: Maik Bachmann, Olaf Erb, Ralf Gebhart FreeBSD-Dienstleistungen, -Produkte und mehr: http://www.secnetix.de/bsd "I learned Java 3 years before Python. It was my language of choice. It took me two weekends with Python before I was more productive with it than with Java." -- Anthony Roberts To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org with "unsubscribe de-bsd-questions" in the body of the messageReceived on Tue 13 Dec 2011 - 09:50:44 CET