2017-10-10 123 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

相關問題