Inicio Artículos Cómo aprovechar la flexibilidad de la plataforma para acelerar el desarrollo

Cómo aprovechar la flexibilidad de la plataforma para acelerar el desarrollo

Flexibilidad de la plataforma para acelerar el desarrollo

Autor: Cedric Vincent, Head of Software Technology Lab, Tria Technologies

La velocidad es primordial para el prototipado y la clave para el éxito en el mercado pasa por desplegar aplicaciones que permiten ofrecer nuevos servicios y optimizar los ya existentes. Los actuales sistemas embebidos están aumentando mucho su funcionalidad porque recurren a tecnologías como el análisis de datos y el aprendizaje automático para manejar mejor los datos de los sensores en tiempo real. También aprovechan mejoras en la tecnología de la interfaz de usuario para que los sistemas automatizados sean más fáciles de configurar y controlar.

El aprovechamiento de estas mayores prestaciones implica a menudo utilizar técnicas de prototipado rápido. Los desarrolladores quieren probar diferentes escenarios de aplicación para determinar su idoneidad y la aceptación del mercado. Así, las primeras versiones pueden ir destinadas a clientes para valorar lo bien que funcionará la idea sobre el terreno; luego el equipo irá perfeccionando los conceptos de la aplicación hasta obtener un software fiable para establecer con más claridad qué funciones necesitará la producción. Será preciso añadir algunos elementos y otros que se consideren innecesarios deben ser eliminados.

No es necesario que el prototipado y el desarrollo se realicen sobre hardware físico, por lo que el trabajo se puede iniciar incluso antes de que el hardware esté disponible. Gran parte del software se puede desarrollar en un host y en la nube, donde los ingenieros pueden recurrir a las numerosas herramientas de simulación, depuración y análisis que admiten tales entornos. El obstáculo para la flexibilidad que buscan los desarrolladores que desean cambiar el hardware y adoptar diferentes entornos de ejecución reside en las dificultades que representan las aplicaciones embebidas.

Los sistemas embebidos exigen un acceso de bajo nivel a funciones de E/S y a menudo presentan requisitos en tiempo real que asignan mucha más relevancia a las dependencias del hardware. La gestión de tales cambios respecto a las dependencias del hardware mientras el código pasa del servidor al objetivo o entre diversos objetivos, a medida que el equipo de hardware optimiza la configuración, afecta a la rapidez del prototipado. Los ingenieros de software tienen la sensación de que gastan demasiado tiempo en reescribir el código de acceso a E/S y otras funciones que no funcionan según lo previsto cuando cambia la plataforma subyacente.

Las mejoras introducidas en los estándares de hardware han simplificado su portabilidad. Estándares como SMARC proporcionan una configuración uniforme de las patillas y una asignación común de las E/S a los periféricos. También han creado un mercado muy activo de tarjetas de procesadores listas para usar y módulos de expansión de E/S que han disminuido enormemente la necesidad de diseñar hardware a medida antes de iniciar la fase de prototipado.

En principio, SMARC facilita aún más el cambio entre diferentes arquitecturas de procesadores y conservan la misma capacidad de E/S. De este modo, los fabricantes pueden disponer antes de innovaciones que aumentan el rendimiento y reducen el consumo gracias a las arquitecturas Arm y X86 más recientes. Eso siempre que la portabilidad del software de una a otra arquitectura sea lo más fluida posible.

Además de proporcionar el acceso a muchas herramientas avanzadas de software, el entorno de la nube ha traído consigo importantes innovaciones en la portabilidad y la comodidad del software que pueden facilitar enormemente el proceso de traslado de una plataforma de hardware a otra. En este sentido, una de las innovaciones más importantes es el contenedor.

Un contenedor tiene algunos de los atributos de una máquina virtual ya que aísla el hardware del sistema operativo y el código de la aplicación para un proyecto. En el entorno de la nube, esta imagen garantiza que el sistema operativo y la biblioteca cubran las necesidades de la aplicación en todo momento, sea cual sea el servidor utilizado para ejecutar el software. Todas las solicitudes de acceso a las E/S son abstractas, de ahí que no sea necesario cambiar los accesos a una red; por ejemplo, para que funcionen con diferentes interfaces de hardware. Una de las principales ventajas de los contenedores respecto a las máquinas virtuales es que la ejecución de una aplicación en un contenedor se hará a la misma velocidad y utilizando la misma cantidad de memoria que si ejecutara fuera de un contenedor (nativo en el sistema), mejorando así la eficiencia del tiempo de ejecución. La ejecución de varios contenedores en un objetivo les permite compartir el mismo kernel (núcleo) del sistema operativo, pero siguen estando aislados funcionalmente entre sí con el fin de impedir interferencias mutuas.

