gpt4 book ai didi

architecture - ARM v7 平台上的 ARM v5 共享库 (ftd2xx) - 硬 float 与软 float 问题

转载 作者:行者123 更新时间:2023-12-04 05:12:46 27 4
gpt4 key购买 nike

我需要在运行 Ubuntu 12.04 的 BeagleBoard xM rev C 上运行一个使用 ftd2xx 的程序。我正在尝试使用提供的 ARM 库 libftd2xx.so here . libFTDI 不是一个选项。

我注意到的差异来自运行 readelf -hA在 libftd2xx.so 上与 BeagleBoard 上工作的其他库。特定于架构的部分将 ftd2xx 的操作系统名称指定为“ARM926EF-S”,而不是其他库的“7-A”,将 CPU_arch 指定为“v5TEJ”而不是“v7”。

我假设这意味着该库适用于 ARM v5 指令集,而 BeagleBoard 运行的是 ARM v7。有什么方法可以让 ftd2xx 工作吗?

编辑:有人告诉我 ARM7 向后兼容 ARM5,但这并不能解决我的问题。

另一件需要注意的是运行 ldd libftd2xx.so BeagleBoard 上没有列出依赖项,但会打印出 not a dynamic executable ,而它适用于其他库。

编辑2:

问题似乎出在软 float 与硬 float ABI 上。我在 BeagleBoard xM 上有一个 gnueabihf 图像。当我尝试使用静态 libftd2xx.a 编译示例程序时,我得到了很多这样的信息:

/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)

如果我尝试使用 mfloat-abi=soft 进行编译或 mfloatabi=softfp ,我得到
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

我也尝试与 arm-linux-gnueabi 交叉编译而不是 arm-linux-gnueabihf ,但生成的程序不会在 BeagleBoard 上执行。有什么我可以做的还是不可能的?

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

经过一些麻烦之后,FTDI 为我提供了他们库的硬 float 版本,该版本可以正常工作。在许多人单独要求之后,我在这里提供它:

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

最佳答案

v5TEJ 是 v7-A 指令集的子集。

代码运行速度可能会慢一些,并且可能比所需的要大一些,但它应该可以正常工作,而不会因非法指令等而崩溃。除了极少数异常(exception),ARM 代码向后兼容以前的指令集。

如果代码在您的平台上不起作用,则很可能是其他原因,例如缺少对 USB 子系统的访问权限等。

关于architecture - ARM v7 平台上的 ARM v5 共享库 (ftd2xx) - 硬 float 与软 float 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15306447/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com