¡Enlace copiado en el portapapeles!

Construir superposiciones de árboles de dispositivos en Toradex para pantallas Riverdi

Back to top

El objetivo de esta guía es crear un sistema en funcionamiento a partir de hardware limpio/fresco, utilizando Torizon OS y archivos fuente de árbol de dispositivos de ejemplo de Riverdi GitHub.

Así lo conseguimos:

  • Flashear Torizon OS desde cero
  • Construye una superposición de árbol de dispositivos personalizada desde Riverdi GitHub
  • Activar superposición en Torizon
  • Arranca en una pantalla totalmente gráfica y táctil

Esta guía evita intencionadamente:

  • Construir Yocto desde cero
  • Recompilar el núcleo Linux
  • Utilizar una máquina virtual Linux completa

Visión general de la arquitectura del sistema

Hardware

  • Toradex Verdin iMX8MP o iMX8MM
  • Porta-dalias Toradex
  • Pantalla Riverdi de 12,1″ (o cualquier otra pantalla Riverdi, pero en este ejemplo utilizamos la de 12,1″)

Antes de modificar el sistema, es importante entender cómo está construido el canal de visualización en Verdin iMX8MP + Dahlia.

Mostrar ruta de datos

Para la pantalla Riverdi de 12,1″, la cadena de señales es:

i.MX8MP LCDIF

MIPI DSI

SN65DSI83 (puente DSI → LVDS)

Panel LVDS

  • El bloque LCDIF del i.MX8MP genera datos de píxeles.
  • Los datos se transmiten a través de MIPI DSI.
  • El SN65DSI83 de TI convierte DSI en LVDS.
  • El panel LVDS recibe los datos de los píxeles y muestra la imagen.

Interfaces de control

Además de la ruta de vídeo, hay que configurar otros dos subsistemas:

  • Control de la retroiluminación
    • Accionado por PWM desde el i.MX8MP
    • Conectado al controlador de retroiluminación de la pantalla
    • El ciclo de trabajo controla el brillo (0-100%)
  • Tacto capacitivo
    • Conectado a través de I2C
    • Genera señales de interrupción
    • Expone un dispositivo de entrada en Linux (/dev/input/eventX)

Software

Utilizamos un entorno Linux, en este ejemplo una máquina virtual Windows con Ubuntu instalado en ella. Este es el núcleo de nuestra guía. Aquí encontrarás todo lo necesario: todo el código que utilizamos, todos los enlaces y todo está explicado. Más abajo encontrarás nuestro github:
https://github.com/riverdi/riverdi-toradex-DTS

Instalar dependencias de compilación

Antes de construir las superposiciones del Árbol de Dispositivos, el entorno de desarrollo debe contener las herramientas requeridas por el sistema de construcción del núcleo Linux.
Abre un terminal e instala los paquetes necesarios utilizando lo siguiente

sudo apt install -y \
git make gcc g++ bc bison flex \
libssl-dev libncurses-dev \N - libssl-dev
python3 python3-pip rsync wget xz-utils \
dispositivo-compilador-árbol

Estos paquetes proporcionan las utilidades básicas necesarias para construir componentes relacionados con el núcleo y artefactos del Árbol de Dispositivos.

Las siguientes herramientas son especialmente importantes para el proceso de construcción de superposiciones:

  • Git – Se utiliza para clonar las fuentes del núcleo Toradex y el marco de superposición del árbol de dispositivos.
  • Herramientas de compilación (gcc, make, etc.) – Requeridas por el sistema de compilación del núcleo Linux.
  • compilador de árbol de dispositivos (dtc) – Compila archivos fuente del Árbol de Dispositivos (.dts) en blobs binarios del Árbol de Dispositivos (.dtb o .dtbo)
  • Otras bibliotecas, como libssl-dev y libncurses-dev, son necesarias para diversas partes de la infraestructura de compilación del núcleo.

Una vez instaladas las dependencias, el sistema está listo para clonar las fuentes del núcleo Toradex y preparar el entorno de compilación para la superposición del Árbol de Dispositivos.

Crear espacio de intercambio y preparar el directorio de trabajo

Cuando se trabaja en una máquina virtual, la memoria RAM disponible puede ser limitada. Los sistemas de compilación relacionados con el núcleo pueden requerir memoria adicional durante la compilación, especialmente al procesar grandes árboles de fuentes.

