¿Qué es un sistema integrado?
Por Ricardo Camacho
17 de junio de 2021
6 min leer
Los sistemas integrados han estado con nosotros durante mucho tiempo. Continúe leyendo para saber qué son, algunos problemas de seguridad de los sistemas integrados y cómo las pruebas adecuadas pueden ayudar a que sean seguros y protegidos.
Saltar a la sección
Los sistemas integrados son sistemas informáticos basados en microprocesadores, generalmente integrados en un sistema o producto, que tienen una función operativa dedicada. En otras palabras, los sistemas integrados son la "inteligencia" oculta detrás de todos los dispositivos que usamos, los autos que conducimos, los aviones en los que volamos y los trenes en los que viajamos.
En lugar de estar hechos de componentes separados como computadoras de escritorio, servidores y otros dominios informáticos similares, los sistemas integrados se incluyen en productos e incluyen hardware y software integrales.
¿Cómo se utilizan los sistemas integrados?
Lo interesante de los sistemas integrados es la variedad de aplicaciones. Van desde pequeños controladores en dispositivos domésticos inteligentes hasta sistemas de aviónica en aviones y grandes conmutadores de red que componen nuestras redes de telecomunicaciones. Esto también los hace difíciles de diseñar y desarrollar. Las limitaciones del producto previsto repercuten en el rendimiento del hardware y software integrados.
Los sistemas integrados son ubicuos pero relativamente desconocidos para la mayoría de los consumidores. Los automóviles modernos tienen hasta 100 millones de líneas de código en ellos y la mayor parte no está en el sistema de infoentretenimiento. Gran parte del software y hardware de un automóvil moderno se encuentra en los diversos microcontroladores y unidades de control del motor que controlan y monitorean las características modernas.
La arquitectura de los sistemas integrados
Los sistemas integrados constan de hardware y software como se mencionó anteriormente. A menudo se utilizan en aplicaciones que requieren tanto detectar algo físico en el entorno como controlar algo en respuesta.
Un ejemplo simple es un sistema HVAC con un controlador de termostato integrado. Tal sistema detectaría la temperatura ambiente y accionaría la calefacción o el aire acondicionado. Es posible que necesite alguna forma de comunicación a través de una interfaz de red y mostrar la temperatura en una pantalla LCD (interfaz hombre / máquina o HMI).
Estos sistemas a menudo se denominan "tiempo real”O“ impulsados por eventos ”, ya que deben reaccionar de manera oportuna a los eventos del mundo real. Dependiendo del tipo y la criticidad de la aplicación, es importante reaccionar a los eventos en un momento específico. Los sistemas críticos para la seguridad, como los frenos antibloqueo (ABS) en un automóvil, deben reaccionar en milisegundos. Dichos sistemas se denominan "tiempo real duro", lo que significa que deben cumplir con los plazos requeridos o se ha producido una falla. Los sistemas con plazos más flexibles se denominan "tiempo real suave". En la mayoría de estos casos, estos sistemas se ejecutan sobre algún tipo de sistema operativo en tiempo real (RTOS).
A continuación, se muestra un ejemplo sencillo de arquitectura de sistema integrado:
También es exclusivo de los sistemas integrados el uso de una arquitectura de microcontrolador. A diferencia de los sistemas de escritorio o servidor, los microcontroladores suelen tener toda la RAM, ROM y E / S en un solo chip. Estos controladores a menudo tienen las capacidades de E / S necesarias para interactuar con sensores y actuadores e integrarse con la red y otros dispositivos de comunicación.
Hardware de sistemas integrados
Los sistemas integrados se ejecutan en hardware diseñado para cumplir con las limitaciones del producto en el que se utilizan. El hardware a menudo se especifica para cumplir con los objetivos comerciales (por ejemplo, el costo) y técnicos. Estos productos pueden ascender a millones de unidades y operar durante décadas, lo que implica la necesidad de confiabilidad y calidad tanto del hardware como del software.
Restricciones del hardware
Las limitaciones comunes en el hardware del sistema integrado son:
- Poder de procesamiento limitado
- Memoria
- Almacenamiento
Estas restricciones limitan el rendimiento y la complejidad de la aplicación que el hardware puede admitir. A su vez, esto aumenta los desafíos de diseño y desarrollo, especialmente cuando se intenta integrar más funciones.
Las restricciones de hardware del sistema integrado están impulsadas por requisitos comerciales que a menudo afectan la rentabilidad del producto final.
- Costo de la lista de materiales. El hardware menos complejo es más barato de comprar y tiene mayores márgenes de beneficio. Sin embargo, a medida que crece la complejidad del software, rápidamente supera la capacidad del hardware. Pasar a procesadores de mayor escala significa mayores costos de lista de materiales (BOM) e impactos significativos en el software.
- Tamaño y peso. Los productos finales están limitados por el tamaño y el peso, lo que puede afectar la selección del hardware. El hardware más complejo puede requerir placas de circuito más grandes, fuentes de alimentación y disipación de calor.
- El consumo de energía. Los sistemas integrados a menudo se encuentran en equipos que funcionan con baterías donde el consumo de energía se administra de manera estricta. También pueden estar en sistemas de gama alta donde el calor es una preocupación.
Los ejemplos de hardware de destino incluyen pequeños microcontroladores como:
- El omnipresente 8 bits 8051
- MCU PIC16 de Microchip
- ST Micro STM32 MCU ARM Cortex de 32 bits
- Sistemas integrados en un chip (TI's OMAP o Frambuesa Pi)
- Sistemas multiprocesador de 64 bits a gran escala basados en procesadores ARM, Intel y AMD
Gestión de requisitos y matriz de trazabilidad
Software de sistemas embebidos
La mayor parte del esfuerzo de ingeniería se destina al software de los sistemas integrados. De hecho, la mayoría de los fabricantes necesitan un grupo de software para desarrollar las aplicaciones integradas en sus productos. En broma, los directores ejecutivos de estas empresas bromean: "Somos una empresa de software que se hace pasar por un fabricante de widgets". La realidad es que el software se ha convertido en el área clave de diferenciación e innovación en muchos mercados, incluidas las empresas cuyo producto principal no es el software.
Al igual que con el hardware, la complejidad del software depende de la aplicación prevista, que puede variar mucho. Sin embargo, hay tres categorías principales en las que encaja la mayoría del software integrado:
- Pequeña escala
- Escala media
- Gran escala
Pequeña escala, "bare metal"
Estas aplicaciones suelen estar en microcontroladores de 8 y 16 bits sin sistemas operativos formales, también conocidos como bare metal. Las aplicaciones generalmente controlan un solo subsistema basado en unos pocos sensores. Es posible que no estén conectados a una red y que funcionen de forma autónoma. El control de alto nivel está en otra parte, como con un sistema de control de supervisión y adquisición de datos (SCADA), generalmente con hardware y software mucho más complejos.
Escala media
Estos sistemas a menudo utilizan sistemas operativos integrados comerciales o de código abierto que con frecuencia también son en tiempo real (RTOS). Estos sistemas operativos proporcionan la abstracción de hardware, multiprocesamiento y multiproceso, bibliotecas de red e interfaz necesarias. Ejemplos incluyen FreeRTOS, VxWorks y QNXy, en algunos casos, Linux embebido. Las aplicaciones pueden variar desde aplicaciones estrictas en tiempo real y críticas para la seguridad, como la aviónica de aviones, hasta enrutadores inalámbricos y sistemas HVAC.
Por lo general, el hardware son microcontroladores y SoC de 32 bits con más RAM y flash que los sistemas de pequeña escala. Sin embargo, la complejidad del software es órdenes de magnitud mayor en esta categoría con aplicaciones que tienen decenas de miles a un millón de líneas de código (LOC) o más.
gran Escala
Los sistemas de esta categoría suelen ser muy complejos con múltiples características y capacidades. A menudo operan en hardware similar a un servidor que tiene multiprocesadores. Las aplicaciones a menudo requieren procesamiento en tiempo real y aún pueden usar RTOS o Linux de alta gama. Ejemplos de esto incluyen conmutadores y enrutadores de redes empresariales y sistemas de red troncal de redes de telecomunicaciones, procesamiento de bolsa y control de tráfico aéreo. Estos sistemas son muy complejos, interconectados con bases de código de varios millones de líneas de código.
A pesar de la variedad de aplicaciones, existen algunas características comunes, como la naturaleza dedicada de las aplicaciones. Los sistemas integrados suelen funcionar durante todo el año, las 24 horas del día. También comparten la necesidad de ser fiables, seguros, energéticamente eficientes y rentables de fabricar. Más que nunca es la necesidad de que estén seguros, de lo que hablaremos más adelante.
Optimización de las pruebas unitarias y de regresión para sistemas integrados
Aplicaciones de sistemas integrados
Las aplicaciones de los sistemas integrados son demasiado numerosas para enumerarlas, pero los ejemplos obvios de alto perfil incluyen:
- Dispositivos que salvan vidas como marcapasos cardíacos
- Aplicaciones críticas como control de vuelo en aviones y asistencia automatizada al conductor
- Software que ejecuta gadgets y dispositivos domésticos inteligentes.
¡Nuestros teléfonos inteligentes, tabletas, relojes inteligentes y televisores inteligentes son todos sistemas integrados! Aquí hay más aplicaciones que se ejecutan en sistemas integrados:
- Automatización industrial.
- Comando y control de centrales nucleares, generación y distribución de energía.
- Energía, calor y luz para mantener la economía en funcionamiento.
- Software crítico para la seguridad en trenes, aviones y automóviles.
- Torres, concentradores, conmutadores y enrutadores de telecomunicaciones para operaciones de telecomunicaciones e Internet.
- El armamento sofisticado, los aviones de combate, los tanques y los misiles tienen sistemas integrados en su corazón.
De hecho, el 98% de los microprocesadores producidos en el mundo se utilizan en sistemas integrados.
¿Qué no está integrado?
Por omnipresentes que sean los sistemas integrados, todavía hay muchos sistemas y software que no lo son. Todo el software de escritorio, como la productividad, los navegadores web y los videojuegos, no se considera integrado. El software empresarial, la infraestructura en la nube y los sistemas backend tampoco están integrados.
Por lo general, si se ejecuta en hardware genérico, como una PC o servidor típico, no se considera integrado. Físicamente, las aplicaciones no están empaquetadas con el hardware como una sola y son inseparables. Por ejemplo, las PC pueden enviarse con sistemas operativos Microsoft Windows, pero ese sistema operativo se puede reemplazar y eliminar sin alterar la función principal de la PC. El software no integrado suele ser un software de aplicación que puede ejecutarse en una variedad de hardware, de forma remota o local.
Preocupaciones por la seguridad y la protección de los sistemas integrados
Los sistemas integrados juegan un papel importante en la seguridad y los dispositivos críticos. Productos como marcapasos y controladores de frenos ABS no pueden fallar. La vida depende de que estos dispositivos funcionen correctamente, todo el tiempo. Fallos de alto perfil como el Terac 25 incidente donde los pacientes sufrieron una sobredosis masiva de radiación o Desastre del cohete Ariane 5 causado por un error de desbordamiento de enteros.
La seguridad es ahora una preocupación importante a medida que se ponen en línea más sistemas integrados, conectados a través de Internet (Internet de las cosas). Esta interconexión crea nuevas características y oportunidades y abre la puerta a los ataques. Una letanía de problemas de seguridad en los dispositivos de IoT está documentada por nuestro propio Code Curmudgeon en su Salón de la vergüenza de IoT. Los dispositivos inseguros no son seguros, por lo que la seguridad y la protección deben considerarse igualmente en estos dispositivos críticos.
¿Cómo hacemos seguros y protegidos los sistemas integrados?
La única forma de asegurarse de que los sistemas integrados sean seguros y protegidos es a través de las pruebas . Más precisamente, a través de una rigurosa verificación y validación a lo largo de todo el ciclo de vida del desarrollo. Eso incluye antes del desarrollo de software, en el análisis de requisitos temprano y todo el camino hasta el final de la vida.
Existen normas específicas que deben seguir las industrias en las que la seguridad es una preocupación importante, incluidas las siguientes:
- Automotriz (ISO 26262)
- Aviación (DO-178C)
- Dispositivos médicos (IEC 62304)
- Automatización industrial (IEC 61508)
- Ferrocarril (ES 50128)
Los fabricantes de estos dispositivos deben seguir las normas y demostrar mediante auditorías que realizan su debida diligencia y han abordado todas las preocupaciones de seguridad y protección. Este tipo de desarrollo de hardware y software requiere mucho tiempo y es costoso de construir y probar, pero es esencial para asegurar el comportamiento correcto cuando se implementa.
Vea cómo Parasoft C/C++test puede ayudarlo a entregar un código seguro y compatible con los estándares de la industria.