La tecnología de los contenedores es la base del entorno SimpleSwitch para la familia de módulos SMARC de Tria. SimpleSwitch fue diseñado para que la creación de software embebido sea tan sencilla y rápida como desarrollar la app de un smartphone. Dado que emplea una manera estandarizada de exponer todas las interfaces de hardware al software ejecutado en el entorno de ejecución SimpleSwitch, las solicitudes de acceso del software a un bus I2C o un puerto GPIO serán las mismas para un módulo i.MX8M Mini, uno i.MX8M Plus o incluso una tarjeta que incorpore un procesador Intel x86.

El software suministrado se divide en tres partes: el kit de desarrollo de software (SDK); las imágenes del sistema operativo básico; y un registro de los contenedores que contengan muchas funciones útiles. El SDK es compatible con tres arquitecturas del objetivo: la familia i.MX8 basada en Arm de procesadores de NXP, Intel x86; y QEMU.

QEMU es una incorporación importante: se trata de una máquina virtual que replica las interfaces de hardware de los módulos SMARC en el objetivo con el fin de que el código diseñado para estos módulos se pueda ejecutar en el equipo host o en una plataforma en la nube. De esta forma se obtiene un método práctico y rentable para que grandes equipos de ingenieros participen en el mismo proyecto. No es preciso que tales desarrolladores esperen para acceder a un módulo de hardware que pudiera ser necesario para comprobación o evaluación del cliente. Pueden escribir y comprobar el código en el host y, en principio, trabajar con él igual que en el objetivo físico.

Cada imagen de SimpleSwitch proporciona un sistema operativo básico capaz de albergar los contenedores. La imagen es suficiente para arrancar la tarjeta y configurar una pantalla, además de permitir que el desarrollador utilice sesiones SSH para acceder a sus funciones internas a través de una conexión a la red.

TRIA SimpleSwitch

La imagen básica incluye un sistema de archivos Linux estándar construido con Yocto y acompañado por dos soluciones de software. La primera de ellas es SimpleCoreIO, una capa de abstracción del hardware que proporciona una manera sencilla y uniforme de acceder a cualquier E/S del módulo SMARC. La segunda solución de software es el administrador de contenedores, que ofrece una manera de organizar ambos contenedores del usuario. Proporciona un conjunto de plantillas compatibles con Python, Flutter y los entornos de tiempo de ejecución Qt. Gracias a estos contenedores ya preparados, los ingenieros de software pueden disfrutar del rápido desarrollo que ofrecen estos entornos.

El registro del contenedor dota a los desarrolladores de acceso a una amplia gama de soluciones de software ya preparadas que suministran más servicios que facilitan la creación de sistemas avanzados para IoT (internet de las cosas). Este registro incluye módulos para Chromium, COG, Mosquito y MQTT. Otro módulo incluido en el registro del contenedor es IoT Connect, que permite gestionar y procesar los datos para aplicaciones IoT. En pocos pasos, el desarrollador puede disponer de un dispositivo que recoja y envíe datos de telemetría a la nube incorporando su contenedor desde el registro y configurando el acceso a credenciales en el objetivo.

Las decisiones acerca del hardware van cambiando, al igual que las solicitudes de intercambio de módulos por parte del software; la combinación de la tecnología de contenedores y la compatibilidad con SDK y el registro permiten realizar estas modificaciones de forma rápida y con un mínimo esfuerzo.

Cuando el proyecto se aproxima a su finalización, los desarrolladores pueden plantearse qué entorno del tiempo de ejecución industrial se necesitará. La arquitectura de SimpleSwitch está optimizada para el prototipado, de ahí que incorpore funciones diseñadas para simplificar los cambios de hardware. El Embedded Kit complementario proporciona funciones listas para producción junto con utilidades que resultan valiosas para los sistemas sobre el terreno. Entre ellas se encuentran funciones de seguridad mejorada como capacidades de arranque seguro y mantenimiento a largo plazo que admiten actualizaciones de forma inalámbrica u OTA (over-the-air).

En resumen, el prototipado rápido ahora constituye una parte primordial del desarrollo embebido y de sistemas IoT. Escoger un entorno de software que permita introducir modificaciones rápidas en el hardware y el software, y aproveche las prestaciones de una potente plataforma como SMARC, garantiza que los equipos del proyecto eviten problemas de portabilidad. En lugar de ello se pueden centrar en aportar valor a la aplicación.