¿Qué tienen en común una consola, un TPV, un decodificador, un teléfono móvil y una lavadora? Todos ellos tienen un sistema embebido: es decir, tienen un microprocesador integrado en su interior que procesa la información, los supervisa y controla su funcionalidad. Los primeros ejemplos de sistemas embebidos se remontan a los años 60, pero no fue sino hasta finales de los 80 cuando se produjeron en masa. Hoy su desarrollo está estrechamente ligado al de la Internet de las cosas. ¿Por qué?
Qué es un sistema embebido
‘Embedded’ en inglés significa ‘incrustado, encapsulado’. Un sistema embebido es, por tanto, un sistema de procesamiento que, sin ser inmediatamente visible, está integrado en el objeto o sistema informático en el que está incrustado para controlar y gestionar determinadas funciones.
Está configurado como un microprocesador que, a diferencia de una PC, está programado para realizar únicamente tareas particulares de medición y control, a menudo una sola operación (propósito especial). Por lo tanto, los sistemas embebidos no son reprogramables, salvo parcialmente y en casos especiales, y no pueden separarse del sistema en el que están integrados sin que este pierda funcionalidad.
Hardware y software a medida
Diseñados para fines específicos, la mayoría de los sistemas embebidos no tienen un sistema operativo, sino un hardware y un software “a medida”, también llamado “firmware”, estrictamente necesario para su funcionamiento. De pequeño tamaño, los sistemas embebidos operan sin interacción humana y son capaces de resistir eventos dañinos y reiniciarse de forma autónoma.
El “corazón” de un sistema embebido es el microprocesador, que, como en una PC, contiene la CPU -unidad central de procesamiento- y sus interfaces. La CPU se comunica con la memoria RAM, es decir, la memoria del sistema, de ejecución, y con la memoria ROM, es decir, la memoria de archivo en la que se suele programar el firmware, con o sin sistema operativo.
Sin embargo, a diferencia de una PC, un sistema embebido es más “ligero” precisamente porque tiene que realizar menos tareas: por tanto, tiene frecuencias de CPU más bajas y menos memorias.
La CPU está conectada a las memorias y a otros dispositivos de entrada-salida a través de pistas de cobre llamadas “buses”, que transportan impulsos eléctricos y, por tanto, información. A continuación, los buses también conectan los dispositivos lógicos programables, los sistemas de alimentación y refrigeración, los sensores y los actuadores con la CPU, que a través de las conversiones analógicas a digitales y viceversa (AD-DA) permiten al sistema intercambiar datos con el mundo exterior.
Las operaciones de la CPU están cronometradas por un reloj especial, una señal digital que cambia entre 0 y 1 varias veces por segundo: con cada pulso se realiza una operación. Los intervalos de tiempo se miden mediante temporizadores especiales. El reloj, en los sistemas embebidos, también es menos “rendidor” que un procesador “polivalente”
Para qué sirven los sistemas embebidos
Los sistemas embebidos realizan tareas en tiempos determinados y a bajo costo. Pocas tareas repetidas. Son sistemas específicos: la mayoría funcionan en tiempo real (sistemas de tiempo real) con la restricción de cumplir el plazo de ejecución (tiempo real duro).
Por lo tanto, sirven para realizar funciones de medición y control en tiempo real con un bajo consumo de energía y bajos costes de mantenimiento. Ejemplo: En caso de incendio, el sistema embebido cerrará automáticamente las puertas cortafuegos en el tiempo predeterminado para que el fuego no se propague al resto del edificio.
En los marcapasos, comprobará que el dispositivo no se descargue prematuramente. En las lavadoras, supervisará los parámetros de funcionamiento e informará de cualquier anomalía.
Clasificación de los sistemas embebidos
Los sistemas embebidos pueden clasificarse en tres tipos: PLC -controladores lógicos programables-, microcontroladores y System-on-Chips.
Los PLC, controladores lógicos programables
Están diseñados para sistemas de automatización y suelen estar programados a medida para una función específica. Se utilizan para controlar las señales de entrada (digitales o analógicas), realizar operaciones lógicas y activar señales de salida específicas. Disponen de una buena conectividad de entrada-salida para intercambiar datos con sensores y actuadores dentro de las plantas industriales. Constan de la CPU, una fuente de alimentación y módulos de entrada/salida (E/S).
Microcontroladores
Los microcontroladores reducen los componentes del microprocesador a un micropaquete. Se utilizan en las mediciones, en la recogida de datos medioambientales y en la industria del automóvil porque tienen varios pines de entrada y salida que permiten una interacción eficaz con el entorno. En los modelos más avanzados, están equipados con interfaces Wi-Fi, Ethernet, pantalla táctil y LCD.
System on Chips
Los System-on-Chips tienen, por definición, todo el sistema concentrado en una sola unidad: pueden encerrar potencialmente la CPU, la GPU, las memorias, todos los dispositivos de conectividad y control de audio-vídeo, los puertos de entrada y salida, los convertidores y los sensores. En realidad, se programan según las necesidades. Y, con diferentes modos de programación, se incorporan a teléfonos inteligentes, GPS, reproductores multimedia, domótica.
Sistemas embebidos y el Internet de las cosas
Los sistemas embebidos, integrados en objetos o sistemas informáticos más complejos, se están convirtiendo cada vez más en soluciones de IoT: arquitecturas que permiten que los dispositivos conectados en red, entre sí y con las personas, adquieran, procesen e intercambien información con el entorno para realizar las acciones más adecuadas en tiempo real.
No todos los sistemas embebidos son IoT: es el caso de los sistemas diseñados para lograr un intercambio “cerrado” de datos e información entre dispositivos sin interacción con el entorno. Por lo tanto, no basta con que un sistema embebido esté equipado con microcontroladores con sensores y convertidores de analógico a digital y de digital a analógico para ser considerado IoT.
Machine2Machine
Por ejemplo, un tipo de sistema embebido muy extendido es el M2M, Machine2Machine: un conjunto de tecnologías que soportan la comunicación por cable e inalámbrica entre dispositivos y máquinas, para permitir el intercambio de información local, incluso a distancia.
SCADA
En el entorno industrial, un sistema M2M típico es el SCADA -Supervisory Control and Data Acquisition-, con funciones de supervisión y control de los equipos en las plantas de producción. Un SCADA puede ser utilizado por un operador a través de dispositivos de sistemas embebidos dedicados a un microcontrolador específico.
Pero, como se ha señalado, M2M no es necesariamente IoT: de hecho, la comunicación M2M utiliza transmisiones punto a punto entre dispositivos, con sensores y hardware dedicados que viajan en teléfonos móviles o sistemas cerrados, mientras que IoT opera en redes de protocolo IP para gestionar los datos recogidos en pasarelas o nubes. En otras palabras, M2M conecta dispositivos en un sistema de red “cerrado”, IoT en un sistema “abierto” compuesto por múltiples subconjuntos de M2M, el entorno físico y las personas.
Ciertamente, todos los sistemas embebidos son facilitadores de las aplicaciones del IoT, debido a su control en tiempo real, su bajo consumo de energía y costo de mantenimiento y su alta disponibilidad en el mercado. Corresponde a los desarrolladores identificar las soluciones más adecuadas para las necesidades de la empresa.
Cómo se diseña un sistema embebido
Los sistemas embebidos pueden ser de arquitectura distribuida o centralizada, y varían en tamaño, rendimiento, consumo de energía, coste y tiempo de desarrollo y capacidad de actualización: en la fase de diseño, es importante realizar un análisis del contexto para comprender dónde se ubicará el sistema y cuáles serán sus objetivos.
Por lo general, las fases iniciales de diseño son simultáneas a la redacción del pliego de condiciones: por ello, se suele utilizar un enfoque flexible del diseño, que permite modificarlo durante la fase de diseño sin que ello afecte al time-to-market, el tiempo que transcurre entre la concepción y la comercialización/entrega del sistema.
Un sistema embebido es de propósito especial
Realiza una o unas pocas acciones de forma repetida, de la mejor manera posible. Por lo tanto, debe tener: una buena eficiencia energética; un software con el menor coste de cálculo posible, que no ocupe mucho espacio en una memoria pequeña; un hardware que no sea demasiado pesado o voluminoso (por ejemplo, incrustado en un smartphone o en un marcapasos).
La fiabilidad de un sistema embebido
Un sistema embebido debe ser fiable, es decir, realizar la operación en el periodo de tiempo determinado: la tasa de fallos se mide en FIT (Failure in Time), el tiempo durante el cual se espera que funcione se denomina MTTF – Mean Time To Failure o, en el caso de operaciones repetidas, MTBF – Mean Time Between Failures.
El sistema se considera más o menos fiable en función del valor de la tasa de fallos y del porcentaje de tiempo de funcionamiento. Este porcentaje, que indica su disponibilidad, se calcula a partir de la relación entre el MTTF, la expectativa de funcionamiento, y la misma expectativa sumada al MTTR – Tiempo Medio de Reparación. En las fórmulas: Disponibilidad= MTTF/(MTTF+MTTR).
La fiabilidad está estrechamente ligada a la reactividad, la capacidad de reaccionar a los estímulos del entorno. Dependiendo de los requisitos, el sistema embebido será de tiempo real duro o de tiempo real blando: en el primer caso, la operación debe completarse absolutamente en el tiempo establecido, en el segundo hay una ventana de “tolerancia” que no afecta al funcionamiento del sistema ni causa daños a las personas o al entorno.
De hecho, un sistema embebido debe ser seguro, en el doble sentido de seguridad (protección contra riesgos e incidentes accidentales) y de protección (protección contra amenazas y ataques deliberados): no debe causar daños a los usuarios y al medio ambiente, debe garantizar la integridad de la información y permitir el acceso solo a quienes estén autorizados a procesarla.
Software para sistemas embebidos y ejemplos
Los programas informáticos para sistemas embebidos tienen un menor coste de cálculo y no ocupan mucho espacio en la memoria. Un sistema embebido puede tener o no un sistema operativo: un SO requiere más recursos computacionales y restricciones que cumplir pero, por otro lado, soporta la gestión en tiempo real, el almacenamiento masivo y los protocolos de comunicación, además de permitir un menor tiempo de desarrollo.
Entre los sistemas operativos más comunes se encuentra el sistema operativo en tiempo real (RTOS), que gestiona los recursos de hardware, aloja las aplicaciones y procesa los datos en tiempo real, definiendo el procesamiento, la exploración del tiempo y la programación de las tareas.
A continuación se presentan algunos ejemplos de los sistemas embebidos más populares.
Arduino
Arduino nació del proyecto Wiring, un entorno de desarrollo de software y hardware sencillo, completo y barato creado a principios de la década de 2000 en el Instituto de Diseño de Interacción de Ivrea. Hace veinte años, las plataformas embebidas no eran de bajo coste ni estaban disponibles para los “novatos” o las series de producción limitadas.
Hoy en día, Arduino es una plataforma electrónica de código abierto basada en hardware y software de fácil uso con varias placas, varios lenguajes de programación, un sistema operativo como OpenWrt y una comunidad mundial de desarrolladores y entusiastas.
Arquitectura KISS
Tiene una arquitectura KISS (Keep It Simple, Stupid!) como hardware (el primer procesador de la serie tenía 8 bits, pocas memorias y ningún sistema operativo) y como software. De hecho, el lenguaje de programación, con una sintaxis muy similar a la de C y Java, está simplificado: las construcciones más complicadas quedan “enmascaradas” por la interfaz de usuario, a menos que se quiera utilizar explícitamente. También funciona en los sistemas operativos Windows, Macintosh, OSX y Linux.
Cómo se compone una placa Arduino
Una placa Arduino se compone de un microcontrolador, un botón de reinicio, un LED de “encendido” para indicar el encendido, un puerto USB, una toma de corriente y varios PIN de E/S. La colocación de los PIN de E/S analógicos y digitales en la placa se ha convertido en un estándar de la industria. Una placa Arduino “lee” entradas como la luz de un sensor y las convierte en una acción como encender un motor. Basta con programar el microcontrolador de la placa con el lenguaje de programación Arduino y el software Arduino, basado en Processing.
Arduino dispone de un entorno de desarrollo (IDE – Integrated Development Environment) con código fuente bajo la licencia de software libre GPL.
Esto reduce considerablemente el umbral económico para acceder al producto (la versión más barata del módulo se puede montar a mano) y fomenta un nivel de comunidad muy alto, ya que la gente ha desarrollado a lo largo de los años miles de bibliotecas disponibles para descargar, por ejemplo para hacer que la placa interactúe con un periférico como un sensor o un actuador. Por otro lado, el hecho de haber dejado sin licencia tanto el hardware como el software ha dado lugar a producciones a precio de saldo que no siempre mantienen los estándares de calidad.
Linux Embedded
Linux Embedded es un dispositivo basado en un microcontrolador de alta gama que ejecuta un sistema operativo basado en el núcleo de Linux, con un código fuente completamente libre. Entre los tipos más populares están los procesadores de 32 bits con arquitectura ARM. Tiene las ventajas del software de código abierto y una capa de gestión de hardware muy avanzada. La presencia de un sistema operativo, como se ha visto anteriormente, tiene ventajas, pero también desventajas en la programación de un sistema de Tiempo Real Duro: “aligerar” el sistema operativo dividiendo el núcleo en módulos modulares según las necesidades es uno de los retos en la fase de diseño, pero puede no ser suficiente para un sistema de Tiempo Real Duro. Una solución puede ser insertar un segundo núcleo entre el original y la máquina, un “parche” de tiempo real duro.
Entre las ventajas de Linux Embedded están todas las herramientas de desarrollo del mundo del PC disponibles en código abierto, probadas, mejoradas y adaptables. Linux Embedded se aplica en la videovigilancia industrial, es decir, en los circuitos de cámaras controlables a distancia, o en los sistemas de infoentretenimiento y de conducción autónoma del automóvil.
Android
Android es un sistema embebido. De hecho, Android Inc, fundada en 2003 como empresa de diseño de software para dispositivos móviles y adquirida en 2005 por Google, ha empezado a desarrollar desde entonces un sistema operativo basado en el núcleo de Linux.
El sistema operativo se lanzó en 2007 con un kit de desarrollo de software que incluía herramientas de desarrollo, bibliotecas y documentación. En 2008 se comercializó el primer dispositivo con Android, que hoy es uno de los sistemas operativos para smartphones más utilizados en el mundo.
Android es una versión (stack) de software de código abierto, publicada bajo la licencia de software libre Apache, que obliga a respetar los derechos de autor y excluye la responsabilidad de las versiones modificadas. Android incluye: el sistema operativo modular del kernel de Linux, varias bibliotecas en el lenguaje C/C++ pero accesibles en Java, y un conjunto de aplicaciones.
Entre ellas se encuentran la sustitución de componentes, un navegador integrado, gráficos optimizados, un motor de estructura de datos, soporte multimedia para formatos de audio-vídeo hasta GPS, una cámara, brújula y varios modos de conectividad: Bluetooth, 3G, LTE, NFC, Wi-Fi. La pila de Android incluye la máquina virtual Dalvik, creada especialmente: cuando se lanza cada aplicación, se le asocia una instancia, de modo que se pueden gestionar varias aplicaciones simultáneamente.
@RESERVADOS TODOS LOS DERECHOS