Tôi cần chạy chương trình sử dụng ftd2xx trên BeagleBoard xM rev C chạy Ubuntu 12.04. Tôi đang cố gắng sử dụng thư viện ARM libftd2xx.so cung cấp . libFTDI không phải là một lựa chọn.Thư viện chia sẻ ARM v5 (ftd2xx) trên nền tảng ARM v7 - hard hard float issue
Sự khác biệt mà tôi nhận thấy xuất phát từ việc chạy readelf -hA
trên libftd2xx.so so với các thư viện khác trên BeagleBoard hoạt động. Phần vòm cụ thể cung cấp tên hệ điều hành là "ARM926EF-S" cho ftd2xx thay vì "7-A" cho các thư viện khác và CPU_arch là "v5TEJ" thay vì "v7".
Tôi giả định điều này có nghĩa là thư viện dành cho tập lệnh ARM v5 và BeagleBoard đang chạy ARM v7. Có một số cách để có được ftd2xx để làm việc?
Chỉnh sửa: Tôi đã nói ARM7 tương thích ngược với ARM5, nhưng điều đó không giải quyết được sự cố của tôi.
Một điều cần lưu ý là chạy ldd libftd2xx.so
trên BeagleBoard không liệt kê các phụ thuộc, nhưng in ra not a dynamic executable
, trong khi nó hoạt động trên các thư viện khác.
CHỈNH SỬA 2:
Vấn đề có vẻ là với ABI mềm và cứng. Tôi có một hình ảnh gnueabihf trên BeagleBoard xM. Khi tôi cố gắng biên soạn một chương trình ví dụ với libftd2xx.a tĩnh, tôi nhận được rất nhiều những:
/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)
Nếu tôi cố gắng biên dịch với mfloat-abi=soft
hoặc mfloatabi=softfp
, tôi nhận được
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
Tôi cũng đã cố gắng để biên dịch với arm-linux-gnueabi
thay vì arm-linux-gnueabihf
, nhưng chương trình kết quả không thực thi trên BeagleBoard. Có điều gì tôi có thể làm hay không?
--------- GIẢI PHÁP ----------------
Sau khi gặp sự cố, FTDI đã cung cấp cho tôi phiên bản phao cứng của thư viện công trinh. Tôi đang cung cấp nó ở đây sau khi nhiều người đã từng yêu cầu nó:
https://s3.amazonaws.com/hayk-public/arm926-hf.zip
Điều gì không hoạt động chính xác? nơi nào bạn chạy 'ldd', trên máy chủ? thử 'readelf | grep Shared'. Bạn có thể cần một ldd với hỗ trợ cánh tay hoặc một cái gì đó. (http://stackoverflow.com/questions/6150000/cross-compiler-ldd) Bạn nên cố gắng tìm hiểu thêm thông tin như sử dụng strac, kiểm tra nhật ký, vv Bạn đã đọc README từ trang web ftdi chưa? – auselen
Tôi chạy 'ldd' trên BeagleBoard, do đó, nó nên đã có một phiên bản ARM (nó hoạt động trên các thư viện ARM trong/usr/lib). Tôi đọc readme và liên lạc với FTDI vô ích. Tôi đã nhìn vào strace, nhưng tôi không biết làm thế nào để giải thích nó. –
dán strace đến một nơi nào đó sau đó ... – auselen