Cómo superar los obstáculos de desarrollo de Linux en sistemas con recursos limitados

Por Brandon Lewis

Colaboración de Editores de DigiKey de América del Norte

La tecnología de código abierto ofrece a los desarrolladores de sistemas electrónicos una vía para reducir los costos, acelerar la comercialización y ampliar los ciclos de vida de los productos, al eliminar los obstáculos de la propiedad y fomentar la colaboración. Actualmente, las oportunidades del código abierto abarcan toda la pila de sistemas, desde los sistemas operativos hasta el hardware de las computadoras monoplaca (SBC) y la IP de los semiconductores.

Sin embargo, los elevados requisitos computacionales, los riesgos de seguridad y los retos de latencia determinista siguen siendo un problema para ejecutar Linux en dispositivos con recursos limitados, como los sistemas de IoT industrial (IIoT) y robótica.

En este artículo se repasa brevemente los retos a los que se enfrentan los diseñadores a la hora de implementar Linux en sistemas con recursos limitados. A continuación, se presenta la SBC BeagleBoard.org BeagleV-Fire en combinación con Linux y describe cómo puede maximizar la futura flexibilidad del diseño. Se incluye una demostración de cómo utilizar los paquetes de soporte de placa (BSP) de código abierto de Microchip Technology para crear una configuración inicial de Linux.

Los retos del desarrollo de código abierto en los sistemas empotrados

La adopción de tecnologías de código abierto en el desarrollo integrado está bien establecida. Tanto el diseño del hardware como la integración del software se aceleran gracias a los activos listos para usar producidos por un amplio ecosistema de fabricantes e ingenieros individuales. En particular, la flexibilidad de Linux lo convirtió en una solución de software líder para sistemas que requieren redes, marcos de aplicaciones de alto nivel e integración de inteligencia artificial (IA).

Sin embargo, implementar Linux en dispositivos con más recursos introduce consideraciones adicionales:

  • Exigencias computacionales: Las unidades de microcontroladores (MCU) tradicionales tienen dificultades para satisfacer los requisitos de memoria y almacenamiento incluso de las distribuciones Linux mínimas. A medida que los desarrolladores añaden servicios en segundo plano para dar soporte a las aplicaciones, subsistemas y marcos de trabajo del espacio de usuario (USF), estos subsistemas consumen más recursos, lo que hace inviables las voluminosas pilas de software.
  • Latencia: Las aplicaciones de alta precisión, como la robótica y la automatización industrial, exigen una temporización predecible para la coordinación del sistema y la seguridad operativa. Mientras que la función PREEMPT_RT de Linux kernel mejora el determinismo, los sistemas operativos en tiempo real (RTOS) dedicados ofrecen una latencia y una sobrecarga menores para el hardware con recursos limitados.
  • Seguridad: Los sistemas integrados implementados en entornos públicos corren el riesgo de sufrir accesos no autorizados, por lo que las medidas de seguridad estándar como el inicio seguro, la resistencia a la manipulación y la Root of Trust (RoT) del hardware son fundamentales. Además, normativas como la Ley de Ciberresiliencia (CRA) de la UE obligan a que los productos con elementos digitales sean seguros por diseño.
  • Energía: Los dispositivos de borde suelen funcionar en entornos remotos con recursos energéticos limitados. Una mayor eficiencia energética puede prolongar la duración de las pilas o permitir el funcionamiento con fuentes de energía ambientales. Del mismo modo, una mayor eficiencia energética puede simplificar la gestión térmica y aumentar el rendimiento por vatio, apoyando el procesamiento avanzado de los bordes.
  • Gestión del ciclo de vida: La CRA exige que los dispositivos digitales reciban asistencia durante al menos cinco años, aunque muchas implantaciones industriales requieren de 10 a 15 años de disponibilidad del producto. Por lo tanto, para garantizar una compatibilidad constante con el núcleo Linux, los desarrolladores deben planificar la capacidad de actualización y la disponibilidad del hardware.

Para superar estos retos, los desarrolladores pueden recurrir a recursos adicionales de los ecosistemas Linux de código abierto y embebidos y aprovechar las combinaciones simplificadas de hardware y software de Linux para aplicaciones de borde en rápida evolución.

Implementación de Linux mediante SBC abiertos y RISC-V

