Un sistema embebido es un sistema informático especializado (una combinación de un procesador de computadora , memoria de computadora y dispositivos periféricos de entrada/salida ) que tiene una función dedicada dentro de un sistema mecánico o electrónico más grande . [1] [2] Está embebido como parte de un dispositivo completo que a menudo incluye hardware eléctrico o electrónico y partes mecánicas. Debido a que un sistema embebido generalmente controla las operaciones físicas de la máquina en la que está embebido, a menudo tiene restricciones de computación en tiempo real . Los sistemas embebidos controlan muchos dispositivos de uso común. [3] En 2009 [actualizar], se estimó que el noventa y ocho por ciento de todos los microprocesadores fabricados se utilizaron en sistemas embebidos. [4] [ necesita actualización ]
Los sistemas embebidos modernos suelen basarse en microcontroladores (es decir, microprocesadores con memoria integrada e interfaces periféricas), pero también son comunes los microprocesadores ordinarios (que utilizan chips externos para la memoria y circuitos de interfaz periférica), especialmente en sistemas más complejos. En cualquier caso, los procesadores utilizados pueden ser de tipos que van desde los de propósito general hasta los especializados en una determinada clase de cálculos, o incluso diseñados a medida para la aplicación en cuestión. Una clase estándar común de procesadores dedicados es el procesador de señal digital (DSP).
Dado que el sistema integrado está dedicado a tareas específicas, los ingenieros de diseño pueden optimizarlo para reducir el tamaño y el costo del producto y aumentar su confiabilidad y rendimiento. Algunos sistemas integrados se producen en masa, lo que se beneficia de las economías de escala .
Los sistemas integrados varían en tamaño desde dispositivos personales portátiles como relojes digitales y reproductores de MP3 hasta máquinas más grandes como electrodomésticos , líneas de montaje industriales , robots , vehículos de transporte, controladores de semáforos y sistemas de imágenes médicas . A menudo constituyen subsistemas de otras máquinas como la aviónica en aeronaves y la astronáutica en naves espaciales . Las grandes instalaciones como fábricas , tuberías y redes eléctricas dependen de múltiples sistemas integrados conectados en red. Generalizados a través de la personalización del software, los sistemas integrados como los controladores lógicos programables con frecuencia comprenden sus unidades funcionales.
Los sistemas integrados varían desde aquellos de baja complejidad, con un solo chip microcontrolador, hasta aquellos de muy alta complejidad con múltiples unidades, periféricos y redes, que pueden residir en racks de equipos o en grandes áreas geográficas conectadas mediante líneas de comunicaciones de larga distancia.
Los orígenes del microprocesador y del microcontrolador se remontan al circuito integrado MOS , que es un chip de circuito integrado fabricado a partir de MOSFET ( transistores de efecto de campo de metal-óxido-semiconductor ) y se desarrolló a principios de la década de 1960. En 1964, los chips MOS habían alcanzado una mayor densidad de transistores y menores costos de fabricación que los chips bipolares . Los chips MOS aumentaron aún más en complejidad a un ritmo predicho por la ley de Moore , lo que llevó a la integración a gran escala (LSI) con cientos de transistores en un solo chip MOS a fines de la década de 1960. La aplicación de chips MOS LSI a la computación fue la base para los primeros microprocesadores, ya que los ingenieros comenzaron a reconocer que un sistema de procesador de computadora completo podría estar contenido en varios chips MOS LSI. [5]
Los primeros microprocesadores multichip, el Four-Phase Systems AL1 en 1969 y el Garrett AiResearch MP944 en 1970, se desarrollaron con múltiples chips MOS LSI. El primer microprocesador de un solo chip fue el Intel 4004 , lanzado en 1971. Fue desarrollado por Federico Faggin , utilizando su tecnología MOS de compuerta de silicio , junto con los ingenieros de Intel Marcian Hoff y Stan Mazor , y el ingeniero de Busicom Masatoshi Shima . [6]
Uno de los primeros sistemas integrados reconocibles como modernos fue el Apollo Guidance Computer , [ cita requerida ] desarrollado alrededor de 1965 por Charles Stark Draper en el Laboratorio de Instrumentación del MIT . Al inicio del proyecto, el Apollo Guidance Computer se consideró el elemento más riesgoso del proyecto Apollo, ya que empleaba los circuitos integrados monolíticos recién desarrollados para reducir el tamaño y el peso del ordenador.
Uno de los primeros sistemas integrados producidos en masa fue la computadora de guía Autonetics D-17 para el misil Minuteman , lanzada en 1961. Cuando el Minuteman II entró en producción en 1966, la D-17 fue reemplazada por una nueva computadora que representó el primer uso de gran volumen de circuitos integrados.
Desde estas primeras aplicaciones en la década de 1960, los sistemas integrados han bajado de precio y se ha producido un aumento espectacular de la potencia de procesamiento y la funcionalidad. Uno de los primeros microprocesadores, el Intel 4004 (lanzado en 1971), fue diseñado para calculadoras y otros sistemas pequeños, pero aún requería memoria externa y chips de soporte. A principios de la década de 1980, los componentes del sistema de entrada y salida y de memoria se habían integrado en el mismo chip que el procesador, formando un microcontrolador. Los microcontroladores encuentran aplicaciones en las que una computadora de uso general sería demasiado costosa. A medida que el costo de los microprocesadores y microcontroladores disminuyó, la prevalencia de los sistemas integrados aumentó.
Un microcontrolador de costo relativamente bajo puede programarse para cumplir la misma función que un gran número de componentes separados. Con los microcontroladores, se hizo posible reemplazar, incluso en productos de consumo, costosos componentes analógicos basados en perillas, como potenciómetros y capacitores variables , por botones de subir/bajar o perillas leídas por un microprocesador. Aunque en este contexto un sistema embebido suele ser más complejo que una solución tradicional, la mayor parte de la complejidad está contenida dentro del propio microcontrolador. Es posible que se necesiten muy pocos componentes adicionales y la mayor parte del esfuerzo de diseño está en el software. La creación de prototipos y pruebas de software pueden ser más rápidas en comparación con el diseño y la construcción de un nuevo circuito que no utilice un procesador embebido.
Los sistemas integrados se encuentran comúnmente en aplicaciones de consumo, industriales, automotrices , de electrodomésticos , médicas, de telecomunicaciones, comerciales, aeroespaciales y militares.
Los sistemas de telecomunicaciones emplean numerosos sistemas integrados, desde conmutadores telefónicos para la red hasta teléfonos celulares en el usuario final . Las redes informáticas utilizan enrutadores y puentes de red dedicados para enrutar los datos.
Los productos electrónicos de consumo incluyen reproductores de MP3 , televisores , teléfonos móviles , consolas de videojuegos , cámaras digitales , receptores GPS e impresoras . Los electrodomésticos, como hornos microondas , lavadoras y lavavajillas , incluyen sistemas integrados para proporcionar flexibilidad, eficiencia y funciones. Los sistemas avanzados de calefacción, ventilación y aire acondicionado (HVAC) utilizan termostatos en red para controlar de forma más precisa y eficiente la temperatura, que puede cambiar según la hora del día y la estación . La automatización del hogar utiliza redes cableadas e inalámbricas que se pueden utilizar para controlar luces, clima, seguridad, audio/video, vigilancia, etc., todos los cuales utilizan dispositivos integrados para detección y control.
Los sistemas de transporte, desde el vuelo hasta los automóviles, utilizan cada vez más sistemas integrados. Los nuevos aviones contienen aviónica avanzada , como sistemas de guía inercial y receptores GPS , que también tienen requisitos de seguridad considerables. Las naves espaciales dependen de sistemas astriónicos para la corrección de la trayectoria. Varios motores eléctricos ( motores de CC sin escobillas , motores de inducción y motores de CC ) utilizan controladores de motor electrónicos . Los automóviles , los vehículos eléctricos y los vehículos híbridos utilizan cada vez más sistemas integrados para maximizar la eficiencia y reducir la contaminación. Otros sistemas de seguridad automotriz que utilizan sistemas integrados incluyen el sistema de frenos antibloqueo (ABS), el control electrónico de estabilidad (ESC/ESP), el control de tracción (TCS) y la tracción a las cuatro ruedas automática .
Los equipos médicos utilizan sistemas integrados para el monitoreo y diversas imágenes médicas ( tomografía por emisión de positrones (PET), tomografía computarizada por emisión de fotón único (SPECT), tomografía computarizada (TC) e imágenes por resonancia magnética (IRM) para inspecciones internas no invasivas. Los sistemas integrados dentro de los equipos médicos a menudo funcionan con computadoras industriales. [8]
Los sistemas integrados se utilizan para sistemas críticos de seguridad en las industrias aeroespacial y de defensa. A menos que estén conectados a redes cableadas o inalámbricas a través de un chip celular 3G u otros métodos para fines de monitoreo y control de IoT, estos sistemas pueden aislarse de la piratería y, por lo tanto, ser más seguros. [ cita requerida ] Para la seguridad contra incendios, los sistemas pueden diseñarse para que tengan una mayor capacidad de soportar temperaturas más altas y continuar funcionando. En lo que respecta a la seguridad, los sistemas integrados pueden ser autosuficientes y ser capaces de lidiar con sistemas eléctricos y de comunicación cortados.
Los dispositivos inalámbricos en miniatura llamados motes son sensores inalámbricos en red. Las redes de sensores inalámbricos hacen uso de la miniaturización que es posible gracias al diseño avanzado de circuitos integrados (CI) para acoplar subsistemas inalámbricos completos a sensores sofisticados, lo que permite a las personas y a las empresas medir una gran cantidad de cosas en el mundo físico y actuar en función de esta información a través de sistemas de control y monitoreo. Estos motes son completamente autónomos y normalmente funcionan con una fuente de batería durante años antes de que sea necesario cambiarlas o cargarlas.
Los sistemas integrados están diseñados para realizar una tarea específica, a diferencia de los ordenadores de uso general diseñados para múltiples tareas. Algunos tienen limitaciones de rendimiento en tiempo real que deben cumplirse por razones como la seguridad y la facilidad de uso; otros pueden tener requisitos de rendimiento bajos o nulos, lo que permite simplificar el hardware del sistema para reducir los costos.
Los sistemas integrados no siempre son dispositivos independientes. Muchos de ellos son una pequeña parte de un dispositivo más grande que cumple una función más general. Por ejemplo, la guitarra robótica Gibson cuenta con un sistema integrado para afinar las cuerdas, pero el propósito general de la guitarra robótica es reproducir música. [9] De manera similar, un sistema integrado en un automóvil cumple una función específica como subsistema del propio automóvil.
Las instrucciones de los programas escritos para sistemas embebidos se denominan firmware y se almacenan en memorias de solo lectura o chips de memoria flash . Se ejecutan con recursos de hardware informáticos limitados: poca memoria, teclado o pantalla pequeños o inexistentes.
Los sistemas integrados varían desde aquellos que no tienen interfaz de usuario , en sistemas dedicados a una tarea, hasta los que tienen interfaces gráficas de usuario complejas que se parecen a los sistemas operativos de escritorio de las computadoras modernas. Los dispositivos integrados simples utilizan botones , diodos emisores de luz (LED), pantallas de cristal líquido (LCD) gráficas o de caracteres con un sistema de menú simple . Los dispositivos más sofisticados que utilizan una pantalla gráfica con detección táctil o teclas programables en el borde de la pantalla brindan flexibilidad al mismo tiempo que minimizan el espacio utilizado: el significado de los botones puede cambiar con la pantalla y la selección implica el comportamiento natural de señalar lo que se desea.
Algunos sistemas proporcionan una interfaz de usuario de forma remota con la ayuda de una conexión en serie (por ejemplo, RS-232 ) o de red (por ejemplo, Ethernet ). Este enfoque amplía las capacidades del sistema integrado, evita el coste de una pantalla, simplifica el paquete de soporte de la placa (BSP) y permite a los diseñadores crear una interfaz de usuario completa en el PC. Un buen ejemplo de esto es la combinación de un servidor HTTP integrado que se ejecuta en un dispositivo integrado (como una cámara IP o un enrutador de red ). La interfaz de usuario se muestra en un navegador web en un PC conectado al dispositivo.
Entre las propiedades de los ordenadores integrados típicos, en comparación con sus homólogos de uso general, se encuentran el bajo consumo de energía, el tamaño pequeño, los amplios rangos de operación y el bajo costo por unidad. Todo esto se logra a expensas de recursos de procesamiento limitados.
Se han desarrollado numerosos microcontroladores para su uso en sistemas integrados. Los microprocesadores de uso general también se utilizan en sistemas integrados, pero generalmente requieren más circuitos de soporte que los microcontroladores.
PC/104 y PC/104+ son ejemplos de estándares para placas de computadora listas para usar destinadas a sistemas integrados y reforzados pequeños y de bajo volumen. En su mayoría, se basan en x86 y, a menudo, son físicamente pequeños en comparación con un PC estándar, aunque siguen siendo bastante grandes en comparación con la mayoría de los sistemas integrados simples (8/16 bits). Pueden utilizar DOS , FreeBSD , Linux , NetBSD , OpenHarmony o un sistema operativo en tiempo real integrado (RTOS) como MicroC/OS-II , QNX o VxWorks .
En ciertas aplicaciones, donde el tamaño pequeño o la eficiencia energética no son preocupaciones principales, los componentes utilizados pueden ser compatibles con los utilizados en computadoras personales x86 de uso general. Las placas como la gama VIA EPIA ayudan a salvar la brecha al ser compatibles con PC pero altamente integradas, físicamente más pequeñas o tener otros atributos que las hacen atractivas para los ingenieros integrados. La ventaja de este enfoque es que se pueden utilizar componentes básicos de bajo costo junto con las mismas herramientas de desarrollo de software que se utilizan para el desarrollo de software general. Los sistemas construidos de esta manera aún se consideran integrados ya que están integrados en dispositivos más grandes y cumplen una sola función. Ejemplos de dispositivos que pueden adoptar este enfoque son los cajeros automáticos (ATM) y las máquinas de juegos , que contienen código específico para la aplicación.
Sin embargo, la mayoría de las placas de sistemas embebidos ya preparadas no están centradas en el PC y no utilizan los buses ISA o PCI . Cuando se trata de un procesador de sistema en un chip , puede resultar poco beneficioso tener un bus estandarizado que conecte componentes discretos, y el entorno para las herramientas de hardware y software puede ser muy diferente.
Un estilo de diseño común utiliza un módulo de sistema pequeño, quizás del tamaño de una tarjeta de presentación, que contiene chips BGA de alta densidad, como un procesador de sistema en un chip basado en ARM y periféricos, memoria flash externa para almacenamiento y DRAM para memoria de tiempo de ejecución. El proveedor del módulo generalmente proporcionará software de arranque y se asegurará de que haya una selección de sistemas operativos, que generalmente incluyen Linux y algunas opciones en tiempo real. Estos módulos pueden fabricarse en grandes volúmenes, por organizaciones familiarizadas con sus problemas de prueba especializados, y combinarse con placas base personalizadas de mucho menor volumen con periféricos externos específicos de la aplicación. Ejemplos destacados de este enfoque incluyen Arduino y Raspberry Pi .
Un sistema en un chip (SoC) contiene un sistema completo, que consta de múltiples procesadores, multiplicadores, cachés, incluso diferentes tipos de memoria y, comúnmente, varios periféricos como interfaces para comunicación por cable o inalámbrica en un solo chip. A menudo, las unidades de procesamiento gráfico (GPU) y los DSP se incluyen en dichos chips. Los SoC se pueden implementar como un circuito integrado específico de la aplicación (ASIC) o utilizando una matriz de puertas programables en campo (FPGA) que, por lo general, se puede reconfigurar.
Las implementaciones de ASIC son comunes para sistemas integrados de gran volumen, como teléfonos móviles y teléfonos inteligentes . Las implementaciones de ASIC o FPGA se pueden utilizar para sistemas integrados de volumen no tan alto con necesidades especiales en cuanto a rendimiento de procesamiento de señales, interfaces y confiabilidad, como en aviónica.
Los sistemas integrados se comunican con el mundo exterior a través de periféricos , como:
Al igual que con otros programas, los diseñadores de sistemas integrados utilizan compiladores , ensambladores y depuradores para desarrollar software de sistemas integrados. Sin embargo, también pueden utilizar herramientas más específicas:
Las herramientas de software pueden provenir de varias fuentes:
A medida que aumenta la complejidad de los sistemas integrados, las herramientas y los sistemas operativos de nivel superior migran a las máquinas donde tiene sentido hacerlo. Por ejemplo, los teléfonos móviles , los asistentes digitales personales y otras computadoras de consumo a menudo necesitan un software importante que es comprado o proporcionado por una persona distinta al fabricante de los dispositivos electrónicos. En estos sistemas, se requiere un entorno de programación abierto como Linux , NetBSD , FreeBSD , OSGi o Embedded Java para que el proveedor de software externo pueda vender a un mercado grande.
La depuración integrada se puede realizar en diferentes niveles, según las funciones disponibles. Entre las consideraciones se incluyen: si ralentiza la aplicación principal, qué tan cerca está el sistema o la aplicación depurados del sistema o la aplicación reales, qué tan expresivos son los desencadenantes que se pueden configurar para la depuración (por ejemplo, inspeccionar la memoria cuando se alcanza un valor de contador de programa en particular ) y qué se puede inspeccionar en el proceso de depuración (por ejemplo, solo memoria, o memoria y registros, etc.).
Desde los sistemas y técnicas de depuración más simples hasta los más sofisticados se pueden agrupar aproximadamente en las siguientes áreas:
A menos que se limite a la depuración externa, el programador normalmente puede cargar y ejecutar software a través de las herramientas, ver el código que se ejecuta en el procesador e iniciar o detener su funcionamiento. La vista del código puede ser como lenguaje de programación de alto nivel , código ensamblador o una combinación de ambos.
Los sistemas operativos en tiempo real suelen admitir el seguimiento de eventos del sistema operativo. Una herramienta de PC host presenta una vista gráfica basada en un registro del comportamiento del sistema. El registro del seguimiento se puede realizar en software, mediante el RTOS o mediante hardware de seguimiento especial. El seguimiento del RTOS permite a los desarrolladores comprender los problemas de tiempo y rendimiento del sistema de software y proporciona una buena comprensión de los comportamientos del sistema de alto nivel. El registro de seguimiento en sistemas integrados se puede lograr utilizando soluciones de hardware o software. El registro de seguimiento basado en software no requiere hardware de depuración especializado y se puede utilizar para registrar seguimientos en dispositivos implementados, pero puede tener un impacto en el uso de CPU y RAM. [13] Un ejemplo de un método de seguimiento basado en software utilizado en entornos RTOS es el uso de macros vacías que son invocadas por el sistema operativo en lugares estratégicos del código y se pueden implementar para que sirvan como ganchos .
Los sistemas integrados suelen estar instalados en máquinas que se espera que funcionen de forma continua durante años sin errores y, en algunos casos, se recuperen por sí solas si se produce un error. Por lo tanto, el software suele desarrollarse y probarse con más cuidado que el de los ordenadores personales y se evitan las piezas mecánicas móviles poco fiables, como unidades de disco, interruptores o botones.
Los problemas específicos de confiabilidad pueden incluir:
Se utilizan diversas técnicas, a veces en combinación, para recuperarse de errores, tanto errores de software como fugas de memoria , como también errores leves en el hardware:
En el caso de sistemas de gran volumen, como los teléfonos móviles , la minimización de costes suele ser la consideración principal en el diseño. Los ingenieros suelen seleccionar hardware que sea lo suficientemente bueno para implementar las funciones necesarias.
Para sistemas integrados de bajo volumen o prototipos, se pueden adaptar computadoras de propósito general limitando los programas o reemplazando el sistema operativo con un RTOS.
En 1978, la Asociación Nacional de Fabricantes Eléctricos publicó ICS 3-1978, un estándar para microcontroladores programables, [18] que incluye casi todos los controladores basados en computadora, como computadoras de placa única , controladores numéricos y basados en eventos.
Existen varios tipos diferentes de arquitectura de software de uso común.
En este diseño, el software simplemente tiene un bucle que monitorea los dispositivos de entrada. El bucle llama a subrutinas , cada una de las cuales administra una parte del hardware o software. Por eso se le llama bucle de control simple o entrada-salida programada.
Algunos sistemas integrados se controlan predominantemente mediante interrupciones . Esto significa que las tareas que realiza el sistema se activan mediante distintos tipos de eventos; una interrupción podría generarse, por ejemplo, mediante un temporizador en un intervalo predefinido o mediante un controlador de puerto serie que recibe datos.
Esta arquitectura se utiliza si los controladores de eventos necesitan una latencia baja y son cortos y simples. Estos sistemas también ejecutan una tarea simple en un bucle principal, pero esta tarea no es muy sensible a demoras inesperadas. A veces, el controlador de interrupciones agregará tareas más largas a una estructura de cola. Más tarde, una vez que el controlador de interrupciones haya terminado, estas tareas son ejecutadas por el bucle principal. Este método acerca al sistema a un núcleo multitarea con procesos discretos.
La multitarea cooperativa es muy similar al esquema de bucle de control simple, excepto que el bucle está oculto en una API . [3] [1] El programador define una serie de tareas, y cada tarea obtiene su propio entorno para ejecutarse. Cuando una tarea está inactiva, llama a una rutina inactiva que pasa el control a otra tarea.
Las ventajas y desventajas son similares a las del bucle de control, excepto que agregar nuevo software es más fácil, simplemente escribiendo una nueva tarea o agregando a la cola.
En este tipo de sistema, un fragmento de código de bajo nivel cambia entre tareas o subprocesos en función de un temporizador que invoca una interrupción. Este es el nivel en el que generalmente se considera que el sistema tiene un núcleo de sistema operativo. Dependiendo de cuánta funcionalidad se requiera, introduce más o menos complejidades en la gestión de múltiples tareas que se ejecutan conceptualmente en paralelo.
Como cualquier código puede potencialmente dañar los datos de otra tarea (excepto en sistemas que utilizan una unidad de administración de memoria ), los programas deben diseñarse y probarse cuidadosamente, y el acceso a los datos compartidos debe controlarse mediante alguna estrategia de sincronización, como colas de mensajes , semáforos o un esquema de sincronización no bloqueante .
Debido a estas complejidades, es común que las organizaciones utilicen un sistema operativo en tiempo real (RTOS) comercial, lo que permite a los programadores de aplicaciones concentrarse en la funcionalidad del dispositivo en lugar de en los servicios del sistema operativo. Sin embargo, la opción de incluir un RTOS conlleva sus propios problemas, ya que la selección debe realizarse antes de comenzar el proceso de desarrollo de la aplicación. Este momento obliga a los desarrolladores a elegir el sistema operativo integrado para su dispositivo en función de los requisitos actuales y, por lo tanto, restringe en gran medida las opciones futuras. [19]
El nivel de complejidad de los sistemas integrados crece continuamente, ya que se requieren dispositivos para gestionar periféricos y tareas como serial, USB, TCP/IP, Bluetooth , LAN inalámbrica , radio troncal, canales múltiples, datos y voz, gráficos mejorados, estados múltiples, subprocesos múltiples, numerosos estados de espera, etc. Estas tendencias están llevando a la adopción de middleware integrado además de un RTOS.
Un microkernel asigna memoria y conmuta la CPU entre distintos subprocesos de ejecución. Los procesos en modo usuario implementan funciones importantes como sistemas de archivos, interfaces de red, etc.
Los exokernels se comunican de manera eficiente mediante llamadas a subrutinas normales. El hardware y todo el software del sistema están disponibles para los programadores de aplicaciones y pueden ser ampliados por ellos.
Un núcleo monolítico es un núcleo relativamente grande con capacidades sofisticadas adaptadas para adaptarse a un entorno integrado. Esto proporciona a los programadores un entorno similar a un sistema operativo de escritorio como Linux o Microsoft Windows y, por lo tanto, es muy productivo para el desarrollo. El inconveniente es que requiere muchos más recursos de hardware, suele ser más caro y, debido a la complejidad de estos núcleos, puede ser menos predecible y fiable.
Ejemplos comunes de núcleos monolíticos integrados son Linux integrado , VXWorks y Windows CE .
A pesar del aumento del coste del hardware, este tipo de sistema integrado está aumentando en popularidad, especialmente en los dispositivos integrados más potentes, como enrutadores inalámbricos y sistemas de navegación GPS .
Además del sistema operativo central, muchos sistemas integrados tienen componentes de software adicionales de capa superior. Estos componentes incluyen pilas de protocolos de red como CAN , TCP/IP , FTP , HTTP y HTTPS , y capacidades de almacenamiento como FAT y sistemas de gestión de memoria flash. Si el dispositivo integrado tiene capacidades de audio y video, entonces los controladores y códecs apropiados estarán presentes en el sistema. En el caso de los núcleos monolíticos, muchas de estas capas de software pueden estar incluidas en el núcleo. En la categoría RTOS, la disponibilidad de componentes de software adicionales depende de la oferta comercial.
En el sector de la automoción, AUTOSAR es una arquitectura estándar para software integrado.
es un sistema basado en microprocesador que está diseñado para controlar una función o un rango de funciones.