Forum: Mikrocontroller und Digitale Elektronik x86 DLL in ARM µC verwenden


von Nox (Gast)


Lesenswert?

Hallo,

ich habe ein USB Device welches ich an einen ARM µC mit integriertem USB 
Host anschließen möchte. Zur Ansteuerung liegt dem Device eine DLL bei.
Da ich mir schon denken kann, dass die DLL auf x86 Systeme ausgelegt ist 
und damit wohl kaum auf einem ARM basierenden Prozessor zum Laufen zu 
bewegen ist, steht die Frage:
Wie kann ich ein bestehendes x86 Assembly in Form einer DLL auf einem 
ARM System verwenden, bzw. kann man es umwandeln?
Erst den C Code der DLL beim Hersteller zu erfragen wäre dann wohl der 
allerletzte Ausweg, möchte ich aber möglichst umgehen.

Gruß

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> Wie kann ich ein bestehendes x86 Assembly in Form einer DLL auf einem
> ARM System verwenden, bzw. kann man es umwandeln?

Du müsstest einen x86 - Interpreter schreiben, der die x86-Befehle, 
genauer die i386-Befehle interpretiert.

Sowas existiert zwar, sogar im Quelltext (z.B. Bochs?), dürfte aber 
einen durchschnittlichen ARM ganz erheblich überfordern.

Desweiteren müsstest Du die Laufzeitumgebung des Betriebssystems 
nachbilden, für das die DLL geschrieben ist, denn diese wird sicherlich 
den einen oder anderen Systemaufruf tätigen.

Auch das dürfte recht deutlich am Ziel vorbeigeschossen sein.

Sicherlich kannst Du die DLL durch einen x86-Disassembler jagen und 
versuchen, dessen Ausgabe in ein logisch verständliches Programm zu 
überführen, aber auch das dürfte ganz erheblichen Aufwand bedeuten, weil 
auch hier die Interaktion mit dem zugrundeliegenden Betriebssystem zu 
berücksichtigen ist.

Kontaktiere den Hersteller und frage ihn nach Linux-Unterstützung für 
sein Gerät. Damit dürftest Du mehr anfangen können als mit dem Quelltext 
einer Windows-DLL.

Wenn der Hersteller keine Informationen 'rausrückt, kannst Du mit einem 
USB-Protokollanalysator à la USB Snoopy herausfinden, was an das 
USB-Gerät zu senden ist bzw. was es antwortet, und die für Dich 
interessante Funktionalität nachbilden.

Die oben genannten Ansätze (Emulation, Disassembler) erscheinen mir 
sehr fruchtlos.

von Michael König (Gast)


Lesenswert?

Das kannst Du eigentlich vergessen.
Ich will nicht ausschließen, daß es irgendwo so etwas ähnliches wie 
einen statischen oder dynamischen Binärcodeübersetzer von IA-32 auf ARM 
gibt (auch wenn mir pauschal keiner einfällt, die meisten gehen in die 
umgekehrte Richtung) und das Portable-Executable-Format der DLL bekommt 
auch auch decodiert.
Das Hauptproblem ist aber, daß die DLL mit ziemlicher Sicherheit die 
Win32-API verwenden wird. So lange Du nicht so etwas wie WINE auf Deinem 
Gerät laufen hast, kannst Du es spätestens an diesem Punkt vergessen 
etwas mit der DLL anzufangen.

von Nox (Gast)


Lesenswert?

Danke, das habe ich eigentlich befürchtet^^

Werde mal den Hersteller kontaktieren und wenn das nicht fruchten mal 
einen USB Protokoll Sniffer probieren.. wusste garnicht dass es sowas 
gibt, danke für den Hinweis :)

Gruß

von Frank N. (arm-fan)


Lesenswert?

ARM-basiertes Gerät?
Läuft das wenigstens auf Windows CE?
Oder soll das an einen "kleinen" ARM7 oder ARM9 mit USB-Host dran?

von Nox (Gast)


Lesenswert?

ein kleiner arm7 oder 9, das steht noch zur debatte.. mit integriertem 
usb host.

von Frank N. (arm-fan)


Lesenswert?

>ein kleiner arm7 oder 9

dann vergiß die DLL einfach.

>ich habe ein USB Device

Ja, was denn für eins?
Welche Geräteklasse?
Vielleicht läßt sich mit Standards was erschlagen.

von Nox (Gast)


Lesenswert?

eine ILDA Ausgabekarte ;) Also alles andere als Standard, würde ich 
sagen.
hier zu finden: http://lumax.de/

von Frank N. (arm-fan)


Lesenswert?

>Also alles andere als Standard

Also wenn ich den "USB-Treiber" dort mal anschaue, sehe ich FTDI-DLLs.
ALso doch Standard. Nämlich CDC, wenn ich mich nicht irre.

von Nox (Gast)


Lesenswert?

Nagut wenn ftdi ein Standard ist... Es wird also schon c code zur 
Ansteuerung dieses Bausteins geben, bräuchte man also nur noch das 
Protokoll in Erfahrung bringen?

von Dumdidum ... (Gast)


Lesenswert?

@NOX

wenn die Patine ein Chip besitzt dessen Kennung mit FT****
beginnt hast du gute Chancen dort deine Steuersignale seriell 
abzugrifen.
das ist dann ein Standart Seriell USB umsetzer...
http://www.ftdichip.com/FTProducts.htm