Aunque las distribuciones Linux de uso general proporcionan una vía rápida para la preparación de aplicaciones, a menudo incluyen paquetes y servicios que no son necesarios para el proyecto en cuestión. Por el contrario, el Proyecto Yocto, impulsado por OpenEmbedded, permite a los desarrolladores crear imágenes Linux personalizadas adaptadas a casos de uso específicos. De este modo, se eliminan las funciones innecesarias, lo que permite que las distribuciones ligeras funcionen en hardware con recursos limitados y, al mismo tiempo, conserven las capacidades avanzadas, como la visión por computadora impulsada por IA o el mantenimiento predictivo mediante herramientas estándar.

Además, el Proyecto Yocto proporciona a los desarrolladores:

  • Construcciones reproducibles para un mantenimiento a largo plazo
  • Configuración personalizada del núcleo para mejorar el rendimiento, la seguridad y la capacidad de respuesta
  • Integración de capas específicas de la placa para garantizar la compatibilidad hardware-software y reducir el tiempo de desarrollo

La sencilla integración con mecanismos de actualización por aire (OTA) como SWUpdate, RAUC y Mender también ayuda a los desarrolladores a mejorar regularmente el rendimiento y la seguridad de los dispositivos a lo largo de los prolongados ciclos de vida de los productos. Como resultado, el Proyecto Yocto es ahora un estándar para los sistemas Linux integrados.

Del mismo modo, los SBC de código abierto se emplean desde hace tiempo para acelerar el desarrollo de aplicaciones Linux, ya que proporcionan una plataforma de referencia lista para usar que combina recursos de procesamiento, memoria, almacenamiento y E/S en un factor de forma autónomo. Con los SBC abiertos, los desarrolladores pueden crear rápidamente un prototipo de sistema, validar su pila de software y, a continuación, realizar la transición a un hardware personalizado con un mínimo de reelaboración.

La arquitectura de conjunto de instrucciones (ISA) de estándar abierto RISC-V lleva esto un paso más allá al permitir a los diseñadores de sistemas crear plataformas de procesamiento personalizadas sin costosas cuotas de licencia. Con RISC-V, los diseñadores pueden elegir qué partes del conjunto de instrucciones incluir e incluso ampliarlas para satisfacer sus casos de uso específicos. Dado que los diseños originales se crearon con una licencia de la Berkeley Software Distribution (BSD), las obras derivadas pueden ser abiertas y libres o cerradas y privativas.

Para los desarrolladores y arquitectos, el Proyecto Yocto, los SBC abiertos y RISC-V reducen la dependencia de las hojas de ruta de un único proveedor, lo que aumenta la flexibilidad del diseño a largo plazo. Además, el creciente apoyo upstream a RISC-V en Linux y la condición de miembro platino de RISC-V en el Proyecto Yocto subrayan el interés de la comunidad de Linux embebido.

Un SBC RISC-V de alto rendimiento para la integración compacta de Linux

El SBC BeagleV-Fire de código abierto de BeagleBoard.org (figura 1) ofrece una plataforma compacta y rica en E/S para afrontar estos retos. Con un sistema en chip (SoC) FPGA PolarFire de Microchip, ofrece un funcionamiento de bajo consumo, funciones de seguridad de hardware y un clúster de CPU RISC-V coherente que admite aplicaciones Linux que ejecutan cargas de trabajo en tiempo real. Los desarrolladores pueden utilizar el SBC para crear prototipos de controladores robóticos, pasarelas industriales, aceleradores edge-AI y plataformas de E/S personalizadas basadas en Linux embebido.

Imagen del BeagleV-Fire® de BeagleBoardFigura 1: BeagleV-Fire de BeagleBoard.org presenta una plataforma SBC compacta para integrar tecnologías de código abierto en dispositivos integrados. (Fuente de la imagen: BeagleBoard.org)

La plataforma compacta mide 86.38 mm × 54.61 mm × 18.8 mm y está construida en torno al SoC PolarFire MPFS025T-FCVG484E de bajo consumo. Presenta una arquitectura multinúcleo coherente con cuatro núcleos de aplicación RV64GC para ejecutar Linux y un núcleo de monitorización RV64IMAC para gestionar las funciones de bajo nivel.

