Vamos a instalar el SDK y realizar el primer programa para Yún, el clásico HolaMundo
Info de Arduino Yún en la web de arduino: http://arduino.cc/en/Main/
En pocas palabras Arduino Yún tiene un arduino “normal” conectado a un linux “linino”, derivado de OpenWrt.
Voy a hacerlo todo desde Linux porque es mi habitual entorno de trabajo.
Lo primero que necesitamos es el SDK de OpenWrt, siguiendo las instrucciones de: http://wiki.openwrt.org/doc/howto/obtain.firmware.sdk (Actualizado Dic. 2014, existen instrucciones adaptadas a linino en: http://linino.org/doku.php?id=wiki:getstartbuild, pero en mi caso no han funcionado y da un error al crear las herramientas de compilación cruzada).
Una vez instalado probamos con “Hola Mundo”, por ejemplo siguiendo las instrucciones del foro de OpenWrt: https://forum.openwrt.org/viewtopic.php?id=44846
En mi caso he instalado el SDK en:
[adan@adan openwrt]$ pwd /datos/arduino/openwrt [adan@adan openwrt]$ ls tmp trunk [adan@adan openwrt]$ ls trunk/package/utils/holamundo/ Makefile [adan@adan openwrt]$
Y el contenido del Makefile es el siguiente:
include $(TOPDIR)/rules.mk PKG_NAME:=holamundo PKG_VERSION:=1.0.0 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) include $(INCLUDE_DIR)/package.mk define Package/$(PKG_NAME) SECTION:=utils CATEGORY:=Utilities TITLE:=$(PKG_NAME) MAINTAINER:=adan <adanpineiro@radsys.es> endef define Package/$(PKG_NAME)/description Este programa simplemente imprime en pantalla "Hola Mundo desde Arduino Yún" endef CONFIGURE_VARS+= \ CC="$(TOOLCHAIN_DIR)/bin/$(TARGET_CC)" define Package/$(PKG_NAME)/install $(INSTALL_DIR) $(1)/usr/bin $(CP) $(PKG_BUILD_DIR)/$(PKG_NAME) $(1)/usr/bin endef $(eval $(call BuildPackage,$(PKG_NAME)))
Siguiendo las instrucciones del post, creamos el paquete .xz, primero el directorio y los archivo fuente holamundo.c y Makefile
[adan@adan openwrt]$ ls -l tmp/holamundo-1.0.0/ total 8 -rw-rw-r--. 1 adan adan 108 dic 12 18:01 holamundo.c -rw-rw-r--. 1 adan adan 151 dic 12 18:02 Makefile [adan@adan openwrt]$ cd tmp [adan@adan tmp]$ tar --xz -cf holamundo-1.0.0.tar.xz holamundo-1.0.0/
Ya tenemos el paquete, ahora lo colocamos en “trunk/dl”:
[adan@adan tmp]$ cd .. [adan@adan openwrt]$ cp tmp/holamundo-1.0.0.tar.xz trunk/dl/ [adan@adan openwrt]$
Para compilarlo ejecutamos “make menuconfig” desde trunk/ y seleccionamos el paquete “holamundo” que viene marcado como nuevo (NEW) dentro de “utilities”:
Guardamos los cambios y compilamos:
[adan@adan trunk]$ make package/holamundo/compile make[1] package/holamundo/compile make[2] -C package/libs/toolchain compile make[2] -C package/utils/holamundo compile [adan@adan trunk]$
La estructura del paquete y el binario están en mi caso en:
[adan@adan trunk]$ ls -l build_dir/target-mips_r2_uClibc-0.9.33.2/holamundo-1.0.0/ total 24 -rwxr-xr-x. 1 adan adan 5389 dic 12 18:22 holamundo -rw-r--r--. 1 adan adan 108 dic 12 18:01 holamundo.c -rw-r--r--. 1 adan adan 1332 dic 12 18:22 holamundo.o drwxr-xr-x. 3 adan adan 4096 dic 12 18:22 ipkg-ar71xx -rw-r--r--. 1 adan adan 151 dic 12 18:02 Makefile [adan@adan trunk]$
Vamos a probar el ejcutable. Para ello tenemos que mandarlo al Arduino Yún. Lo más directo es emplear “scp”, nos ponemos en “build_dir/target-mips_r2_uClibc-0.9.33.2/holamundo-1.0.0/”:
[adan@adan holamundo-1.0.0]$ scp holamundo root@yun:/radsys/bin/ root@yun's password: holamundo 100% 5389 5.3KB/s 00:00 [adan@adan holamundo-1.0.0]$
Para probarlo nos conectamos mediante “ssh” al Yún:
root@yunadan:~# cd /radsys/bin/ root@yunadan:/radsys/bin# ls -l -rwxr-xr-x 1 root root 5389 Dec 12 17:43 holamundo root@yunadan:/radsys/bin# ./holamundo Hola Mundo desde Arduino Yún root@yunadan:/radsys/bin#