2017-10-10 2 views
-1

Ich bin derzeit Teil eines Forschungsteams, das ein unbemanntes U-Boot für lokale Rettungstaucher entwickelt. Ziel ist es, den Prototyp aus dem letztjährigen Team zu verbessern und zu reparieren.Kann Arduino Uno-Code mit einem Cross Compiler auf einem BeagleBone Black ausgeführt werden?

Im Moment benutzt das Fahrzeug einen Arduino Uno und einen BeagleBone Black. Der Arduino steuert sechs Rotoren und ein paar On-Board-Sensoren, während der BeagleBone eine On-Board-Kamera steuert (frag nicht, warum, dieses Setup wurde gewählt. Das vorherige Team ist längst weg, also haben wir keine andere Wahl, als vorwärts zu gehen).

Laut dem letzten Team konnte der Arduino nicht alle Geräte aufgrund von "Schild" Problemen kontrollieren. Die Verwendung des BeagleBone für alles wäre optimal gewesen, aber das Team konnte den Code nicht innerhalb von 2 Tagen umschreiben (niemand kannte Java). Da ich nur Java kenne, war mein erster Plan für den Verlauf des Projekts, C++ zu lernen und den Code in Java neu zu schreiben.

Kürzlich stieß ich auf den Begriff "cross compiler", der nach meinem Verständnis ein in einer Sprache geschriebenes Programm auf einer Plattform ausführen ließ, die eine andere Sprache verwendet. Wäre ein Cross-Compiler in der Lage, Code von einem Arduino zu nehmen und ihn für BeagleBone "umzuwandeln"? Es scheint, als wäre der Code zu komplex, um von Sprache zu Sprache konvertiert zu werden. Tut mir leid, wenn ich "noobish" höre Ich bin ein Maschinenbauingenieur Student, der eine Java-Klasse nahm.

+1

Ihre Frage ist kein Problem mit einem Code oder so und wird als allgemeine Frage betrachtet, die in einem anderen Forum gesucht werden sollte. Ich schlage vor, Sie zeigen uns, was Sie gesucht und versucht haben – Ibo

Antwort

1

Es kann möglich sein, den C/C++ - Code aus dem Arduino auf dem BeagleBone zu kompilieren, aber es würde nicht auf die gleiche Weise funktionieren. Die E/A-Anschlüsse werden nicht auf die gleiche Weise adressiert und es gibt wahrscheinlich viele andere Probleme. Auf dem Arduino ist dein Programm so ziemlich das einzige, was läuft. Auf einem BeagleBone läuft ein vollwertiges Unix O/S und Ihr Code ist einer von vielen Prozessen.

Wenn Sie Java kennen, sollte der C/C++ - Code nicht zu schwer zu lesen sein. Das Lesen der Ports und das Kontrollieren, was ich davon halten würde, wären auf dem BeagleBone möglich. Wenn du ein paar Auduino Schilde hast, könnte das ein Problem sein. Sie können SPI oder I2C sprechen, aber sie können stattdessen etwas niedrigeres Niveau verwenden - vielleicht nur ein PWM-Signal.

Das wird kein triviales Projekt, aber ich bin der Meinung, dass Sie auf dem richtigen Weg sind. Ich würde ein Subsystem nach dem anderen nehmen und den Code für den BeagleBone neu schreiben. So etwas kann cape Stepper oder Servos fahren. Das bringt aber ein weiteres Problem mit sich - das mitgelieferte library ist in Python - und noch etwas mehr Portierung.

So Cross-Compilierung wird nicht helfen - der Code ist theoretisch tragbar, aber nicht wirklich. Es wird eine Neuschreibung brauchen.

+0

Danke st! Ich hatte erwartet, dass es das Problem geben würde. Ich kenne die Hardware-Erweiterungsschilde nicht. In welcher Weise würden Schilde ein Problem verursachen? – JRu

+0

Wenn Sie auf einen bestimmten Arduino-Schild angewiesen sind, ist er möglicherweise nicht als Umhang für BeagleBone verfügbar. Wenn du Standard-Sachen wie Stepper/Servos/PWM und serielle I/O machst, wird es dir gut gehen, aber das Gespräch mit dem Schild/Umhang wird sich zwischen Arduino und BeagleBone unterscheiden. – stdunbar

Verwandte Themen