Seminario web destacado: Presentación de la prueba CT de Parasoft C/C++ para pruebas continuas y excelencia en el cumplimiento | Vea ahora

¿Qué son los sistemas integrados?

Foto de cabeza de Ricardo Camacho, Director de Cumplimiento de Seguridad y Seguridad
10 de Octubre de 2023
7 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.

Introducción a los sistemas integrados

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:

Diagrama que muestra un entorno con un sistema integrado y un controlador en el interior. El sistema integrado está simbolizado por una caja transparente con contorno azul y cuatro cajas conectadas: HMI, Sensores, Actuadores, Red / Serie / USB. Todos ellos apuntan hacia y desde los elementos del controlador reflejados y contenidos en una caja de controlador verde, que incluye RAM, ROM, E / S y CPU.

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.

Limitaciones de hardware de los 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 objetivos comerciales (por ejemplo, costos) y técnicos. Estos productos pueden ascender a millones de unidades y funcionar durante décadas, lo que implica la necesidad de fiabilidad 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
  • Salud Cerebral
  • 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 de Frambuesa Pi)
  • Sistemas multiprocesador de 64 bits a gran escala basados ​​en procesadores ARM, Intel y AMD

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 dispositivos".

La realidad es que el software se ha convertido en el área clave de diferenciación e innovación en muchos mercados, incluidas 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 suelen controlar un único 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 se encuentra en otros lugares, como en 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 frecuentemente también son en tiempo real (RTOS). Estos sistemas operativos proporcionan las bibliotecas de interfaz, red y abstracción de hardware necesarias. Ejemplos incluyen FreeRTOS, VxWorksy 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 de 32 bits y SoC con más RAM y flash que los sistemas de pequeña escala. Sin embargo, la complejidad del software es mucho mayor en esta categoría, con aplicaciones que tienen entre decenas de miles y 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 confiables, seguros, energéticamente eficientes y rentables en su fabricación. Más que nunca es necesario que estén seguros, de lo que hablaremos más adelante.

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 coches.
  • 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 muy omnipresentes que sean los sistemas integrados, todavía hay muchos sistemas y software que no lo son. Todo el software de escritorio, como el de productividad, los navegadores web y los videojuegos, no se considera integrado. El software empresarial, la infraestructura de la nube y los sistemas backend tampoco están integrados.

Por lo general, si se ejecuta en hardware genérico, como una PC o un servidor típico, no se considera integrado. Físicamente, las aplicaciones no están incluidas con el hardware como una sola e inseparable. Por ejemplo, las PC pueden enviarse con el sistema operativo 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 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 más sistemas integrados entran en línea, conectados a través de Internet (el Internet de las cosas). Esta interconexión crea nuevas características y oportunidades y abre la puerta a ataques. Nuestro propio Code Cascarrabias documenta una letanía de problemas de seguridad en dispositivos IoT 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, mediante una verificación rigurosa 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:

Los fabricantes de estos dispositivos deben seguir los estándares 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 garantizar un comportamiento correcto cuando se implementa.

Garantizar la seguridad de los sistemas integrados

Los sistemas integrados, en particular los sistemas integrados críticos para la seguridad, no pueden fallar. Si lo hacen, las consecuencias serán nefastas. Se perderán vidas o las personas sufrirán lesiones graves. También existe la posibilidad de daños a la propiedad. Por lo tanto, las pruebas de software son fundamentales.

Las pruebas de software garantizan que el sistema integrado sea seguro y confiable. Las pruebas también ayudan a certificar estos hechos. Los estándares de seguridad funcional mencionados en la sección anterior brindan orientación y recomiendan métodos de prueba como análisis de código estático, pruebas unitarias, pruebas de integración, pruebas de sistemas, pruebas de regresión, cobertura de códigos estructurales y muchos otros tipos de análisis de peligros, análisis de amenazas y evaluación de riesgos. actividades para garantizar el sistema integrado más seguro posible.

Muchos sistemas integrados también tienen requisitos de certificación impuestos por agencias reguladoras federales. Estados Unidos tiene la FDA para dispositivos médicos, la FAA para aviónica, la NHTSA para vehículos de motor, la FRA para ferrocarriles y muchas más. Estas agencias imponen regulaciones que mantienen al público seguro y protegido. Además, las propias empresas se esfuerzan por lograr la calidad, porque las retiradas del mercado, los juicios y los litigios prolongados pueden destruir una empresa.

Análisis de código estático para desarrollo integrado