Arduino Yún – Hola mundo

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/ArduinoBoardYun

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”:

Pantallazo-adan@adan:-datos-arduino-openwrt-trunk

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#

Deja un comentario