El uso de sistemas embebidos se ha popularizado debido a que permiten implementar sistemas para un uso específico utilizando un entorno amigable de programación. Existen sistemas muy populares como Raspberry Pi de bajo costo, pero hay otros sistemas con un grado de especialización mayor, como es el caso de Zedboard, el cual permite la implementación de aceleradores de hardware e integración con dispositivos de comunicación reconfigurable.

Compilación Cruzada.

El término de compilación cruzada se refiere al proceso de compilación de los archivos para el sistema operativo basado en ARM, utilizando una computadora con un procesador diferente. De este modo, aprovechando el poder de cómputo de una computadora personal es posible generar los archivos que se utilizarán en el sistema embebido, la ventaja principal de la compilación cruzada es la reducción del tiempo que se requiere para instalar aplicaciones si se utilizara en cambio el procesador ARM.

GNU Radio Embedded.

Existen diferentes sistemas operativos embebedidos, ya sea basados en Windows, Android o Linux, los cuales permiten la interacción y control de la plataforma de hardware a través de protolos como SSH o Escritorio Remoto.

En el caso de Linux Embedded, existen herramientas que permiten generar una versión personalizada del sistema operativo, tal como Yocto y Open Embedded, donde, a través de selección de capas (layers), el usuario puede escoger las aplicaciones que se descargarán y compilarán para generar el sistema operativo embebido.

GNU Radio Embedded es un desarrollo del proyecto de GNU Radio donde, con ayuda de Open Embedded, se crea un sistema operativo embebido personalizado que incluye las herramientas de GNU Radio, adicionalmente, incluye un Software Development Kit (SDK) para actualizar las librerías y programas de GNU Radio a través de compilación cruzada.

Instalación de GNU Radio con compilación cruzada.

Instalación de SDK de GNU Radio.

Previo a la descarga del proyecto que se instalará a través de compilación cruzada, se requiere de la instalación del SDK (Software development Kit) de GNU Radio, en el post de Instalación de GNU Radio embedded en tarjetas ZedBoard se indica como instalar el SDK.

Descarga de proyecto de GNU Radio.

El proyecto de GNU Radio se puede descargar a través de sus repositorios con la herramienta de git.

$ git clone --recursive http://git.gnuradio.org/git/gnuradio.git

Al terminar, se creará una carpeta que contendrá el proyecto recién descargado, dentro esta carpeta se requiere ejecutar el comando que habilitará el entorno del SDK para la compilación cruzada.

$ cd gnuradio
$ . /usr/local/oecore-x86_64/environment-setup-armv7ahf-vfp-neon-oe-linux-gnueabi

Una vez habilitado el entorno, se procede a la generación de los archivos compatibles con el sistema operativo basado en ARM.

$ mkdir build-arm
$ cd build-arm
$ cmake -Wno-dev    -DCMAKE_TOOLCHAIN_FILE=/usr/local/src/gnuradio/cmake/Toolchains/oe-sdk_cross.cmake -DENABLE_GR_WXGUI=OFF -DENABLE_GR_VOCODER=OFF -DENABLE_GR_DTV=OFF -DENABLE_GR_ATSC=OFF -DENABLE_DOXYGEN=OFF -DCMAKE_INSTALL_PREFIX=/usr ../
$ make

Si se desea instalar un proyecto OOT, sólo cambia los parámetros del comando de cmake.

$ cmake -Wno-dev -DCMAKE_TOOLCHAIN_FILE=/usr/local/src/gnuradio/cmake/Toolchains/oe-sdk_cross.cmake -DENABLE_DOXYGEN=OFF ../

Una vez terminado este proceso, se copian los archivos generados a la tarjeta SD, en la partición de rootfs, donde está instalado el sistema operativo embebido.

$ sudo make install DESTDIR=ruta-a-memoria-sd/rootfs

Para actualizar la versión de GNU Radio del SDK, se copian los archivos de GNU Radio en la siguiente ruta.

$ sudo make install DESTDIR=/usr/local/oecore-x86_64/sysroots/armv7a-...

Una vez instalado GNU Radio en la memoria SD del sistema operativo embebido, se verifica en con el sistema embebido el correcto funcionamiento del sistema operativo y de GNU Radio.

Tradicionalmente en GNU Radio se tiene que ejecutar el comando sudo ldconfig para terminar el proceso de instalación, en el caso de GNU Radio Embebido, desde la terminal remota de SSH o algún cliente remoto, se puede ejecutar este comando para finalizar el proceso de instalación.

$ touch /etc/ld.so.conf
$ echo /usr/local/lib >> /etc/ld.so.conf
$ ldconfig

En caso de que se hayan instalado paquetes OOT, se tiene que indicar la ubicación de la instalación en la variable PYTHONPATH, si no se desea estar ejecutando esta variable cada vez que se inicia el sistema operativo, se puede mover los archivos al directorio dist-packages.

$ export PYTHONPATH=/usr/local/lib/python2.7/site-packages/

Conclusión.

Los sistemas embebidos son sistemas mínimos donde la actualización o instalación de aplicaciones pueden requerir de mucho tiempo o incluso ser un proceso que no se pueda realizar en esa plataforma de hardware. La compilación cruzada es una herramienta que permite ahorrar tiempo en este tipo de operaciones, facilitando al usuario la implementación de programas y eliminando erorres de compilación en la plataforma de hardware embebida.

GNU Radio en combinación con Linux Embedded nos permite implementar sistemas de radio configurable en plataformas dedicadas de una forma rápida y sencilla, donde con ayuda del SDK es fácil instalar y actualizar los proyectos de GNU Radio.

@viktor_ivan