Para evitar fallos de compilación relacionados con la memoria, se recomienda crear un archivo de intercambio que proporcione memoria virtual adicional.

Crea un archivo swap de 4 GB utilizando los siguientes comandos:

sudo fallocate -l 4G /archivo de intercambio
sudo chmod 600 /archivo de intercambio
sudo mkswap /archivo de intercambio
sudo swapon /archivo swap

El archivo de intercambio se añade entonces a la configuración del sistema para que se active automáticamente tras el reinicio:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Tras preparar el espacio de intercambio, crea un directorio de trabajo que almacenará todos los repositorios y artefactos de construcción utilizados en esta guía:

mkdir -p ~/trabajo
cd ~/trabajo

Este directorio se utilizará como espacio de trabajo principal para clonar las fuentes del núcleo Toradex, el marco de superposición y los archivos de superposición de la pantalla Riverdi.

Clonar las fuentes del núcleo Linux Toradex

El siguiente paso es descargar las fuentes del núcleo Toradex Linux. Estas fuentes proporcionan la infraestructura de compilación y los archivos de cabecera necesarios para el proceso de compilación de la superposición del Árbol de Dispositivos.

Navega hasta el directorio de trabajo creado anteriormente y clona el repositorio del núcleo Toradex:

git clone git://git.toradex.com/linux-toradex.git  

Este repositorio contiene el núcleo Linux utilizado en las versiones BSP de Toradex e incluye los archivos de configuración y los scripts de compilación necesarios para compilar los componentes del núcleo y las superposiciones del Árbol de Dispositivos.

El repositorio del núcleo es relativamente grande, por lo que clonarlo puede llevar varios minutos dependiendo de la conexión de red. En el vídeo adjunto se acelera este paso para que el tutorial sea conciso.

Una vez descargado el repositorio, el siguiente paso será seleccionar la rama del núcleo que coincida con la versión BSP utilizada en el módulo Verdin de destino.

Seleccionar la rama correcta del núcleo

Tras clonar el repositorio del kernel Toradex, el siguiente paso es seleccionar la rama que corresponde a la versión BSP que se ejecuta en el dispositivo de destino.

Las versiones BSP de Toradex se basan en versiones específicas del kernel de Linux, y las superposiciones del Árbol de Dispositivos deben compilarse con la misma rama del kernel para garantizar la compatibilidad.

Para listar las ramas del núcleo disponibles relacionadas con Linux 5.15, ejecuta:

git branch -a | grep -E "5\.15|toradex_5\.15" | head -n 50

Este comando filtra las ramas disponibles y muestra las relacionadas con la serie de kernels Linux 5.15 utilizada por varias versiones de Toradex BSP.

git checkout toradex_5.15-2.2.x-imx

Esta rama contiene las fuentes del núcleo y la configuración utilizadas por las versiones BSP de Toradex basadas en Linux 5.15 para los procesadores NXP i.MX.

Seleccionar la rama correcta garantiza que la superposición del Árbol de Dispositivos se construya con un árbol del núcleo que coincida con el software que se ejecuta en el hardware de destino.

Clonar la estructura de superposición del Árbol de Dispositivos

El siguiente paso es descargar el marco de superposición del Árbol de Dispositivos de Toradex. Este repositorio contiene la infraestructura de compilación utilizada para compilar las superposiciones del Árbol de Dispositivos utilizando el sistema de compilación del núcleo de Linux.

Clona el repositorio en el directorio de trabajo:

git clone git://git.toradex.com/device-tree-overlays.git

Este repositorio proporciona la estructura e integración Makefile necesarias para construir archivos .dtbo utilizando las fuentes del núcleo clonadas anteriormente.

Una vez clonado el repositorio, aparecerá un nuevo directorio llamado device-tree-overlays en el espacio de trabajo. Este directorio se utilizará más adelante para añadir las fuentes de la superposición Riverdi y compilar la superposición final.

Seleccionar la rama correcta del marco de superposición

Después de clonar el repositorio dispositivo-tres-overlays, el siguiente paso es seleccionar la rama que corresponde a la misma versión del núcleo utilizada anteriormente.

El marco de superposición del Árbol de Dispositivos debe coincidir con la rama del núcleo utilizada en el repositorio linux-toradex. Esto garantiza que el proceso de compilación de la superposición utilice las cabeceras del núcleo y la configuración de compilación correctas.