73

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nun, ob FTDI wirklich CDC implementiert, sei dahingestellt.
Wäre dem so, würde ja an und für sich eine simple *.inf-Datei genügen, 
und der CDC-Treiber von Windows könnte genutzt werden.

Außerdem könnte es sein, daß die betreffende Schaltung nicht einen 
FT232, sondern einen FT245 verwendet, und der ist nicht seriell ...

Jedoch sollten aus dem Linux-Lager auch Treibersourcen für FTxxx zu 
organisieren sein, wenn es wirklich nötig ist, den Baustein per USB 
anzusteuern.
/drivers/usb/serial/ftdi_sio.c könnte ein Ausgangspunkt für eigene 
Entwicklungen sein.

von ARM-Fan (Gast)


Lesenswert?

http://lumax.de/eigenbau/index.html

Sieht tatsächlich nach FT245 aus.

von Nox (Gast)


Lesenswert?

jap auf der Platine ist auch ein 245rl .. also wäre es wohl sinnvoll ein 
Linux System auf dem ARM aufzusetzen und nicht mit "Hardcode" ohne 
Betriebssystem zu arbeiten.
Na mal schaun, werd den Hersteller mal kontaktieren, muss ja wenigstens 
das Protokoll erfahren, ehe ich mit nem USB Sniffer anfange.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

FTDI wird das Protokoll nicht 'rausrücken.

von Nox (Gast)


Lesenswert?

ich meine weniger ftdi als mehr den hersteller des lumax boards

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Der kennt das Protokoll aber nicht, denn das wird von FTDI definiert.
FTDI stellt sowohl das USB-Device als auch das Gegenstück, den 
zugehörigen Treiber zur Verfügung. Für Nutzer der FTxxx-Bausteine ist 
das Protokoll opak, was normalerweise auch kein Problem darstellt.

von ARM-Fan (Gast)


Lesenswert?

>FTDI wird das Protokoll nicht 'rausrücken.

Gegen NDA schon.

So langsam zweifele ich aber an der Sinnhaftigkeit des Projekts.
WAS soll der ARM denn mit diesem USB-Gerät anstellen, was ein PC
nicht kann. Mobile Lasershow?

von Nox (Gast)


Lesenswert?

Ich möchte doch auch eigentlich nicht das Protokoll der FTDI 
Kommunikation wissen, da diese scheinbar in den oben erwähnten 
Treibersourcen für diese Bausteine enthalten ist. Viel mehr geht es mir 
um das was die DLLs über die FTDI "Schnittstelle" schieben und das weiß 
sicher nur der Hersteller des Boards ;)
Oder hab ich jetzt an irgendeiner Stelle etwas missverstanden?

von ARM-Fan (Gast)


Lesenswert?

Du mußt beides wissen, wenn du die Host-Funktionalität selber
programmieren willst. Nimmst du ein Betriebssystem (Windows/Linux),
dass den FTDI-Chip unterstützt, dann bleibt "nur" noch die Funktion,
hinter dem FT245.

Aber WAS macht denn dieses Board so tolles, was man nicht gleich mit
dem ARM + x selbst erschlagen könnte???

von Nox (Gast)


Lesenswert?

zumindest genug um 300eu zu kosten... mein projekt soll/muss aber mit 
diesen karten auskommen, um die Kompatibilität mit den Programmen zu 
wahren, die diese Karte nutzen... Kompliziert aber nagut...
Im Prinzip geht es nur darum das USB Kabel zwischen diesem Board und dem 
PC virtuell über Ethernet zu "verlängern". Ein Treiber soll dabei auf 
dem PC die Daten abfangen, über Ethernet zu dem µC schicken un dieser 
soll es wieder auf die Karte geben^^

Vielleicht fällt euch dazu ja ein besserer Weg ein?

von Mars (Gast)


Lesenswert?

Such mal nach libFTDI. Damit kannst du mit Hilfe von LibUSB mit FTDI 
Geräten kommunizieren.

von ARM-Fan (Gast)


Lesenswert?

>Im Prinzip geht es nur darum das USB Kabel zwischen diesem Board und dem
>PC virtuell über Ethernet zu "verlängern". Ein Treiber soll dabei auf
>dem PC die Daten abfangen, über Ethernet zu dem µC schicken un dieser
>soll es wieder auf die Karte geben

Und warum sagst du das nicht gleich im ersten Post?
Dann hätte man sich das Rumgeeiere sparen können.

Gibts sowas nicht fertig zu kaufen?

von Nox (Gast)


Lesenswert?

Weil es soetwas meinen Recherchen zufolge eben noch nicht gibt ;)

Danke Mars dem werd ich mal bei Gelegenheit nachgehen

von ARM-Fan (Gast)


Lesenswert?

Google mal nach "usb over ethernet" ...

von Nox (Gast)


Lesenswert?

tat ich neulich, es lassen sich jedoch dafür nur programme finden... ich 
möchte jedoch nicht an der gegenstelle keinen ganzen pc hinstellen.

von ARM-Fan (Gast)


Lesenswert?

Der vierte Treffer der oben genannten Suche fördert dieses Gerät
hier zu Tage:

http://www.lantronix.com/device-networking/external-device-servers/ubox.html

von Nox (Gast)


Lesenswert?

ok es ist der moment gekommen ... wo ich mich wie ein idiot fühle^^
Sry für die Umstände, mal sehen ob wir das damit lösen.

Danke für die Erleuchtung

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.