Para maximizar el rendimiento y garantizar la precisión de los datos en todos los núcleos, el SoC PolarFire proporciona una caché L2 compartida, un subsistema de memoria coherente y un controlador de memoria DDR integrado para soportar 2 gigabytes (Gbytes) de memoria LPDDR4 a bordo. Las aplicaciones complejas cuentan además con el apoyo del almacenamiento eMMC de 16 Gbytes del BeagleV-Fire y la memoria flash SPI de 128 megabits (Mbit).

Junto al subsistema de procesador RISC-V, el SoC PolarFire integra una estructura FPGA (figura 2) que permite a los desarrolladores construir vías de procesamiento deterministas para aplicaciones en tiempo real de baja latencia e implementar una aceleración de hardware personalizada para las vías de inferencia de IA. Como parte del sistema completo, este tejido alberga 23k elementos lógicos y sus propios recursos suplementarios, lo que le permite funcionar independientemente de los núcleos de procesamiento principales.

Diagrama de las FPGA de SoC PolarFire de Microchip (haga clic para ampliar)Figura 2: La familia de SoC PolarFire de Microchip combina múltiples núcleos de procesamiento RISC-V con un tejido FPGA versátil para cargas de trabajo deterministas. (Fuente de la imagen: Microchip Technology)

Con múltiples opciones de arranque seguro, las funciones de seguridad de hardware integradas en el SoC PolarFire permiten a los desarrolladores implementar un modelo de seguridad en profundidad, lo que lo convierte en una plataforma útil para satisfacer los requisitos modernos de ciberseguridad. Estas características incluyen:

  • Raíz de confianza de hardware inmutable a través de una función físicamente no clonable (PUF)
  • Almacenamiento seguro de claves con programación de un solo uso (OTP) o almacenamiento seguro no volátil mediante Secretos de Dispositivo Único (UDS) y control de acceso a claves reforzado por hardware.
  • Un módulo antisabotaje

Más allá de esto, el BeagleV-Fire ofrece varios puertos físicos integrados para construir un sistema listo para aplicaciones en el que se puedan verificar y probar distribuciones personalizadas de Linux (Figura 3). Entre ellos se incluyen un puerto Gigabit Ethernet RJ45, un puerto USB Type-C para alimentación y conectividad, un zócalo M.2 Key E, dos cabezales Cape compatibles con BeagleBone de 46 pines para una mayor expansión del ecosistema y una interfaz serie de cámara (CSI) para integración directa. Se proporciona una huella JTAG TAG-CONNECT para depuración y el BeagleV-Fire también admite expansión compatible con SYZYGY para periféricos orientados a FPGA.

Imagen de BeagleV-Fire de BeagleBoard.org con puertos etiquetadosFigura 3: A pesar de su reducido tamaño, el BeagleV-Fire de BeagleBoard.org ofrece varios puertos físicos para la interconexión inmediata de aplicaciones. (Fuente de la imagen: BeagleBoard.org)

Cómo construir una configuración inicial de Linux en el SBC BeagleV-Fire

Cuando se construye una distribución Linux ligera para el BeagleV-Fire, los desarrolladores deben obtener primero una capa BSP adecuada del Proyecto Yocto. Esto proporcionará la configuración U-Boot, la configuración por defecto del kernel Linux, los árboles de dispositivos para soportar la placa y las definiciones de soporte de periféricos. Un repositorio GitHub soporta todos los BSP del kit de evaluación del SoC PolarFire, incluido el BeagleV-Fire.

Tras instalar todas las dependencias necesarias del Proyecto Yocto, las siguientes capas proporcionan la base de la compilación y deberán clonarse:

  • bitbake
  • meta-openembedded-core
  • meta-yocto (para la distribución de referencia Poky)
  • meta-mchp-common
  • meta-mchp-polarfire-soc/meta-mchp-polarfire-soc-bsp
  • meta-mchp-polarfire-soc/meta-mchp-polarfire-soc-community
  • Capas adicionales según lo requiera el proyecto

Una vez hecho esto, se puede construir una imagen mínima utilizando el objetivo de MACHINE = "beaglev-fire" y un archivo de configuración kas. El listado 1 muestra un ejemplo de configuración:

Copy
header:
  version: 19
 
