2017-10-10 28 views
-1

私は現在、地元のレスキューダイバーのための無人潜水艦を開発している研究チームの一員です。目標は、昨年のチームのプロトタイプを改良して修正することです。Arduino Unoコードは、クロスコンパイラを使用してBeagleBone Blackで実行できますか?

現在、車両はArduino UnoとBeagleBone Blackを使用しています。 Arduinoは6つの回転子といくつかのオンボードセンサーを制御しますが、BeagleBoneは車載カメラを制御します(理由は問いませんが、この設定が選択されました)。前のチームは長く去っていますので、 )。

最後のチームによると、Arduinoは「シールド」問題のためにすべての機器を制御できませんでした。 BeagleBoneをすべてのものに使うのは最適だったが、チームは2日間でコードを書き直すことができなかった(誰もJavaを知りませんでした)。私はJavaを知っているだけなので、私の最初の計画はC++を学び、Javaでコードを書き直すことでした。

最近、私は理解したことから、ある言語で書かれたプログラムを別の言語を使用するプラットフォーム上で実行できる「クロスコンパイラ」という用語を見つけました。クロスコンパイラはArduinoのコードをBeagleBoneのために "変換"できますか?コードが言語から言語に変換するには複雑すぎるようです。申し訳ありませんが、もし私が "noobish"と言うと、私は1つのJavaクラスを取ったメカニカルエンジニアの学生です。

+1

あなたの質問はコードなどの問題ではなく、一般的な質問とみなされ、別のフォーラムで検索する必要があります。あなたが検索して試したことを私たちに示すことをお勧めします。 – Ibo

答えて

1

BeagleBoneのArduinoからC/C++コードをコンパイルすることは可能ですが、同じ方法では動作しません。 I/Oポートは同じ方法で対処されず、他にも多くの問題があります。 Arduinoでは、あなたのプログラムはほとんど唯一のものです。 BeagleBoneでは、完全な本格的なUnixのO/Sが稼働しており、コードは多くのプロセスの1つです。

Javaを知っていれば、C/C++コードは読みにくいはずです。ポートを読んで、私が推測するものを制御することは、確かにビーグルボーンで可能です。もしあなたがAuduinoの盾を持っているのであれば、それは問題かもしれません。彼らはSPIまたはI2Cを話すかもしれませんが、代わりに低レベルのものを使用するかもしれません - ちょうどPWM信号かもしれません。

これは簡単なプロジェクトにはなりませんが、私の意見はあなたが正しい方向に向かっているということです。一度に1つのサブシステムを取り、そのコードをBeagleBoneに書き直します。このようなものはcapeはステッパーやサーボを駆動することができます。しかし、それは別の問題を引き起こします - 付属のlibraryはPythonにありますが、さらに移植が必要です。

クロスコンパイルは役に立ちません。コードは理論的には移植可能ですが、実際はありません。それは書き直すつもりです。

+0

ありがとうございました!私は問題があると思った。私はハードウェアの拡張シールドに慣れていません。どのようにして盾が問題を引き起こすでしょうか? – JRu

+0

特定のArduinoシールドに依存している場合は、BeagleBoneの岬として利用できない場合があります。 steppers/servos/PWMやシリアルI/Oのような "標準"のものをやっているなら、ArduinoとBeagleBoneのシールド/ケープとは違うでしょう。 – stdunbar

関連する問題