有什么办法可以重新编译二进制从x86到ARM在ARM上?

我想收集一些关于解决以下问题的想法。 我有一个TOF摄像头,它的驱动程序为Linux x86 / 64。 它工作正常。 但事实上,如果可能的话,相机将被用在基于ARM的embedded式设备上。

问题:

  • 我需要反编译驱动程序的二进制文件,并用ARM编译器重新编译? 有没有可用的反编译器工具?
  • 有没有可用的ARM >> x86模拟器?
  • 任何其他的想法?

PS:纯粹的来源非常昂贵,所以我不喜欢购买它:)

  1. AFAIK,截至今天,还没有这样的反编译器能够从机器码生成可编译的代码。 您将不得不手动修复(通常是很多修复)生成的代码。 你可以检查这个问题的Linux反编译器。
  2. 检查QEmu 。 只要你可以执行,基础架构是不相关的;)
  3. 除了你所说的之外,没有太多的东西。

你正在尝试的是(部分) 逆向工程 。 RE是一个复杂的过程,需要很大的知识,你想要扭转的事情 ; 在你的情况下相机驱动程序 如果你有这方面的知识,请继续。 如果你不这样做,我不会浪费我的时间(或者先获得知识)

详细信息请参阅以下答案。 它列出了一些您可能遇到的尝试自动化这种翻译的问题:

将目标文件转换为其他体系结构

最近创建的Eltechs ExaGear server (在ARM上作为A Service提供)在ARM设备上运行x86应用程序。

这是新的和专有的,但它确实存在。

如果你的驱动程序是一个内核对象,那么就没有能够在ARM内核中运行x86内核代码的模拟器(据我所知)。 如果您的“驱动程序”实际上是在通用驱动程序(v4l2等)之上被黑客入侵的用户空间库,那么您可能在QEMU或Exagear中碰到过这种情况。 作为一个方面说明,你最终可能会得到一个x86应用程序软件,因为从ARM代码中调用x86库不被QEMU或Exagear开箱即用。