repos:
  openembedded-core:
    url: git://git.openembedded.org/openembedded-core.git
    # yocto-5.0.15
    commit: 6988157ad983978ffd6b12bcefedd4deaffdbbd1
    layers:
      meta:
 
  bitbake:
    url: git://git.openembedded.org/bitbake.git
    # yocto-5.0.15
    commit: 8dcf084522b9c66a6639b5f117f554fde9b6b45a
    layers:
      bitbake: disabled
 
  meta-yocto:
    url: git://git.yoctoproject.org/git/meta-yocto.git
    # yocto-5.0.15
    commit: 9bb6e6e8b016a0c9dfe290369a6ed91ef4020535
    layers:
      meta-poky:
      meta-yocto-bsp:
 
  meta-mchp:
    url: https://github.com/linux4microchip/meta-mchp.git
    branch: scarthgap
    path: layers/third-party/meta-mchp
    layers:
      meta-mchp-common:
      meta-mchp-polarfire-soc/meta-mchp-polarfire-soc-bsp:
      meta-mchp-polarfire-soc/meta-mchp-polarfire-soc-community:
 
machine: beaglev-fire
 
 
local_conf_header:
  Users: |
    EXTRA_IMAGE_FEATURES = "allow-empty-password empty-root-password \
allow-root-login"

Listado 1: Se muestra un archivo de configuración de ejemplo que crea todos los artefactos de compilación necesarios para arrancar el BeagleV-Fire en un shell simple. (Fuente del listado: Microchip Technology)

La ejecución de "kas build core-image-minimal" creará entonces todos los artefactos de compilación necesarios para arrancar el BeagleV-Fire en un shell simple, incluidos los binarios U-Boot y una imagen FIT que contiene el núcleo y los módulos de Linux, el árbol de dispositivos y el sistema de archivos raíz.

Una vez creada una imagen Linux mínima para el BeagleV-Fire utilizando el Proyecto Yocto, es posible seguir los procedimientos estándar para crear una imagen personalizada y adaptar la compilación a los requisitos exactos del proyecto. En robótica y sistemas industriales, por ejemplo, Linux se utiliza a menudo junto a un RTOS más tradicional, como FreeRTOS o Zephyr, para permitir un procesamiento avanzado junto a operaciones en las que el tiempo es un factor crítico. Esta funcionalidad está bien respaldada por el SoC PolarFire de BeagleV-Fire, que puede configurarse para ejecutar simultáneamente varios sistemas operativos o aplicaciones bare metal.

Dado que muchos dispositivos integrados requieren una vida útil de 10 años o más, la combinación del ISA RISC-V abierto, Linux y la reproducibilidad basada en Yocto permite a las plataformas basadas en SoC PolarFire adaptarse a las amenazas de seguridad emergentes y a los nuevos requisitos de las aplicaciones mediante actualizaciones regulares locales u OTA. De este modo, el SBC BeagleV-Fire proporciona un excelente punto de partida para la adopción del código abierto, impulsando la flexibilidad y longevidad de los sistemas de borde inteligente.

Conclusión

Los límites computacionales, los requisitos de latencia determinista, la exposición a la seguridad y las exigencias de un ciclo de vida largo pueden plantear retos legítimos a la hora de ejecutar Linux en sistemas integrados con recursos limitados. El SBC BeagleV-Fire de BeagleBoard.org proporciona una arquitectura híbrida que combina la capacidad de RISC-V Linux con la lógica determinista basada en FPGA y características de seguridad de hardware para superar estos desafíos. Cuando se combina con el Proyecto Yocto y las capas BSP de código abierto de Microchip, los desarrolladores pueden utilizar esta plataforma para crear distribuciones Linux a medida y trazables, optimizadas para aplicaciones de robótica de larga duración, IIoT y computación de borde.

DigiKey logo

Descargo de responsabilidad: Las opiniones, creencias y puntos de vista expresados por los autores o participantes del foro de este sitio web no reflejan necesariamente las opiniones, las creencias y los puntos de vista de DigiKey o de las políticas oficiales de DigiKey.

Información sobre el autor

Image of Brandon Lewis

Brandon Lewis

Brandon Lewis has been a technical writer and editor for over 15 years, serving as editor-in-chief at various electronics engineering trade publications. Brandon’s areas of focus include microcontrollers, multicore embedded processors, embedded Linux and real-time operating systems, industrial communications protocols, single-board computers and computer on modules, and other aspects of real-time computing. He is an accomplished podcaster, YouTuber, event moderator, conference chair, and product reviewer.

Información sobre la editorial

Editores de DigiKey de América del Norte