Barcelona (34) 93 263 33 54 | Madrid (34) 91 329 55 00 | Norte (34) 94 623 26 48

SBC ARM: Cómo integrar las librerías de Qt en Buildroot

El objetivo de esta nota de aplicación es explicar los pasos a seguir para compilar una imagen de sistema BuildRoot con el toolkit Qt e instalarla en una SBC ARM. Para ello vamos a usar la placa ARMStone A9 basada en la familia de procesadores de NXP i.MX6.

En una entrada anterior hablamos de cómo instalar UBoot y la imagen BuildRoot de F&S. En este caso se compilará una imagen propia eligiendo los módulos que nos interesen para nuestra aplicación. Esto puede resultar especialmente interesante para placas con memorias más limitadas.

1. Máquina Virtual

  • F&S pone a disposición de sus usuarios una máquina virtual Fedora con lo necesario para empezar a desarrollar en la ARMStone A9. Se puede descargar (previo registro) desde la sección My F&S de la página del fabricante.

Máquina virtual Fedora

Máquina virtual Fedora

  • Mediante el software de virtualización VMware Player o VM VirtualBox arrancar la máquina virtual y confirmar que tiene conexión a internet. Esto es necesario para descargar las dependencias necesarias a la hora de compilar la imagen Buildroot con la configuración de módulos elegida.

Ajustes a conexión de red de la máquina virtual

Ajustes  de red de la máquina virtual

2. Compilación

  • La máquina virtual de F&S contiene los archivos fuente necesarios para compilar imágenes de sistema para diferentes plataformas. Para la ARMStone A9 se usará la fsimx6-B2020.04 (en caso de necesitar descargarlos de nuevo, están disponibles en la sección My F&S).
  • Primero hay que extraer los archivos fuente. Para facilitar esta tarea existe un script que hará esta extracción de manera automática. Se ha de abrir una terminal en el directorio fsimx6-B2020.04 y usar el siguiente comando:

./setup-buildroot build-dir

  • Con esto se crea la carpeta build-dir y dentro se encuentran los archivos fuente necesarios para la compilación de UBoot, Buildroot y el kernel de Linux.

Compilación de archivos

Compilación de archivos

Compilación de UBoot

  • Dentro de la carpeta build-dir acceder a la carpeta “u-boot-2018.03-fsimx6-B2020.04” y abrir una terminal.
  • UBoot se compilará al ejecutar los siguientes comandos:

make fsimx6_config
make

Compilación de BuildRoot y Kernel

  • Dentro de la carpeta build-dir acceder a la carpeta “buildroot-2019.05.3-fsimx6-B2020.04” y abrir una terminal.
  • Ejecutar los siguientes comandos:

make fsimx6_std_defconfig
make xconfig

  • Aparecerá el menú con el que configurar la imagen Buildroot y desde donde se han de seleccionar los módulos necesarios para el proyecto. En este caso seleccionar la última versión de Qt y guardar la configuración.
  • Con el comando make comenzará la compilación de BuildRoot y Kernel, que puede tardar varias horas la primera vez.

Configuración de la imagen

Configuración de la imagen

3. Instalación

Medio de Instalación

En la carpeta raíz de un pendrive se han de copiar los siguientes archivos:

  • De la carpeta “/fsimx6-B2020.04/build-dir/buildroot-2019.05.3-fsimx6-B2020.04/output/images” copiar todos los archivos. Renombrar zImage y ubifs a zImage-fsimx6 y rootfs-fsimx6.ubifs respectivamente.
  • De la carpeta “/fsimx6-B2020.04/build-dir/u-boot-2018.03-fsimx6-B2020.04” copiar el archivo “uboot.nb0”.
  • De la carpeta home “/developer/Desktop/fsimx6-B2020.04/binaries” copiar el archivo install-fsimx6-B2020.04.scr y renombrar a install.scr.

Ficheros de instalación

Ficheros de instalación

Instalación de UBoot

  • Conectar la ARMStone usando el cable de interfaz serie. En este caso además se ha de utilizar un adaptador serie-USB para conectarlo al PC.

 