En primer lugar, enumera las ramas disponibles relacionadas con la serie del núcleo Linux 5.15:

git branch -a | grep -E "5\.15|toradex_5\.15" | head -n 50

Este comando filtra las ramas disponibles y muestra las asociadas al núcleo Linux 5.15 utilizado por varias versiones del BSP de Toradex.

A continuación, comprueba la rama correspondiente a la versión del núcleo seleccionada anteriormente:

git checkout toradex_5.15-2.2.x-imx

Utilizar la misma rama tanto para las fuentes del núcleo como para el marco superpuesto garantiza que el sistema de compilación siga siendo compatible con el BSP que se ejecuta en el módulo Verdin de destino.

Configurar la ruta de la fuente del núcleo y clonar las fuentes superpuestas de Riverdi

Antes de construir superposiciones del Árbol de Dispositivos, el sistema de construcción de superposiciones debe saber dónde se encuentran las fuentes del kernel de Linux. Esto se hace definiendo la variable de entorno STAGING_KERNEL_DIR, que apunta al repositorio linux-toradex clonado previamente.

Establece la variable utilizando el siguiente comando:

export STAGING_KERNEL_DIR=$HOME/trabajo/linux-toradex

Para que la configuración persista en todas las sesiones de terminal, añádela al archivo de configuración del intérprete de comandos:

echo 'export STAGING_KERNEL_DIR=$HOME/work/linux-toradex'  >>  ~/.bashrc
fuente ~/.bashrc

Esta variable permite que el marco de construcción de la superposición acceda a las cabeceras del núcleo y a los scripts de construcción que necesita el sistema de construcción del núcleo de Linux.

Clonar las fuentes de superposición Riverdi

Una vez configurada la ruta del núcleo, el siguiente paso es descargar las fuentes de superposición Riverdi utilizadas en esta guía.

Clona el repositorio en el directorio de trabajo:

git clone https://github.com/riverdi/riverdi-toradex-DTS.git

Este repositorio contiene los archivos fuente de superposición del Árbol de Dispositivos utilizados para configurar las pantallas Riverdi con los módulos Toradex Verdin.

Estas fuentes de superposición se integrarán en el marco de construcción de superposiciones Toradex en el siguiente paso de la guía.

Verificar las ramas del repositorio y localizar las fuentes superpuestas

Antes de continuar con el proceso de construcción de la superposición, se recomienda verificar que tanto el repositorio linux-toradex como el framework device-tree-overlays utilizan la misma rama del núcleo.

Esto garantiza que el proceso de construcción de la superposición siga siendo compatible con las fuentes del núcleo utilizadas anteriormente.

Puedes verificar la rama activa en cada repositorio utilizando:

git rev-parse --abbrev-ref HEAD

Ambos repositorios deben informar del mismo nombre de rama, por ejemplo:

toradex_5.15-2.2.x-imx

Utilizar la misma rama en ambos repositorios garantiza que el marco de superposición del Árbol de Dispositivos utilice las cabeceras del núcleo y la configuración de compilación correctas.

A continuación, navega hasta el repositorio Riverdi clonado para localizar las fuentes de superposición del Árbol de Dispositivos:

cd ~/trabajo/riverdi-toradex-DTS
ls

Este repositorio contiene los archivos fuente del Árbol de Dispositivos (.dts) y los archivos de inclusión (.dtsi) utilizados para configurar las pantallas Riverdi en las plataformas Toradex Verdin.

Los archivos de superposición necesarios se copiarán en el marco de construcción de superposiciones Toradex en el siguiente paso.

Construir la superposición y preparar el árbol de fuentes del núcleo

En esta fase, los fuentes de la superposición Riverdi están presentes en el directorio de compilación de la superposición y ésta se ha añadido a la lista dtb-y en el Makefile. El siguiente paso es compilar la superposición.

Desde el directorio device-tree-overlays/overlays, inicia la compilación:

limpiar
haz

Si aún no se ha preparado el árbol de fuentes del núcleo, la compilación puede fallar con un error similar a:

La configuración del núcleo no es válida
faltan include/generated/autoconf.h o include/config/auto.conf

Esto es de esperar porque el marco de superposición Toradex utiliza el sistema de construcción del núcleo de Linux (Kbuild). Kbuild requiere un árbol del núcleo configurado y preparado para generar los archivos de cabecera y los artefactos de configuración necesarios.

Para solucionarlo, prepara el árbol de fuentes del núcleo:

  1. Navega hasta el repositorio del núcleo.
    cd ~/work/linux-toradex
  2. Configura la compilación para la plataforma Verdin iMX8M Plus. El SoC es ARM de 64 bits, así que utiliza arm64 y un compilador cruzado AArch64.
    export ARCH=arm64
    export CROSS_COMPILE=aarch64-linux-gnu-
  3. Instala la cadena de herramientas del compilador cruzado en el sistema anfitrión:
    sudo apt install -y gcc-aarch64-linux-gnu
  4. Genera una configuración del núcleo por defecto y prepara el árbol del núcleo:
    make defconfig
    make oldconfig
    make prepare
    make scripts

Estos comandos generan los archivos de configuración y cabeceras que faltan y que necesita Kbuild, incluidos include/config/auto.conf y include/generated/autoconf.h.

Una vez preparado el árbol del núcleo, vuelve al directorio de la superposición y ejecuta de nuevo la construcción de la superposición:

cd ~/work/device-tree-overlays/overlays
limpiar
haz

Ahora la superposición debería compilarse correctamente y producir un archivo de salida .dtbo.

Añadir las fuentes de superposición Riverdi al marco de construcción

El marco de construcción de superposiciones Toradex compila las superposiciones ubicadas en el directorio de superposiciones. Por lo tanto, los archivos fuente del Árbol de Dispositivos Riverdi deben copiarse en este directorio antes de que pueda comenzar el proceso de compilación.

Navega hasta el directorio de construcción de la superposición:

cd ~/work/device-tree-overlays/overlays

Copia el archivo fuente de la superposición Riverdi para la pantalla DSI de 12 pulgadas:

cp ~/trabajo/riverdi-toradex-DTS/verdin-imx8mp_panel-cap-touch-12inch-dsi_overlay.dts .

A continuación, copia los archivos de inclusión de pantalla adicionales que utiliza la superposición:

cp ~/trabajo/riverdi-toradex-DTS/display-*.dtsi  

Estos archivos .dtsi contienen datos de configuración específicos del panel, como parámetros de temporización y definiciones de interfaz del panel utilizados por el archivo de superposición principal.

Registrar la superposición en el sistema de construcción

Para que la superposición se compile, debe añadirse al Makefile utilizado por el marco de superposición Toradex.

Abre el Makefile situado en el directorio de superposiciones:

nano Makefile

Añade una nueva entrada a la lista dtb-y:

cd ~/trabajo/riverdi-toradex-DTS
dtb-y += verdin-imx8mp_panel-cap-touch-12inch-dsi_overlay.dtbo

Esta línea indica al sistema de construcción del núcleo que compile el archivo .dts correspondiente en un binario .dtbo durante el proceso de construcción.

Una vez añadida esta entrada, la superposición pasa a formar parte de los objetivos de compilación y se generará cuando se ejecute el comando de compilación de superposiciones.

Construir la superposición del Árbol de Dispositivos

Tras preparar el árbol de código fuente del núcleo, la superposición puede compilarse correctamente.

Vuelve al directorio de construcción de la superposición:

cd ~/work/device-tree-overlays/overlays

Limpia cualquier artefacto de construcción anterior:

limpiar

A continuación, inicia la construcción de la superposición:

haz

Durante el proceso de compilación, el sistema de compilación del núcleo Linux invoca al Compilador del Árbol de Dispositivos (dtc) y compila el archivo fuente de superposición registrado en un archivo binario .dtbo.

Si la construcción finaliza con éxito, la salida de la construcción incluirá:

DTC verdin-imx8mp_panel-cap-touch-12inch-dsi_overlay.dtbo

Esto indica que el archivo fuente del Árbol de Dispositivos se ha compilado correctamente.

El archivo .dtbo generado aparecerá en el mismo directorio de superposiciones y ya está listo para ser transferido al módulo Toradex Verdin de destino.

Desplegando

Conexión al módulo Verdin

Después de construir con éxito la superposición Árbol de Dispositivos en el sistema anfitrión, el siguiente paso es desplegarla en el módulo Verdin de Toradex.

Para acceder a la consola Linux del módulo, conéctate al dispositivo mediante un terminal serie. En este ejemplo, se utiliza PuTTY para establecer la conexión.

