2017-10-10 78 views
-1

我目前是为当地救援潜水员开发无人潜艇的研究小组的一员。目标是改进和修复去年团队的原型。使用交叉编译器,Arduino Uno代码可以在BeagleBone Black上运行吗?

现在车辆使用Arduino Uno和BeagleBone Black。 Arduino的控制六个转子和一些机载传感器,而BeagleBone控制的车载摄像头(不要问为什么,选择此设置。以前的团队早已不复存在,所以我们别无选择,只能继续前进)。

根据最后一个团队,由于“屏蔽”问题,Arduino无法控制所有设备。使用BeagleBone的一切都是最佳的,但团队无法在2天内重写代码(没有人知道Java)。由于我只知道Java,因此我对项目过程的初步计划是学习C++并用Java重写代码。

最近,我遇到了“交叉编译器”这个词,根据我的理解,它允许用一种语言编写的程序在使用不同语言的平台上运行。交叉编译器能够从Arduino获取代码并将其“转换”为BeagleBone?看起来代码太复杂了,无法从语言转换为语言。对不起,如果我听起来“不喜欢”,我是一名机械工程师学生,参加了一个Java课程。

+1

你的问题是不与码左右的问题,将被认为应该在不同的论坛中搜索一个一般性的问题。我建议你向我们展示你已经搜索并尝试 – Ibo

回答

1

从BeagleBone上的Arduino编译C/C++代码或许是可能的,但它不会以相同的方式工作。 I/O端口不会以同样的方式解决,并且可能存在许多其他问题。在Arduino上,你的程序几乎是唯一运行的程序。在BeagleBone上,你已经有了一个完整的Unix操作系统,你的代码是许多进程之一。

如果你知道Java中的C/C++代码应该不会太难看。阅读这些端口并控制我所猜测的舵机当然可以在BeagleBone上使用。如果你有一些Auduino盾牌,虽然这可能是一个问题。他们可能会谈论SPI或I2C,但他们可能会使用较低的级别 - 可能只是一个PWM信号。

这不会是一个微不足道的项目,但我的观点是你正在走正确的道路。我一次只需要一个子系统,然后为BeagleBone重新编写代码。像这样的cape可以驱动步进器或舵机。然而,这带来了另一个问题 - 所提供的library是在Python中 - 但还有一些需要完成的移植。

所以交叉编译不会有帮助 - 代码在理论上是可移植的,但不是真的。这将需要重写。

+0

谢谢!我预料会有这个问题。我不熟悉硬件扩展屏蔽。盾牌以什么方式导致问题? – JRu

+0

如果你依赖于特定的Arduino屏蔽,它可能无法作为BeagleBone的斗篷使用。如果你正在做像步进/伺服/ PWM和串行I /“标准”的东西啊,你会被罚款,但谈论到屏蔽/斗篷会的Arduino和BeagleBone不同。 – stdunbar

相关问题