Un sistema integrado es un sistema informático, 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á integrado como parte de un dispositivo completo que a menudo incluye hardware eléctrico o electrónico y piezas mecánicas. Debido a que un sistema integrado generalmente controla las operaciones físicas de la máquina en la que está integrado, a menudo tiene restricciones de computación en tiempo real . Los sistemas integrados controlan muchos dispositivos de uso común en la actualidad. [3] En 2009[actualizar]se estimó que el noventa y ocho por ciento de todos los microprocesadores fabricados se utilizaban en sistemas integrados. [4]
Los sistemas integrados modernos a menudo se basan en microcontroladores (es decir, microprocesadores con memoria integrada e interfaces periféricas), pero los microprocesadores ordinarios (que utilizan chips externos para la memoria y los circuitos de interfaz periférica) también son comunes, 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 la confiabilidad y el rendimiento. Algunos sistemas integrados se producen en masa y se benefician de las economías de escala .
Los sistemas integrados van desde dispositivos portátiles como relojes digitales y reproductores de MP3 , hasta grandes instalaciones estacionarias como controladores de semáforos , controladores lógicos programables y grandes sistemas complejos como vehículos híbridos , sistemas de imágenes médicas y aviónica . La complejidad varía desde baja, con un solo chip de microcontrolador, hasta muy alta con múltiples unidades, periféricos y redes montados dentro de un gran bastidor de equipos .
Historia
Fondo
Los orígenes del microprocesador y el 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 semiconductores de óxido de metal ) 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 informática fue la base de los primeros microprocesadores, ya que los ingenieros comenzaron a reconocer que un sistema completo de procesador de computadora podí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 varios 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 puerta de silicio , junto con los ingenieros de Intel Marcian Hoff y Stan Mazor , y el ingeniero de Busicom Masatoshi Shima . [6]
Desarrollo
Uno de los primeros sistemas integrados reconociblemente modernos fue el Apollo Guidance Computer , [ cita requerida ] desarrollado ca. 1965 por Charles Stark Draper en el Laboratorio de Instrumentación del MIT . Al inicio del proyecto, la computadora de guía Apollo se consideró el elemento más riesgoso en el proyecto Apollo, ya que empleó los circuitos integrados monolíticos recientemente desarrollados para reducir el tamaño y el peso de la computadora.
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ó la primera alta volumen de uso de circuitos integrados.
Desde estas primeras aplicaciones en la década de 1960, los sistemas integrados han bajado de precio y ha habido un aumento espectacular en la capacidad 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 memoria, entrada y salida se habían integrado en el mismo chip que el procesador formando un microcontrolador . Los microcontroladores encuentran aplicaciones donde una computadora de propósito general sería demasiado costosa. A medida que disminuyó el costo de los microprocesadores y microcontroladores, aumentó la prevalencia de los sistemas integrados.
Hoy en día, un microcontrolador de costo comparativamente bajo puede programarse para cumplir la misma función que una gran cantidad de componentes separados. Con los microcontroladores, se volvió factible reemplazar, incluso en productos de consumo, componentes analógicos costosos basados en perillas , como potenciómetros y capacitores variables con botones o perillas de arriba / abajo leídos por un microprocesador. Aunque en este contexto un sistema integrado suele ser más complejo que una solución tradicional, la mayor parte de la complejidad está contenida en el propio microcontrolador. Es posible que se necesiten muy pocos componentes adicionales y la mayor parte del esfuerzo de diseño se encuentra en el software. El prototipo y la prueba de software pueden ser más rápidos en comparación con el diseño y la construcción de un nuevo circuito sin un procesador integrado.
Aplicaciones
Los sistemas integrados se encuentran comúnmente en aplicaciones de consumo, industriales, automotrices , electrodomésticos , médicas, de telecomunicaciones, comerciales y militares.
Los sistemas de telecomunicaciones emplean numerosos sistemas integrados, desde conmutadores telefónicos para la red hasta teléfonos móviles en el usuario final . Las redes de computadoras utilizan enrutadores dedicados y puentes de red para enrutar datos.
Los productos electrónicos de consumo incluyen reproductores de MP3 , televisores , teléfonos móviles , consolas de videojuegos , cámaras digitales , receptores de GPS e impresoras . Los electrodomésticos, como hornos microondas , lavadoras y lavavajillas , incluyen sistemas integrados para brindar flexibilidad, eficiencia y características. Los sistemas avanzados de HVAC utilizan termostatos en red para controlar de manera 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 alámbricas e inalámbricas que se pueden usar para controlar luces, clima, seguridad, audio / visual, vigilancia, etc., todos los cuales usan dispositivos integrados para detectar y controlar.
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. 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 ( PET , SPECT , CT y MRI ) 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 para la seguridad . A menos que estén conectados a redes cableadas o inalámbricas a través de un dispositivo celular 3G en el chip u otros métodos para fines de control y monitoreo 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 tener una mayor capacidad para manejar temperaturas más altas y seguir funcionando. En lo que respecta a la seguridad, los sistemas integrados pueden ser autosuficientes y poder lidiar con sistemas eléctricos y de comunicación cortados.
Los dispositivos inalámbricos en miniatura llamados motas son sensores inalámbricos conectados en red. La red de sensores inalámbricos hace uso de la miniaturización que es posible gracias al diseño de IC avanzado para acoplar subsistemas inalámbricos completos a sensores sofisticados, lo que permite a las personas y empresas medir una gran cantidad de cosas en el mundo físico y actuar sobre esta información a través de sistemas de control y monitoreo. Estas motas son completamente autónomas y normalmente funcionarán con una fuente de batería durante años antes de que sea necesario cambiarlas o cargarlas.
Caracteristicas
Los sistemas integrados están diseñados para realizar una tarea específica, en lugar de ser una computadora de propósito general para múltiples tareas. Algunos también 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 sistemas integrados constan de piezas pequeñas dentro de un dispositivo más grande que tiene un propósito más general. Por ejemplo, la Gibson Robot Guitar cuenta con un sistema integrado para afinar las cuerdas, pero el propósito general de la Robot Guitar es, por supuesto, tocar música. [9] De manera similar, un sistema integrado en un automóvil proporciona una función específica como un subsistema del propio automóvil.
Las instrucciones del programa escritas para los sistemas integrados se denominan firmware y se almacenan en una memoria de solo lectura o en chips de memoria flash . Funcionan con recursos de hardware informáticos limitados: poca memoria, teclado o pantalla pequeños o inexistentes.
Interfaz de usuario
Los sistemas integrados van desde ninguna interfaz de usuario , en sistemas dedicados solo a una tarea, hasta complejas interfaces gráficas de usuario que se asemejan a los sistemas operativos de escritorio de las computadoras modernas. Los dispositivos integrados simples utilizan botones , LED , LCD gráficos o de caracteres ( LCD HD44780, por ejemplo) con un sistema de menú simple . Los dispositivos más sofisticados que usan una pantalla gráfica con sensor táctil o teclas programables en el borde de la pantalla brindan flexibilidad mientras minimizan el espacio utilizado: el significado de los botones puede cambiar con la pantalla y la selección implica el comportamiento natural de apuntar a 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 costo de una pantalla, simplifica BSP y permite a los diseñadores crear una interfaz de usuario enriquecida en la 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 una PC conectada al dispositivo.
Procesadores en sistemas embebidos
Ejemplos de propiedades de las computadoras integradas típicas, en comparación con sus contrapartes de uso general, son el bajo consumo de energía, el tamaño pequeño, los rangos operativos resistentes y el bajo costo por unidad. Esto tiene el precio de unos 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.
Tableros de computadora listos para usar
PC / 104 y PC / 104 + son ejemplos de estándares para placas de computadora listas para usar destinadas a sistemas pequeños, embebidos y robustos de bajo volumen, en su mayoría basados en x86. Estos suelen ser físicamente pequeños en comparación con una PC estándar, aunque siguen siendo bastante grandes en comparación con la mayoría de los sistemas integrados simples (8/16 bits). A menudo utilizan DOS , Linux , NetBSD o un sistema operativo integrado en tiempo real como MicroC / OS-II , QNX o VxWorks . A veces, estas placas utilizan procesadores que no son x86.
En ciertas aplicaciones, donde el tamaño pequeño o la eficiencia energética no son preocupaciones principales, los componentes usados pueden ser compatibles con los usados en computadoras personales x86 de uso general. Las placas como la gama VIA EPIA ayudan a cerrar la brecha al ser compatibles con PC pero altamente integradas, físicamente más pequeñas o con 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 en general. Los sistemas construidos de esta manera todavía se consideran integrados, ya que están integrados en dispositivos más grandes y cumplen una única función. Ejemplos de dispositivos que pueden adoptar este enfoque son los cajeros automáticos y las máquinas recreativas , que contienen un código específico para la aplicación.
Sin embargo, la mayoría de las placas de sistemas integrados listas para usar no están centradas en la PC y no utilizan los buses ISA o PCI. Cuando se trata de un procesador de sistema en un chip , puede haber pocos beneficios de 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, tal vez del tamaño de una tarjeta de visita, que contiene chips BGA de alta densidad , como periféricos y un procesador de sistema en un chip basado en ARM , memoria flash externa para almacenamiento y DRAM para tiempo de ejecución. memoria. 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 ser fabricados en gran volumen por organizaciones familiarizadas con sus problemas de pruebas especializadas y combinados con placas madre personalizadas de mucho menor volumen con periféricos externos específicos de la aplicación.
La implementación de sistemas embebidos ha avanzado para que puedan implementarse fácilmente con tableros ya hechos que se basan en plataformas aceptadas en todo el mundo. Estas plataformas incluyen, entre otras, Arduino y Raspberry Pi .
Soluciones ASIC y FPGA
Una matriz común para sistemas embebidos de muy alto volumen es el sistema en un chip (SoC) que contiene un sistema completo que consta de múltiples procesadores, multiplicadores, cachés e interfaces en un solo chip. 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).
Periféricos
Los sistemas integrados se comunican con el mundo exterior a través de periféricos , como:
- Interfaces de comunicación en serie (SCI): RS-232 , RS-422 , RS-485 , etc.
- Interfaz de comunicación serie síncrona: I2C , SPI , SSC y ESSI (interfaz serie síncrona mejorada)
- Bus serie universal (USB)
- Tarjetas multimedia (tarjetas SD, Compact Flash, etc.)
- Redes: Ethernet , LonWorks , etc.
- Buses de campo : CAN-Bus , LIN-Bus , PROFIBUS , etc.
- Temporizadores: PLL (s), captura / comparación y unidades de procesamiento de tiempo
- E / S discreta: también conocida como entrada / salida de uso general (GPIO)
- Analógico a digital / digital a analógico ( ADC / DAC )
- Depuración: puertos JTAG , ISP , BDM , BITP y DB9.
Herramientas
Al igual que con otro software, los diseñadores de sistemas integrados utilizan compiladores , ensambladores y depuradores para desarrollar software de sistemas integrados. Sin embargo, también pueden utilizar algunas herramientas más específicas:
- En depuradores o emuladores de circuitos (consulte la siguiente sección).
- Utilidades para agregar una suma de comprobación o CRC a un programa, para que el sistema integrado pueda verificar si el programa es válido.
- Para los sistemas que usan procesamiento de señales digitales , los desarrolladores pueden usar un banco de trabajo de matemáticas para simular las matemáticas.
- Las herramientas de simulación y modelado a nivel de sistema ayudan a los diseñadores a construir modelos de simulación de un sistema con componentes de hardware como procesadores , memorias , DMA , interfaces , buses y flujo de comportamiento de software como un diagrama de estado o diagrama de flujo utilizando bloques de biblioteca configurables. La simulación se lleva a cabo para seleccionar los componentes correctos mediante la realización de compensaciones entre potencia y rendimiento, análisis de confiabilidad y análisis de cuellos de botella. Los informes típicos que ayudan a un diseñador a tomar decisiones de arquitectura incluyen la latencia de la aplicación, el rendimiento del dispositivo, la utilización del dispositivo, el consumo de energía del sistema completo y el consumo de energía a nivel del dispositivo.
- Una herramienta de desarrollo basada en modelos crea y simula el flujo de datos gráficos y diagramas de diagrama de estado UML de componentes como filtros digitales, controladores de motor, decodificación de protocolos de comunicación y tareas de múltiples velocidades.
- Se pueden utilizar compiladores y enlazadores personalizados para optimizar hardware especializado.
- Un sistema integrado puede tener su propio lenguaje especial o herramienta de diseño, o agregar mejoras a un lenguaje existente como Forth o Basic .
- Otra alternativa es agregar un sistema operativo en tiempo real o un sistema operativo integrado
- Herramientas de modelado y generación de código a menudo basadas en máquinas de estado
Las herramientas de software pueden provenir de varias fuentes:
- Empresas de software que se especializan en el mercado integrado
- Portado desde las herramientas de desarrollo de software GNU
- A veces, se pueden utilizar herramientas de desarrollo para una computadora personal si el procesador integrado es un pariente cercano de un procesador de PC común.
A medida que crece la complejidad de los sistemas integrados, las herramientas y los sistemas operativos de alto nivel están migrando a la maquinaria donde tiene sentido. 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 que no es el fabricante de los productos electrónicos. En estos sistemas, se requiere un entorno de programación abierto como Linux , NetBSD , OSGi o Embedded Java para que el proveedor de software de terceros pueda vender a un gran mercado.
Los sistemas integrados se encuentran comúnmente en aplicaciones de consumo, cocina, industriales, automotrices y médicas. Algunos ejemplos de sistemas integrados son reproductores MP3, teléfonos móviles, consolas de videojuegos, cámaras digitales, reproductores de DVD y GPS. Los electrodomésticos, como hornos microondas, lavadoras y lavavajillas, incluyen sistemas integrados para brindar flexibilidad y eficiencia.
Depuración
La depuración incrustada se puede realizar en diferentes niveles, según las instalaciones disponibles. Las diferentes métricas que caracterizan las diferentes formas de depuración incrustada son: ¿ralentiza la aplicación principal, qué tan cerca está el sistema o la aplicación depurada del sistema o la aplicación real, 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 (como, solo memoria, o memoria y registros, etc.).
Desde los más simples hasta los más sofisticados, se pueden agrupar aproximadamente en las siguientes áreas:
- Depuración residente interactiva, utilizando el shell simple proporcionado por el sistema operativo integrado (por ejemplo, Forth y Basic)
- Depuración externa mediante registro o salida de puerto serie para rastrear la operación utilizando un monitor en flash o un servidor de depuración como Remedy Debugger que incluso funciona para sistemas heterogéneos de varios núcleos .
- Un depurador en circuito (ICD), un dispositivo de hardware que se conecta al microprocesador a través de una interfaz JTAG o Nexus . [10] Esto permite que el funcionamiento del microprocesador se controle externamente, pero normalmente está restringido a capacidades de depuración específicas en el procesador.
- Un emulador en circuito (ICE) reemplaza el microprocesador con un equivalente simulado, proporcionando un control total sobre todos los aspectos del microprocesador.
- Un emulador completo proporciona una simulación de todos los aspectos del hardware, lo que permite controlar y modificar todo, y permite la depuración en una PC normal. Las desventajas son el costo y el funcionamiento lento, en algunos casos hasta 100 veces más lento que el sistema final.
- Para los diseños de SoC, el enfoque típico es verificar y depurar el diseño en una placa prototipo FPGA. Se utilizan herramientas como Certus [11] para insertar sondas en la FPGA RTL que hacen que las señales estén disponibles para la observación. Se utiliza para depurar interacciones de hardware, firmware y software en múltiples FPGA con capacidades similares a un analizador lógico.
- Los depuradores de solo software tienen la ventaja de que no necesitan ninguna modificación de hardware, sino que deben controlar cuidadosamente lo que registran para ahorrar tiempo y espacio de almacenamiento. [12]
A menos que esté restringido 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 tan HLL código fuente , código de montaje o de la mezcla de ambos.
Debido a que un sistema integrado a menudo se compone de una amplia variedad de elementos, la estrategia de depuración puede variar. Por ejemplo, depurar un sistema embebido centrado en software (y microprocesador) es diferente de depurar un sistema embebido donde la mayor parte del procesamiento se realiza mediante periféricos (DSP, FPGA y coprocesador). Hoy en día, un número cada vez mayor de sistemas integrados utilizan más de un núcleo de procesador. Un problema común con el desarrollo de múltiples núcleos es la sincronización adecuada de la ejecución del software. En este caso, el diseño del sistema integrado puede querer verificar el tráfico de datos en los buses entre los núcleos del procesador, lo que requiere una depuración de muy bajo nivel, a nivel de señal / bus, con un analizador lógico , por ejemplo.
Rastreo
Los sistemas operativos en tiempo real ( RTOS ) a menudo admiten 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 de seguimiento se puede realizar en software, mediante RTOS o mediante hardware de seguimiento especial. El rastreo de RTOS permite a los desarrolladores comprender los problemas de tiempo y rendimiento del sistema de software y brinda una buena comprensión de los comportamientos del sistema de alto nivel.
Fiabilidad
Los sistemas integrados a menudo residen en máquinas que se espera que funcionen continuamente durante años sin errores y, en algunos casos, se recuperan por sí mismas si se produce un error. Por lo tanto, el software generalmente se desarrolla y prueba con más cuidado que el de las computadoras personales, y se evitan las partes mecánicas móviles poco confiables, como unidades de disco, interruptores o botones.
Los problemas de confiabilidad específicos pueden incluir:
- El sistema no se puede apagar de manera segura para su reparación o es demasiado inaccesible para repararlo. Los ejemplos incluyen sistemas espaciales, cables submarinos, balizas de navegación, sistemas de perforación y automóviles.
- El sistema debe mantenerse en funcionamiento por razones de seguridad. Los "modos cojos" son menos tolerables. A menudo, un operador selecciona las copias de seguridad. Los ejemplos incluyen navegación de aeronaves, sistemas de control de reactores, controles de fábricas de productos químicos críticos para la seguridad, señales de trenes.
- El sistema perderá grandes cantidades de dinero cuando se apague: interruptores telefónicos, controles de fábrica, controles de puentes y elevadores, transferencia de fondos y creación de mercado, ventas y servicio automatizados.
Se utilizan una variedad de técnicas, a veces combinadas, para recuperarse de errores, tanto errores de software como fugas de memoria , como errores de software en el hardware:
- temporizador de vigilancia que reinicia la computadora a menos que el software notifique periódicamente a los subsistemas de vigilancia con repuestos redundantes que se pueden cambiar a "modos de emergencia" de software que proporcionan una función parcial
- Diseñar con una arquitectura Trusted Computing Base (TCB) [13] garantiza un entorno de sistema altamente seguro y confiable
- Un hipervisor diseñado para sistemas integrados es capaz de proporcionar un encapsulado seguro para cualquier componente del subsistema, de modo que un componente de software comprometido no pueda interferir con otros subsistemas o software de sistema de nivel privilegiado. [14] Esta encapsulación evita que las fallas se propaguen de un subsistema a otro, mejorando así la confiabilidad. Esto también puede permitir que un subsistema se apague y reinicie automáticamente al detectar fallas.
- Programación consciente de la inmunidad
Volumen alto o bajo
Para sistemas de alto volumen, como reproductores de música portátiles o teléfonos móviles , minimizar el costo suele ser la consideración principal del diseño. Los ingenieros suelen seleccionar hardware que sea "lo suficientemente bueno" para implementar las funciones necesarias.
Para sistemas embebidos de bajo volumen o prototipos, las computadoras de propósito general pueden adaptarse limitando los programas o reemplazando el sistema operativo con un sistema operativo en tiempo real .
Arquitecturas de software integradas
En 1978, la Asociación Nacional de Fabricantes Eléctricos publicó un estándar para microcontroladores programables, incluidos casi todos los controladores basados en computadora, como computadoras de placa única, controladores numéricos y basados en eventos.
Hay varios tipos diferentes de arquitectura de software de uso común en la actualidad.
Bucle de control simple
En este diseño, el software simplemente tiene un bucle . El bucle llama a subrutinas , cada una de las cuales administra una parte del hardware o software. Por lo tanto, se denomina bucle de control simple o bucle de control.
Sistema controlado por interrupciones
Algunos sistemas integrados están controlados predominantemente por interrupciones . Esto significa que las tareas realizadas por el sistema son desencadenadas por diferentes tipos de eventos; una interrupción podría ser generada, por ejemplo, por un temporizador en una frecuencia predefinida, o por un controlador de puerto serie que recibe un byte.
Este tipo de sistemas se utilizan si los controladores de eventos necesitan baja latencia y los controladores de eventos son breves y simples. Por lo general, este tipo de sistemas también ejecutan una tarea simple en un bucle principal, pero esta tarea no es muy sensible a retrasos inesperados.
A veces, el controlador de interrupciones agregará tareas más largas a una estructura de cola. Más tarde, después de que el controlador de interrupciones haya terminado, estas tareas son ejecutadas por el bucle principal. Este método acerca el sistema a un núcleo multitarea con procesos discretos.
Multitarea cooperativa
Un sistema multitarea no preventivo 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 tiene su propio entorno para "ejecutarse". Cuando una tarea está inactiva, llama a una rutina inactiva, generalmente llamada "pausa", "espera", " rendimiento ”,“ nop ”(significa sin operación ), etc.
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.
Multitarea preventiva o subprocesos múltiples
En este tipo de sistema, una pieza de código de bajo nivel cambia entre tareas o subprocesos en función de un temporizador (conectado a 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 las complejidades de administrar múltiples tareas que se ejecutan conceptualmente en paralelo.
Como cualquier código potencialmente puede dañar los datos de otra tarea (excepto en sistemas más grandes utilizando un MMU ) programas deben ser diseñados y probados con cuidado, y el acceso a los datos compartidos debe ser controlada por una cierta estrategia de sincronización, tales como colas de mensajes , semáforos o un no -esquema de sincronización de bloqueo .
Debido a estas complejidades, es común que las organizaciones utilicen un sistema operativo en tiempo real (RTOS), lo que permite a los programadores de aplicaciones concentrarse en la funcionalidad del dispositivo en lugar de en los servicios del sistema operativo, al menos para sistemas grandes; Los sistemas más pequeños a menudo no pueden permitirse la sobrecarga asociada con un sistema genérico en tiempo real, debido a limitaciones en cuanto al tamaño de la memoria, el rendimiento o la duración de la batería. Sin embargo, la elección de que se requiere un RTOS conlleva sus propios problemas, ya que la selección debe realizarse antes de comenzar con 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 las opciones futuras en gran medida. [15] La restricción de opciones futuras se convierte en un problema mayor a medida que disminuye la vida útil del producto. Además, el nivel de complejidad crece continuamente a medida que se requieren dispositivos para administrar variables como serie, USB, TCP / IP, Bluetooth , LAN inalámbrica , radio troncal, múltiples canales, datos y voz, gráficos mejorados, múltiples estados, múltiples subprocesos, numerosos estados de espera, etc. Estas tendencias están llevando a la adopción de middleware integrado además de un sistema operativo en tiempo real.
Microkernels y exokernels
Un microkernel es un paso lógico desde un sistema operativo en tiempo real. La disposición habitual es que el núcleo del sistema operativo asigna memoria y cambia la CPU a diferentes subprocesos de ejecución. Los procesos en modo de usuario implementan funciones importantes como sistemas de archivos, interfaces de red, etc.
En general, los micronúcleos tienen éxito cuando el cambio de tareas y la comunicación entre tareas es rápido y fallan cuando son lentos.
Los exokerneles se comunican de manera eficiente mediante llamadas de subrutinas normales. El hardware y todo el software del sistema están disponibles y son ampliables por los programadores de aplicaciones.
Granos monolíticos
En este caso, un kernel relativamente grande con capacidades sofisticadas se adapta para adaptarse a un entorno integrado. Esto brinda 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; en el lado negativo, requiere considerablemente más recursos de hardware, a menudo es más costoso y, debido a la complejidad de estos núcleos, puede ser menos predecible y confiable.
Ejemplos comunes de kernels monolíticos integrados son Linux , VXWorks y Windows CE integrados .
A pesar del mayor costo del hardware, este tipo de sistema integrado está ganando popularidad, especialmente en los dispositivos integrados más potentes, como los enrutadores inalámbricos y los sistemas de navegación GPS . Estas son algunas de las razones:
- Hay puertos disponibles para conjuntos de chips integrados comunes.
- Permiten la reutilización de código disponible públicamente para controladores de dispositivos , servidores web , cortafuegos y otros códigos.
- Los sistemas de desarrollo pueden comenzar con amplios conjuntos de características y luego la distribución se puede configurar para excluir la funcionalidad innecesaria y ahorrar el gasto de memoria que consumiría.
- Muchos ingenieros creen que ejecutar el código de la aplicación en modo de usuario es más confiable y más fácil de depurar, lo que facilita el proceso de desarrollo y hace que el código sea más portátil. [ cita requerida ]
- Las funciones que requieren una respuesta más rápida de la que se puede garantizar a menudo se pueden colocar en el hardware .
Componentes de software adicionales
Además del sistema operativo central, muchos sistemas integrados tienen componentes de software de capa superior adicionales. Estos componentes constan de pilas de protocolos de red como CAN , TCP / IP , FTP , HTTP y HTTPS , y también incluyen 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, se incluyen muchas de estas capas de software. En la categoría RTOS, la disponibilidad de los componentes de software adicionales depende de la oferta comercial.
Arquitecturas específicas de dominio
En el sector de la automoción, AUTOSAR es una arquitectura estándar para software embebido.
Ver también
- Servidor de comunicaciones
- Sistema ciberfísico
- DSP
- Unidad de control electrónico
- Hipervisor
- Sistemas operativos integrados
- Software integrado
- Firmware
- FPGA
- Dispositivo de información
- Microprocesador
- Microcontrolador
- Compilador de silicio
- Sistema operativo en tiempo real
- Ingeniería de software
- Sistema en un chip
- Sistema en módulo
- Computación ubicua
- Microprocesadores integrados con optimización fotónica
Notas
- ^ Para obtener más detalles de MicroVGA, consulte este PDF .
Referencias
- ^ a b Michael Barr . "Glosario de sistemas integrados" . Biblioteca técnica de Neutrino . Consultado el 21 de abril de 2007 .
- ^ Heath, Steve (2003). Diseño de sistemas empotrados . Serie EDN para ingenieros de diseño (2 ed.). Newnes. pag. 2 . ISBN 978-0-7506-5546-0.
Un sistema integrado es un sistema basado en microprocesador que está diseñado para controlar una función o un rango de funciones.
- ^ a b Michael Barr; Anthony J. Massa (2006). "Introducción" . Programación de sistemas embebidos: con herramientas de desarrollo C y GNU . O'Reilly. págs. 1-2. ISBN 978-0-596-00983-0.
- ^ Barr, Michael (1 de agosto de 2009). "Programa de hombres reales en C" . Diseño de Sistemas Embebidos . TechInsights (United Business Media). pag. 2 . Consultado el 23 de diciembre de 2009 .
- ^ Shirriff, Ken (30 de agosto de 2016). "La sorprendente historia de los primeros microprocesadores" . Espectro IEEE . Instituto de Ingenieros Eléctricos y Electrónicos . 53 (9): 48–54. doi : 10.1109 / MSPEC.2016.7551353 . S2CID 32003640 . Consultado el 13 de octubre de 2019 .
- ^ "1971: El microprocesador integra la función de la CPU en un solo chip" . El motor de silicio . Museo de Historia de la Computación . Consultado el 22 de julio de 2019 .
- ^ "Fundación Frontera Electrónica" . Fundación Frontera Electrónica .
- ^ Sistemas integrados Soluciones OEM de Dell | Dell . Content.dell.com (4 de enero de 2011). Consultado el 6 de febrero de 2013.
- ^ David Carey (22 de abril de 2008). "Bajo el capó: Robot Guitar incrusta autotuning" . Diseño de Sistemas Embebidos . Archivado desde el original el 8 de julio de 2008.
- ^ Tancreti, Matthew; Hossain, Mohammad Sajjad; Bagchi, Saurabh; Raghunathan, Vijay (2011). "Aveksha: un enfoque de hardware y software para el seguimiento no intrusivo y la creación de perfiles de sistemas integrados inalámbricos". Actas de la novena conferencia de ACM sobre sistemas de sensores integrados en red . SenSys '11. Nueva York, NY, EE. UU.: ACM: 288–301. doi : 10.1145 / 2070942.2070972 . ISBN 9781450307185. S2CID 14769602 .
- ^ "Tektronix revoluciona la creación de prototipos, la instrumentación integrada aumenta las placas al estado de emulador" . Revista de Ingeniería Electrónica. 2012-10-30 . Consultado el 30 de octubre de 2012 .
- ^ Tancreti, Matthew; Sundaram, Vinaitheerthan; Bagchi, Saurabh; Eugster, Patrick (2015). "TARDIS: registro y reproducción a nivel de sistema solo de software en redes de sensores inalámbricos". Actas de la 14ª Conferencia Internacional sobre Procesamiento de Información en Redes de Sensores . IPSN '15. Nueva York, NY, EE. UU .: ACM: 286–297. doi : 10.1145 / 2737095.2737096 . ISBN 9781450334754. S2CID 10120929 .
- ^ Heiser, Gernot (diciembre de 2007). "¿Su sistema es seguro? ¡Pruébelo!" (PDF) . ; entrada: . 2 (6): 35–8.
- ^ Moratelli, C; Johann, S; Neves, M; Hessel, F (2016). "Virtualización embebida para el diseño de aplicaciones IoT seguras" . Simposio internacional de 2016 sobre creación rápida de prototipos de sistemas (RSP) : 2–6. doi : 10.1145 / 2990299.2990301 . ISBN 9781450345354. S2CID 17466572 . Consultado el 2 de febrero de 2018 .
- ^ "Trabajar en varias plataformas integradas" (PDF) . clarinox . Consultado el 17 de agosto de 2010 .
Otras lecturas
- John Catsoulis (mayo de 2005). Diseño de hardware integrado, segunda edición . O'Reilly. ISBN 0-596-00755-8.
- James M. Conrad; Alexander G. Dean (septiembre de 2011). Sistemas integrados, una introducción con el microcontrolador Renesas RX62N . Micrium. ISBN 978-1935-7729-96.
- Klaus Elk (agosto de 2016). Desarrollo de software integrado para Internet de las cosas, conceptos básicos, tecnologías y mejores prácticas . ISBN 978-1534602533.
enlaces externos
- Curso de sistemas integrados con mbed YouTube, en curso desde 2015
- Tendencias en ciberseguridad y sistemas integrados Dan Geer, noviembre de 2013
- Curso de video de programación de sistemas integrados modernos en YouTube, en curso desde 2013
- Evento anual de Embedded Systems Week (ESWEEK) con conferencias, talleres y tutoriales que cubren todos los aspectos de los sistemas y software integrados
- Taller sobre educación en sistemas integrados y ciberfísicos , taller que cubre los aspectos educativos de los sistemas integrados