¿Cuál es la diferencia entre firmware, sistema embebido y middleware?

Muy simple respuesta.

Firmware, es el software inicial cargado cuando se inicia un sistema. El nombre implica que está firmemente integrado con el hardware. Si este sistema fuera una PC, sería el BIOS.

Sistema integrado: generalmente se refiere a una instancia específica de algún hardware diseñado para integrarse en una aplicación. Este podría ser el sistema informático en una lavadora. A veces también se usa para referirse a un sistema operativo diseñado para su uso en hardware incorporado.

Middleware: es una especie de bromista, ya que se puede usar básicamente para cualquier cosa que eleve un poco el nivel de abstracción. En una PC, DOS podría considerarse middleware ya que abstrae el BIOS y permite que la aplicación principal use fácilmente su funcionalidad. Del mismo modo, cualquier controlador instalado en un sistema operativo puede considerarse middleware.

Dependiendo del sector en el que se encuentre, existen definiciones ligeramente diferentes. En el diseño digital VLSI, un sistema integrado es un sistema dentro de un chip. Un sistema se refiere a uno o más controladores o procesadores que tienen una conexión (datos y control) a otras partes del sistema. Estas otras partes pueden ser memoria en chip (ROM, RAM, flash, OTP), fuera de chip (DDR SRAM), interfaces de depuración y prueba (JTAG), interfaces de comunicación (UART, USB, ethernet, …), … El firmware es software integrado, esto significa el código que se ejecuta dentro del sistema integrado en el procesador integrado. Un ejemplo es un sistema en chip que actúa como un dispositivo USB necesita tener la pila USB implementada para poder conectarse a un host USB (enumeración) y transferir datos después de la enumeración. Un gestor de arranque está codificado en el chip y define lo que el usuario puede poner / desarrollar en el chip como software integrado. Middleware es, a mi entender, un término aún más difuso. Se utiliza en redes de computadoras para la capa entre datos y la aplicación. En un sistema en chip, se usa menos, pero como dice Felmming Steffensen, se puede usar como una capa de abstracción, que oculta las cosas específicas del hardware. El mismo controlador USB puede llamarse middleware desde el HAL, la capa de abstracción de hardware es la capa que oculta los accesos, el estado y el control del registro real para una determinada parte del hardware. En el ejemplo de USB, el controlador USB y el USB PHY (interfaz física) pueden ser de diferentes proveedores o proveedores de IP. El espacio de dirección y los bits de control y estado no son necesariamente 100% idénticos. Por lo tanto, el HAL implementa los accesos de registro específicos para una marca o proveedor específico. En la capa anterior, el HAL ofrece una forma uniforme de acceso, funciones para enviar un token, recibir un token, devolver el pase o fallar por un token recibido. Cuando se cambia el controlador, solo se necesita cambiar el HAL, el resto del software de la aplicación que se encuentra encima permanece igual.

More Interesting

¿Cuál es el desafío asociado con ser ingeniero de sistemas integrados (software y hardware) en Brasil?

¿Cuál es el alcance del sistema embebido en inteligencia artificial?

¿Será una mejor decisión hacer un entrenamiento de verano en sistemas integrados en LNMIIT o en cualquier NIT que en un buen instituto privado de capacitación?

Cómo usar un temporizador de microcontrolador 8051 para calcular el tiempo entre dos eventos configurando SFR con ejemplo

¿Qué versión de Linux incorporado es adecuada para nuestros sistemas IoT basados ​​en arm?

¿Cuáles son las ventajas y desventajas de usar C ++ para sistemas integrados en comparación con la programación en C?

¿Cuáles son los diferentes archivos generados durante la compilación cruzada del archivo C incrustado? ¿Y que contiene?

¿Cómo aprendo cómo programar en un chip microcontrolador?

¿Cuál es la diferencia entre los ingenieros de software integrados y los ingenieros de hardware integrados?

¿Qué microcontroladores se pueden usar o se usan en entornos industriales?

Cómo prepararme para cumplir con el 'conocimiento de los microcontroladores y la experiencia de deseable incrustado' este requisito de trabajo cuando soy un profesional de software puro con Java y C ++

¿Cuáles son las cosas que uno debe aprender en un sistema integrado?

¿Cuál es la diferencia entre el gestor de arranque, el código de inicio y el cargador de arranque?

¿Cuánto conocimiento de electrónica es necesario para que un graduado de CS trabaje con sistemas embebidos?

Después de hacer proyectos en controladores de 8 bits, ¿qué tema debo seguir para mejorar mis habilidades integradas?