在ARM V7平台ARM v5的共享库(ftd2xx) - 硬软VS浮动问题 [英] ARM v5 shared library (ftd2xx) on ARM v7 platform - hard vs soft float issue

查看:282
本文介绍了在ARM V7平台ARM v5的共享库(ftd2xx) - 硬软VS浮动问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要运行上运行Ubuntu 12.04的BeagleBoard我XM转C使用ftd2xx程序。我试图用libftd2xx.so这里提供 ARM库。 libFTDI是不是一种选择。

I need to run a program that uses ftd2xx on my BeagleBoard xM rev C running Ubuntu 12.04. I am trying to use the ARM library libftd2xx.so provided here. libFTDI is not an option.

这是我发现的差异来自于的BeagleBoard的工作运行 readelf -Ha 上libftd2xx.so VS其他库。具体的拱形部分提供了操作系统名称为ARM926EF-S的ftd2xx而不是7-A的其他图书馆和CPU_arch为v5TEJ而不是V7。

The difference that I noticed comes from running readelf -hA on libftd2xx.so vs other libraries on the BeagleBoard that work. The arch-specific section gives OS name as "ARM926EF-S" for ftd2xx instead of "7-A" for other libraries and CPU_arch as "v5TEJ" instead of "v7".

我假设这意味着该库旨在为ARM V5指令集和BeagleBoard的运行ARM V7。有没有办法让ftd2xx工作?

I'm assuming this means that the library is meant for the ARM v5 instruction set, and the BeagleBoard is running ARM v7. Is there some way to get ftd2xx to work?

编辑:我已经告诉ARM7是向后兼容ARM5,但并没有解决我的问题。

I've been told ARM7 is backward compatible with ARM5, but that does not solve my problem.

另外要注意的是,运行 LDD libftd2xx.so 上的BeagleBoard没有列出的依赖关系,但打印出不是一个动态可执行文件,而它与其他的库。

Another thing to note is that running ldd libftd2xx.so on the BeagleBoard does not list the dependencies, but prints out not a dynamic executable, whereas it works on other libraries.

编辑2:

这个问题似乎是用柔软的VS硬浮ABI。我对BeagleBoard的XM一个gnueabihf形象。当我尝试编译的示例程序与静态libftd2xx.a,我得到很多这样的:

The issue seems to be with a soft vs hard float ABI. I have a gnueabihf image on the BeagleBoard xM. When I try to compile an example program with the static libftd2xx.a, I get many of these:


在/ usr /斌/劳工处:错误:static_link_uses VFP寄存器参数,libftd2xx.a(file.o)不结果
在/ usr /斌/劳工处:无法合并文件libftd2xx.a(file.o)

如果我尝试编译 mfloat-ABI =软 mfloatabi = softfp ,我得到

If I try to compile with mfloat-abi=soft or mfloatabi=softfp, I get

从/usr/include/stdio.h:28:0,结果包含的文件
           从main.c中:12:结果
/usr/include/features.h:324:26致命错误:比特/ predef.h:没有这样的文件或目录结果
编译终止

我也尝试过用编译臂Linux的gnueabi 而不是 ARM-Linux的gnueabihf ,但所得程序不会上的BeagleBoard执行。有什么我能做的或者是不可能的?

I also tried to cross compile with arm-linux-gnueabi instead of arm-linux-gnueabihf, but the resulting program does not execute on the BeagleBoard. Is there anything I can do or is it impossible?

---------解决方案----------------

--------- SOLUTION ----------------

在一些麻烦,FTDI为我提供了他们的图书馆的硬浮版本,其中的作品。我在这里提供它之后很多人都单独请求是:

After some trouble, FTDI provided me with a hard float version of their library which works. I am providing it here after many people have individually requested it:

https://s3.amazonaws.com/hayk-public/arm926- hf.zip

推荐答案

v5TEJ是V7-A指令集的一个子集。

v5TEJ is a subset of the v7-A instruction set.

在code可能运行慢一点,可能会比需要更大了一点,但它应该不会崩溃因非法指令左右仍然工作。除了极少数例外ARM code是previous指令集向后兼容。

The code may run a bit slower and may be a bit larger than required, but it should nonetheless work without crashing due to illegal instructions or so. With very few exceptions ARM code is backward compatible to previous instruction sets.

如果在code不你的平台上工作,这是别的很可能像缺少访问权限USB子系统左右。

If the code does not work on your platform it is very likely something else like missing access rights to the USB subsystem or so.

这篇关于在ARM V7平台ARM v5的共享库(ftd2xx) - 硬软VS浮动问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