Configura la conexión serie con los siguientes parámetros:

  • Tipo de conexión: Serie
  • Línea serie: El puerto COM asignado a la UART de depuración Verdin – compruébalo en el administrador de dispositivos
  • Velocidad: 115200

Tras abrir la conexión, el terminal mostrará el registro de arranque y, finalmente, proporcionará acceso a la shell de Linux que se ejecuta en el módulo Verdin.

Esta consola se utilizará para transferir el archivo .dtbo compilado y habilitar la superposición en la configuración de arranque.

Configurar la interfaz de red en el módulo Verdin

Antes de transferir el archivo de superposición compilado al dispositivo de destino, el módulo Verdin debe tener conectividad de red con el host de desarrollo.

Primero, comprueba las interfaces de red disponibles y su configuración actual:

ip a

Este comando muestra todas las interfaces de red presentes en el sistema y su estado actual.

A continuación, asigna una dirección IP estática a la interfaz Ethernet:

ip add add 192.168.10.2/24 dev eth0

A continuación, activa la interfaz:

ip link set eth0 up

Con la interfaz configurada, el módulo Verdin puede comunicarse con la máquina anfitriona a través de la red local. Esta conexión se utilizará en el siguiente paso para transferir el archivo .dtbo compilado.

Configurar una dirección IP estática en el ordenador principal

Para permitir la comunicación entre el host de desarrollo y el módulo Verdin, ambos dispositivos deben estar situados en la misma subred de red.

Tras asignar la dirección 192.168.10.2 al módulo Verdin, configura la interfaz Ethernet del ordenador principal con una dirección IP estática.

En Windows, abre Configuración avanzada de red, luego ve a las propiedades del adaptador Ethernet y configura manualmente los ajustes IPv4.

Establece los siguientes parámetros: (puedes establecer otros diferentes, pero sólo te recomendamos éstos)

  • Dirección IP: 192.168.10.1
  • Máscara de subred: 255.255.255.0
  • Puerta de enlace predeterminada: dejar vacío

Esta configuración coloca ambos dispositivos en la misma red local:

  • Ordenador anfitrión → 192.168.10.1
  • Módulo Verdin → 192.168.10.2

Con esta configuración, los dos sistemas pueden comunicarse directamente a través de Ethernet y el archivo .dtbo compilado puede transferirse al módulo Verdin en el siguiente paso.

Transferencia de la superposición al módulo Verdin

Una vez que el ordenador principal y el módulo Verdin están conectados a través de la red, la superposición compilada del Árbol de Dispositivos puede transferirse al dispositivo de destino.

En este ejemplo, el archivo se copia utilizando scp (Protocolo de Copia Segura):

scp ~/work/device-tree-overlays/overlays/verdin-imx8mp_panel-cap-touch-12inch-dsi_overlay.dtbo
[email protected]:/boot/overlays/

Este comando copia el archivo .dtbo compilado desde el host de desarrollo al directorio /boot/overlays del módulo Verdin.

Durante la primera conexión SSH, el sistema anfitrión puede mostrar un aviso de seguridad pidiendo que se confirme la autenticidad del dispositivo de destino. Tras aceptar la huella, la transferencia de archivos se realiza con normalidad.

El directorio /boot/overlays es utilizado por la configuración de arranque Toradex para almacenar los binarios de superposición del Árbol de Dispositivos que se pueden cargar durante el arranque del sistema.

Resumen

Asegúrate de que la superposición coincide exactamente con el BSP y la rama del kernel utilizados en tu dispositivo de destino: de ahí provienen la mayoría de los problemas de compilación. Una vez que el entorno está configurado correctamente, el flujo de trabajo es repetible: compilar, desplegar, activar y probar. A partir de ahí, adaptar las superposiciones a otras pantallas Riverdi es principalmente cuestión de ajustar los archivos específicos del panel.

DESCUBRE NUESTRA

Libro Blanco

Consigue una interacción perfecta entre el usuario y la pantalla con el CI de sensor táctil adecuado. ¿Te has enfrentado alguna vez a problemas con eventos táctiles fantasma o de certificación? ¡Impulsa tu I+D como un profesional con nuestro Libro Blanco!

Ve a nuestro catálogo de productos y comprueba cómo puedes ahorrar por calidad, no en calidad.

Ponte en contacto con nosotros ahora, ahorra con calidad, no en calidad.