Cable de interfaz serie para comunicación con la placa

  • Usando el programa TeraTerm establecer conexión con la placa. Los parámetros de comunicación son los siguientes:
Parameter 
Valor 
Port 
Puerto serie donde está conectada la placa 
Baud rate 
115200 
Data bits 
8 
Parity 
None 
Stop bits 
1 
Flow control 
None 
  • Mantener pulsada la tecla «S» para reiniciar la placa. En la terminal aparecerá el menú de NBoot:

Please select action
‘d’ -> Serial download of bootloader
‘E’ -> Erase flash
‘B’ -> Show bad blocks
Use NetDCUUsbLoader for USB download

  • Limpiar la memoria flash pulsando la tecla «E».
  • Como NBoot no es capaz de leer desde la micro-SD, la actualización de UBoot se hace por transmisión serie.
  • Pulsar «d» y usar la opción «Send File«.
  • Seleccionar el archivo «ubotmx6.nb0» que se ha descargado previamente y marcar la casilla «Binary«.
  • Se inicia la transmisión del archivo a la memoria flash. Al finalizar aparecerá el siguiente menú:

>>> U-Boot image loaded (524288 bytes) <<<
Please select action
‘f’ -> Save image to flash
‘x’ -> Execute image
‘d’ -> Serial download of bootloader
‘E’ -> Erase flash
‘B’ -> Show bad blocks
Use NetDCUUsbLoader for USB download

  • Pulsar «f» para guardar UBoot en la memoria flash y «x» para ejecutarlo.
  • Al finalizar estos pasos, UBoot debería estar instalado y en funcionamiento.

Instalación de BuildRoot

La carpeta descargada anteriormente contiene lo necesario para instalar Buildroot en la placa:

  • Conectar a la placa la micro-SD o pendrive donde están los ficheros.
  • Reiniciar la placa usando el comando “reset” en UBoot o apagándola.
  • Al arrancar UBoot, el sistema comprueba que en el dispositivo de almacenamiento existe el script que inicia la instalación.
  • Esperar a que termine la instalación.
  • Configurar la MAC usando el siguiente comando, donde xx:yy:zz es el número de serie de la placa:

setenv ethaddr 00:05:51:xx:yy:zz
saveenv

  • Reiniciar la placa usando el comando “reset”.
  • Iniciar sesión con “root».

Welcome to F+S i.MX6
fsimx6 login:

  • Ahora la imagen de Linux debería estar funcionando en la placa.
  • Para comprobar que las librerías de Qt seleccionadas se han instalado correctamente, se puede usar el siguiente comando, que busca en todo el sistema de ficheros los elementos que contengan «qt» en su nombre sin tener en cuenta mayúsculas:

find / -iname *qt*

Búsqueda de librerías Qt

Búsqueda de librerías Qt

4. Conclusión

Si se han seguido los pasos descritos, la placa ARMStoneA9 debería estar funcionando con Buildroot y Qt. Hay que tener en cuenta que en función del número de módulos y la versión de la placa, la imagen de sistema puede ser demasiado grande. En ese caso habría que deseleccionar los módulos no necesarios y volver a compilar la imagen completa usando el comando make clean antes de volver a usar make.

 

Más información sobre ARMStone

Si deseas más información sobre ARMStone y otras placas del mercado industrial, puedes leer el post SOM ARM: Guía Básica para Escoger el Mejor Procesador para tu Aplicación, donde se hace un resumen de los diferentes formatos en módulos ARM y se detallan algunos de los procesadores más conocidos en el mercado industrial (iMX6, iMX6UL, iMX7, STM32MP1 y iMX8).

En Venco disponemos de un amplio catálogo donde se puede encontrar SBC ARM , SOM y otros productos embedded procedentes de los mejores fabricantes, como F&S o Kontron. Tenemos línea directa con nuestros partners, que nos proporcionan información detallada y actualizada de todos sus productos.

Pregúntanos sin compromiso y te asesoraremos en la mejor solución para tu aplicación o proyecto.

Vías de contacto: