Inicio Artículos Modularización del diseño de sistemas electrónicos

Modularización del diseño de sistemas electrónicos

sistemas electronicos

En el diseño de hardware de electrónica se ha gestado una revolución silenciosa. En paralelo a la integración del silicio (en cumplimiento de la Ley de Moore), los ingenieros han paso gradualmente de dedicar la mayor parte de su tiempo desarrollo de componentes y circuitos a trabajar más con placas, módulos y subsistemas. El beneficio ha sido una mejora notable en la eficiencia del diseño electrónico.

Este cambio ahora se está repitiendo en el software, donde los desarrolladores tratan de aprovechar mejor los módulos reutilizables en lugar de depender principalmente de las líneas de código que ellos mismos escriben. El giro hacia el diseño modular ofrece muchas ventajas. Una de ellas es la mayor posibilidad de aprovechar las economías de escala derivadas del uso de plataformas que atraen a muchos clientes. Los usuarios industriales tienen mucha experiencia con el hardware modular.

Los estándares Versa Module Eurocard (VME) y CompactPCI dan a los integradores y subcontratistas que trabajan en los mercados de bajo volumen la capacidad de utilizar recursos informático de alto rendimiento. Pueden personalizar mucho más las capacidades de un ordenador sin necesidad de invertir tiempo ni esfuerzo en el diseño de placas de circuito impreso de gama alta. Desde entonces, la Ley de Moore ha logrado un increíble aumento de la funcionalidad ha reducido el coste de los componentes. El ordenador monoplaca Raspberry Pi es un excelente ejemplo.

Modularización Hardware económico y listo para usar

Gracias a las economías de escala propias de la plataforma de sistema en chip (SoC) en un smartphone, el consorcio que promueve Raspberry Pi ha logrado crear un producto mucho más efectivo de lo que hubiera sido posible con un diseño creado originalmente para uso educativo. Los costes no recurrentes de ingeniería en los que incurrió el proveedor de silicio fueron fácilmente absorbidos por el mercado objetivo principal, ofreciendo un valor mucho mayor a los usuarios a los que se dirige Raspberry Pi.

Esta ventaja económica se traspasó al sector industrial. Integradores y subcontratistas han aprovechado la modularidad de la plataforma Raspberry Pi usando el bus de expansión HAT para añadir sus propios módulos de interfaz a medida. El uso de los módulos Pi exime a los equipos de ingeniería de buscar componentes similares para incluirlos en las placas de circuito impreso a medida, las cuales requieren a menudo unas verificaciones funcionales y de la integridad de la señal que necesitan más tiempo que las indispensables para crear los módulos HAT en la etapa de entrada. Muy a menudo, estos módulos a medida pueden usar placas de circuito impreso relativamente simples de dos o cuatro capas.

Eclosión de módulos de software listos para usar

Ha surgido una tendencia similar de modularizar el software. Los ingenieros ahora se pueden concentrar exclusivamente en los elementos de una aplicación en los que pueden añadir valor. Esta tendencia recibe impulso no solo por parte de las economías de escala y de la capacidad de algunos fabricantes de amortizar de forma efectiva el coste no recurrente de ingeniería, sino también gracias a la tendencia más acentuada hacia la integración en red y los modelos de negocios enfocados en los servicios.

Un sistema embebido actual con frecuencia no está completo hasta que no forma parte de un sistema más amplio de sistemas, como Internet de las cosas (IoT). En este contexto se puede utilizar un dispositivo para ayudar a prestar uno o más servicios, muchos de los cuales variarán durante la vida útil del hardware utilizado para ofrecerles soporte. Esta combinación de IoT y la nube está generando nuevos modelos de negocios que aprovechan estas capacidades, como el software como servicio (SaaS) y el pago por uso.

La flexibilidad se ha convertido en un criterio clave en este entorno comercial que impulsa a los implementadores a buscar estructuras más modulares. La modularidad empieza por el sistema operativo.

El sistema operativo admite abstracciones vitales para construir entornos modulares flexibles. Normalmente un sistema operativo ofrece un conjunto de servicios, que van desde entradas/salidas simples hasta pilas de red completas, todo ello accesible mediante un conjunto de API (application-programming interfaces) documentadas. Siempre cuando los servicios continúen dando soporte a las API, el código mediante el cual se suministran puede cambiar sin afectar las aplicaciones que usan esas API.

Esto es válido tanto para el planificador simple en tiempo real FreeRTOS que se suministra con varias herramientas de desarrollo del microcontrolador como para implementar sistemas operativos en tiempo real (RTOS) comerciales y más complejos, como VxWorks de Wind River. VxWorks marca la pauta en el sector de los sistemas operativos embebidos impulsando el funcionamiento de los dispositivos y las infraestructuras más cruciales. Linux y otros sistemas operativos pueden llevar más allá la gestión de la memoria al posibilitar el aislamiento de las tareas entre sí.

