Userspace Arduino

this page is to document some research on creating a userspace executable using the wiring and processing language used with Arduino.

= Transfer Options =

Netcat

 * GNU Netcat networking tool http://netcat.sourceforge.net/
 * Can create a connection using nc -w 1 192.168.7.2 1114 < new.zip on the server (in this case the machine running the Energia IDE), and nc -lp 1114 > n.zip on the Beaglebone. 1114 is a random port number which has to be the same on client as well as server side.
 * Some issue with sending .bin files directly. Mostly it was with how the file ends, not sure. So need to zip the file.
 * Requires no authentication
 * A script will be needed to listen on a particular port on the BBB for any incoming connections which will receive, unzip and execute the code.

ssh/sftp

 * Needs ssh and sftp installed
 * Need to configure keys initially. Works without user authentication after that
 * Code to upload and execute binary here : https://github.com/anujdeshpande/send_exec

Emulating the Arduino bootloader
apt-get install lrzsz sz -vv -b filename.bin < /dev/ttyUSB1 > /dev/ttyUSB1
 * The Arduino Bootloader uses a protocol similar to STK500v1 (over UART, though)
 * One way to program (copy) the binaries would be to emulate the protocol on the bone over USB gadget and use AVRDude on the IDE side
 * However this would be cumbersome, since the protocol was designed to write bytes to flash memory, not copy files. Energia uses msp430flasher to flash the MSP430 using an in-built (ROM or Flash based) Bootstarp Loader (BSL).
 * File transfer protocols over serial like XMODEM and ZMODEM could be explored for an easier and more compatible option to Upload the binaries.
 * Install the lrzsz package on both the host (PC) and the client (Beaglebone):
 * Connect the Beaglebone via USB and determine the port (for e.g. /dev/ttyUSB1). Once the OS is booted up, start the transfer: