Ich brauche ein Programm, das ftd2xx auf meinem BeagleBoard xM rev C unter Ubuntu 12.04 verwendet. Ich versuche, die ARM-Bibliothek libftd2xx.so verwendet zu verwenden. libFTDI ist keine Option.ARM v5 shared library (ftd2xx) auf ARM v7 plattform - hart vs soft float ausgabe
Der Unterschied, den ich bemerkte, kommt aus dem Laufen readelf -hA
auf libftd2xx.so vs anderen Bibliotheken auf dem BeagleBoard, die arbeiten. Der Arch-spezifische Abschnitt gibt den Betriebssystemnamen als "ARM926EF-S" für ftd2xx anstelle von "7-A" für andere Bibliotheken und CPU_arch als "v5TEJ" anstelle von "v7" an.
Ich nehme an, dies bedeutet, dass die Bibliothek für den ARM v5 Befehlssatz bestimmt ist, und das BeagleBoard läuft ARM v7. Gibt es eine Möglichkeit, ftd2xx zum Laufen zu bringen?
Edit: Mir wurde gesagt, ARM7 ist abwärtskompatibel mit ARM5, aber das löst mein Problem nicht.
Eine andere Sache zu beachten ist, dass das Ausführen ldd libftd2xx.so
auf dem BeagleBoard die Abhängigkeiten nicht auflistet, aber not a dynamic executable
ausgibt, während es auf anderen Bibliotheken funktioniert.
EDIT 2:
Das Problem scheint mit einem weichen vs hart Schwimmer ABI zu sein. Ich habe ein gnueabihf Bild auf dem BeagleBoard xM. Wenn ich versuche, ein Beispielprogramm mit dem statischen libftd2xx.a zu kompilieren, erhalte ich viele von ihnen:
/usr/bin/ld: error: static_link_uses VFP register arguments, libftd2xx.a(file.o) does not
/usr/bin/ld: failed to merge target specific data of file libftd2xx.a(file.o)
Wenn ich mit mfloat-abi=soft
oder mfloatabi=softfp
zu kompilieren versuchen, erhalte ich
In file included from /usr/include/stdio.h:28:0,
from main.c:12:
/usr/include/features.h:324:26 fatal error: bits/predef.h: No such file or directory
compilation terminated
Ich habe auch versucht, mit arm-linux-gnueabi
anstelle von arm-linux-gnueabihf
zu kompilieren, aber das resultierende Programm wird nicht auf dem BeagleBoard ausgeführt. Kann ich etwas tun oder ist es unmöglich?
--------- SOLUTION ----------------
Nach einiger Mühe, FTDI versorgte mich mit einem harten Schwimmer Version ihrer Bibliothek, die funktioniert. Ich reicht es hier nach vielen Menschen individuell sie angefordert haben:
https://s3.amazonaws.com/hayk-public/arm926-hf.zip
Was funktioniert nicht genau? Wo führst du 'ldd' auf dem Host? probiere 'readelf | grep Shared'. Sie benötigen möglicherweise eine LDD mit Arm Unterstützung oder etwas. (http://stackoverflow.com/questions/6150000/cross-compiler-ldd) Sie sollten versuchen, mehr für Informationen wie Strac, Überprüfung Protokolle usw. zu graben. Haben Sie die README von ftdi Website gelesen? – auselen
Ich starte 'ldd' auf dem BeagleBoard, also sollte es schon von einer ARM-Version sein (es funktioniert auf den ARM-Bibliotheken in/usr/lib). Ich las die Readme und kontaktierte FTDI ohne Erfolg. Ich habe Strace angeschaut, aber ich weiß nicht, wie ich das interpretieren soll. –
Paste strace zu irgendwo dann ... – auselen