Creación de un Sistema Embebido Linux para la Raspberry Pi

Creación de un Sistema Embebido Linux para la Raspberry Pi

¿Por qué desarrollar un sistema embebido para la Raspberry?

La principal razón es que las distribuciones oficiales (como el Raspbian) tienen instalados muchos paquetes que no nos serán necesarios, no disponen de las suficientes librerías cruzadas*, son más lentas a la hora de arrancar y consumen más recursos, entre ellos más memoria, bastante preciada en este tipo de sistemas. Por ello es más efectivo implementar un sistema embebido Linux, que optimice nuestra aplicación sobre la Raspberry.

Las librerias cruzadas son las que nos permiten programar y compilar desde una maquina más potente, y luego ejecutar los programas en la propia placa final, en este caso la RPI

¿Qué es un sistema embebido?

Un sistema embebido es un sistema informático y/o electrónico desarrollado para realizar una o pocas funciones específicas, y generalmente con un uso en tiempo real. En el caso concreto de Linux, al ser de código abierto nos aporta una serie de ventajas o libertades:

  • Nos permite hacer funcionar el software para cualquier propósito.
  • Es posible estudiarlo y modificarlo.
  • Nos ofrece libertad de distribuir tantas copias como se quiera, sin tener que pagar por ello.
  • Asi como libertad de redistribuir copias de una versión modificada. Por todas estas ventajas, estos sistemas están presentes en muchas de las cosas que nos rodean, como por ejemplo los televisores, los routers personales, o los lectores de tarjetas…

Partes de un sistema embebido:

  1. BSP (Board Support Package), que contiene el kernel de Linux, el bootloader, con los drivers de los dispositivos físicos de la placa a usar.
  2. Aplicaciones
  3. Sistema de integración: que une las dos anteriores, las librerías y las aplicaciones al entorno de trabajo del sistema. Para crear un sistema empotrado Linux es altamente recomendable utilizar otra máquina con el mismo sistema operativo, pues nos evitaremos posibles problemas de incompatibilidad con las herramientas. Otra ventaja es que lo que sepamos del Linux de escritorio será fácilmente aplicable al dispositivo empotrado.

Para ello, y en caso de no tener un ordenador con Linux, creamos una máquina virtual con algún programa como VMWare, y le instalamos los siguientes paquetes:

sudo apt-get install g++

sudo apt-get install dselect

sudo apt-get install git

sudo apt-get install gdbserver

sudo apt-get install uboot-mkimage

sudo apt-get install qt3-dev-tools

sudo apt-get install qt4-qmake

sudo apt-get install eclipse

sudo apt-get install eclipse-cdt

sudo apt-get install gparted

sudo apt-get install putty

sudo apt-get install nautilus-open-terminal

Buildroot:

Una vez instalados dichos paquetes utilizaremos Buildroot, una herramienta para crear distribuciones Linux desde cero para dispositivos empotrados. Nos permite crear los sistemas a partir del código fuente de los paquetes a utilizar y que ofrece un gran número de posibilidades a la hora de crear distribuciones. Se basa en los comandos make y defconfig para su funcionamiento.

Permite configurar entre otros parámetros, la arquitectura a utilizar, el kernel, el bootloader (en nuestro caso uboot), el toolchain, (puede ser externo o el suyo, configurándolo previamente a la creación de la imagen del kernel). Podemos, además elegir la ABI (Application Binary Interface), en este caso la EABI para ARM. La ABI es la que nos define como se pasan los parámetros a una función, que devuelve, y como se hacen las llamadas al sistema. Es posible, también, elegir la versión de Busybox. Busybox es un conjunto básico de programas necesarios para trabajar en cualquier sistema embebido, para manipular ficheros, para configurar el sistema, un programa de inicio, una shell. Es una alternativa que nos permite integrar todo esto en un solo proyecto para que sea más fácil trabajar con ello.

Buildroot ofrece utilidades de configuración tipo Menuconfig, o Xconfig, y además todas las opciones de configuración se encuentran en un único archivo .config que puede utilizarse para recrear una distribución desde cero.

Ofrece también, facilidades para añadir paquetes que no se encuentran en la distribución oficial. Esta herramienta además, nos genera tanto el sistema de ficheros, como las librerías cruzadas y herramientas necesarias para trabajar con la nueva distribución, evitando problemas de incompatibilidades.

Igualmente nos permite añadir directorios y archivos al sistema de ficheros de la nueva distribución, así como ejecutar scripts de pre y post instalación.

Es totalmente libre, y lo actualizan aproximadamente cada 3 meses. Además está muy bien documentado y existen muchos ejemplos de los que ayudarnos.

Una vez que le hemos indicado al Buildroot nuestra configuración, escribiendo el comando make, esta herramienta prepara el entorno para la compilación, configura los paquetes, los descarga, compila e instala.

En calidad de Afiliado de Amazon, obtengo ingresos por las compras adscritas que cumplen los requisitos aplicables