I tried to upload a new Arduino program to the OpenROV cape using the software routines and the procedure outlined here. On the cockpit display you select setup and then select a program to upload. This program is a tar or zip compression of the Arduino source files. The tar file is automatically expanded and then an attempt is made to build the hex file required by the Cape Arduino processor for upload. The program threw an error which I traced to Arduino “ino” command line toolkit program not being installed on the BBB. I attempted to load ino onto the BBB as described here but that failed since a setuptool file for Python was missing. This was installed using
opkg install python-setuptools
Next, I reran /ino/make install and now it couldn’t find the file py.compile. This file apparenty is used in later versions of Python. Searching opkg angstrom packages I found python-compile_2.7.2-r3.17_armv7a.ipk\ which was downloaded to my pc and ssh to BBB. I then used opkg service to install it:
opkg install python-compile_2.7.2-r3.17_armv7a.ipk
ino seemed to be installed without errors. Now tried to upload an Arduino file and of course more problems arose. Seems that the ino makefile puts some of ino Python libraries in the wrong folder and when the ino calls were made several library functions were not found. A search showed up this post which discussed the libraries and one of the comments to the post said that installing ino with Python commands works. So I reinstalled ino using
python setup.py install
At last success!! I ran another upload and got a little further until more errors showed up. Here is the log file output:
Received ‘arduinofirmware-startupload’ for file: OpenROV_arduino.zip file: undefined going to install the uploaded file: OpenROV_arduino.zip unpack: build dir is /tmp/tmp.klu0me4aEo
Archive: /opt/openrov/src/temp/OpenROV_arduino.zip creating: OpenROV/ inflating: OpenROV/Command.cpp inflating: OpenROV/Command.h inflating: OpenROV/Device.cpp inflating: OpenROV/Device.h inflating: OpenROV/Motors.cpp inflating: OpenROV/Motors.h inflating: OpenROV/OpenROV.ino inflating: OpenROV/Timer.cpp inflating: OpenROV/Timer.h
unziped /opt/openrov/src/temp/OpenROV_arduino.zip in /tmp/tmp.klu0me4aEo/src
Unpacked firmware file into Searching for Board description file (boards.txt) … FAILED Board description file (boards.txt) not found. Searched in following places: – /usr/local/share/arduino/hardware/arduino – /usr/share/arduino/hardware/arduino
Compiled firmware in directory Closing serial connection for firmware upload Setting up uploader
Searching for Board description file (boards.txt) … FAILED Board description file (boards.txt) not found. Searched in following places: – /usr/local/share/arduino/hardware/arduino – /usr/share/arduino/hardware/arduino
Initiating arduino reset
/opt/openrov/linux/reset.sh: line 18: /sys/kernel/debug/omap_mux/gpmc_ad0: No such file or directory
upload failed, trying again. Searching for Board description file (boards.txt) … FAILED Board description file (boards.txt) not found. Searched in following places: – /usr/local/share/arduino/hardware/arduino – /usr/sh are/arduino/hardware/arduino
Initiating arduino reset
So it can’t find the board description and it is missing sys/kernel/debug/omap_mux/gpmc_ad0. Back later when I figure this out.
Ok… I’m back. The missing board .txt file indicates that I need to install the Arduino IDE. Normally ino uses AVERDUDE to boot up files to the Arduino but this is not installed on BBB. I I tried to opkg averdude but Angstrom doesn’t have that . However, all these files are in the Arduino IDE. So I downloaded the linux Arduino .tgz from here and ssh it to my root. Then installed this way
tar -xzf /arduino-1.0.5-linux32.tgz
Cool, now I have board.txt and averdude.
I fixed the gpmc_ad0 error by updating rc.local to make use of the .dt0 file overlay files supplied with Angstrom for BBB which are located in /lib/firmware. Basically, I commented any reference to omap_mux and add code to set up UART1. I will write a more detailed post on how to do this.
Using .hex file instead of .tar file of source
Why not build the .tar file on the host PC and then ask the OpenROV software to just upload the .hex file to the Arduino? First, it took me a while to find where the Arduino puts the IDE. Some said that holding the shift key down while compiling will show the file. This didn’t seem to work so I just searched for the project name in temp files and found my .hex program in this build directory.
Next I will work on how to make the OpenROV uploader use the file in .hex format rather than the expected .tar format. You still need ino installed to do the hex file upload. But it could save a few steps in the overall upload procedure.