Un problema potencial con las estructuras RTOS simples es que funcionan en un espacio de memoria totalmente sin partición. Los errores o el comportamiento malintencionado en una tarea pueden provocar que se sobrescriben los datos y el código en otra tarea de forma accidental, lo cual genera el fallo del sistema u otros resultados no deseados.

Linux usa el direccionamiento virtual mediado por una unidad de gestión de memoria de hardware para evitar que las tareas tengan acceso al espacio de memoria entre sí. Solo pueden interactuar mediante la API del sistema operativo o protocolos entre aplicaciones construidos sobre estas API. El direccionamiento de l a memoria virtual no es un requisito absoluto para el aislamiento de las tareas.

Algunas arquitecturas de microcontrolador, incluidos varios miembros de las familias Arm Cortex-M y Cortex-R, pueden imponer la protección de la memoria en un espacio de memoria plana. Arm también ofrece el modo seguro de software Trustzone en varios de sus procesadores, lo que permite aislar el software sensible de las tareas del nivel de usuario. Con esta protección es más fácil combinar el código a medida con la gama creciente de módulos de software listos para usar que se han desarrollado para hacer frente a las tareas comunes.

Integración de código abierto y funciones propietarias

En la actualidad los ingenieros pueden acceder a una gran variedad de módulos de software de código abierto y pilas de protocolo gratuitos disponibles a través de Github, Sourceforge y otros servicios. También se ofrecen pilas comerciales con mayor soporte, funciones adicionales o certificación para aplicaciones en las que la seguridad es crucial.

Los diseños de referencia reunidos por los fabricantes de chips de silicio suelen combinar funciones de código abierto y propietarias para facilitar a los clientes desde la construcción de prototipos hasta la implementación completa de los productos. En ciertos casos el diseño de referencia implementa una aplicación completa que el usuario final puede afinar según sus necesidades.

Algunos diseñadores de sistemas están aprovechando la creciente modularidad del software para construir entornos de desarrollo que afinan los parámetros y generan el código de forma automática. Estas herramientas a menudo emplean representaciones de software basadas en bloques que el desarrollador reúne en una interfaz gráfica de usuario.

Un ejemplo es el configurador de códigos MPLAB de Microchip para las familias de microcontroladores PIC8, PIC16 y PIC32. Las aplicaciones avanzadas, como el aprendizaje automático y el procesamiento de imágenes, son ejemplos de las áreas en que los usuarios pueden beneficiarse de la alta inversión de costes no recurrentes de ingeniería de los especialistas y evitar los años de desarrollo que tal software requeriría si los usuarios tuvieran que construirlo desde cero.

Caffe, PyTorch y Tensorflow de Google hacen posible construir, entrenar y afinar modelos complejos de inteligencia artificial que se integran fácilmente a los canales de procesamiento embebido. Para procesamiento de imágenes, OpenCV es una biblioteca muy utilizada que se puede incorporar con faci l i dad en aplicaciones en tiempo real. Con el auge del aprendizaje automático, un modelo actual de uso cada vez más común es que OpenCV procese previamente los datos de las imágenes antes de que estos pasen a un modelo de inteligencia artificial creado usando Caffe o Tensorflow, y el código a medida se usa sobre todo para dar respuesta en tiempo real a los eventos detectados el modelo.

Integración completa

Los desarrolladores disponen ahora de módulos y herramientas de software dirigidos a la nube, que se integran con facilidad a las pilas de red y las implementaciones de RTOS. Esto hace posible integrar sistemas embebidos con diversos niveles de complejidad en IoT. La plataforma Connect™ de Avnet, por ejemplo, ofrece procesamiento basado en la nube para tareas complejas como inteligencia artificial.

Dado queel sistema es definido tanto por los servicios de software en nube como aquellos embebidos en los dispositivos, los proveedores en la nube como Amazon Web Services y Microsoft Azure ahora tienen diversas ofertas que reúnen ambas opciones y aprovechan la modularidad de los componentes de software empleados. La modularización está introduciendo cambios en las habilidades requeridas por los ingenieros de software embebido.

El equilibrio entre responsabilidades está pasando del desarrollo del código a la capacidad de construir arquitecturas flexibles basadas en módulos ya existentes que permitan personalizar el código y configurar el tiempo de ejecución a medida que se despliegan nuevos servicios. Al aprovechar esta modularidad, los subcontratistas e integradores de sistemas pueden cubrir fácilmente los requisitos de los clientes, algo inconcebible con los medios tradicionales.