Diferencia y relación entre firmware y controlador de dispositivo

27
  1. ¿En qué se diferencian y relacionan el firmware y el controlador del dispositivo? Creo que ambos dispositivos de control?
  2. ¿El firmware siempre se inicia automáticamente, mientras que el sistema operativo debe ejecutar / iniciar el controlador?
Tim
fuente

Respuestas:

24
  1. El firmware es el software que se ejecuta en el dispositivo. Un controlador es el software que le dice a su sistema operativo cómo comunicarse con el dispositivo. No todos los dispositivos tienen firmware, solo dispositivos con cierto nivel de inteligencia.

  2. No estoy exactamente seguro de lo que quieres decir ... en general, el firmware no tiene nada que ver con el "arranque" ... Creo que quizás lo que estás preguntando es, ¿los dispositivos con firmware siempre tienen el firmware instalado en el dispositivo, o se carga después del tiempo de arranque. Si eso es lo que estás preguntando, la respuesta es no ...

Con mayor frecuencia, los dispositivos con firmware tienen el firmware programado en el dispositivo (ya sea con un chip ROM o un chip ROM programable), pero hay algunos dispositivos en los que el firmware se carga en el dispositivo en el momento de la inicialización. Puedo pensar en algunas tarjetas de red y cámaras web que funcionan de esta manera, pero estoy seguro de que también hay otras.

Flimzy
fuente
¡Gracias! en 2, por autoarranque, quiero decir que si el firmware se ejecuta por sí mismo, no por otros, mientras que el controlador se ejecuta por el sistema operativo, no por sí mismo? Aprendí la palabra autoarranque de "Sin un sistema operativo, un usuario no puede ejecutar un programa de aplicación en su computadora, a menos que el programa de aplicación sea de autoarranque" en es.wikipedia.org/wiki/Operating_system
Tim
1
El firmware lo ejecuta el propio dispositivo de hardware ... ¿Creo que eso responde la pregunta? Considere esto: muchos dispositivos que no son computadoras tienen "firmware", como cámaras digitales, reproductores de DVD, teléfonos celulares, etc. Entonces, obviamente, en estos casos, el firmware está completamente autocontenido en el dispositivo. Solo si / cuando conecta uno de esos dispositivos a su computadora necesita un controlador .
Flimzy
1
¡Gracias! De en.wikipedia.org/wiki/Computer_software : "El firmware es un software de bajo nivel que a menudo se almacena en dispositivos de memoria programables eléctricamente. El firmware recibe su nombre porque es tratado como hardware y ejecutado (" ejecutado ") por otros programas de software". ¿El firmware lo ejecutan otros programas de software o el hardware mismo?
Tim
-1 ¿por qué lo dices only devices with some level of intelligence have firmware? Yo diría que es al revés, los dispositivos simples (electrónicos) pueden no tener sistemas operativos pero sí tienen firmware.
Celeritas
@Celeritas: Porque solo los dispositivos con cierto nivel de inteligencia tienen firmware, en contraste con aquellos (como un puerto RS-232) que no lo tienen. Si está comparando dispositivos que tienen un sistema operativo completo (teléfono móvil, iPod, GPS programable, etc.), está hablando de una capa de abstracción completamente diferente, que realmente no tiene nada que ver con los "controladores de dispositivos" en el sentido tradicional. Esta clase de software de acceso a menudo se denomina "controlador de dispositivo", pero en realidad es un protocolo de aplicación de red implementado sobre un controlador de dispositivo (como el que se comunica con un puerto USB o bluetooth).
Flimzy
5

El firmware implementa detalles de bajo nivel que se requieren para operar el hardware y proporciona una API / ABI a un nivel superior. Un controlador de dispositivo proporciona un adaptador entre el sistema operativo y la API / ABI expuesto por el firmware.

Ignacio Vazquez-Abrams
fuente
1
¡Gracias! ¿El controlador de dispositivo es parte del sistema operativo y lo ejecuta el núcleo del sistema operativo? ¿El firmware es parte del dispositivo y se ejecuta mediante cuál, el núcleo del sistema operativo o el firmware en sí?
Tim
1
El controlador del dispositivo se considera parte del sistema operativo y, por lo general, se ejecuta en la CPU del host. El firmware generalmente lo ejecuta el dispositivo; sin embargo, el SO puede cargarlo en el dispositivo.
Ignacio Vazquez-Abrams
Esta debería ser la respuesta aceptada.
Eric Wang
4

La definición moderna o el uso común del firmware no tiene nada que ver con una funcionalidad de software específica. El firmware es simplemente un software que se almacena en chips de memoria de semiconductores no volátiles (por ejemplo, PROM, EEPROM o flash) en lugar de un dispositivo de almacenamiento masivo como un disco duro. El software almacenado podría ser un binario vinculado monolítico o consistir en un cargador, un núcleo y módulos de aplicación. (OTOH He visto algunas tarjetas sintonizadoras de TV para PC que requieren la carga de "firmware" por parte del kernel de Linux para completar la inicialización).

El origen del término tiene que ver con la lógica controlada por el procesador versus la lógica cableada. El software almacenado en discos duros podría modificarse y actualizarse fácilmente. Las revisiones y actualizaciones a la lógica cableada requirieron el rediseño y reemplazo de la placa o módulo. El término medio era un procesador que ejecutaba software para controlar el hardware. El software se llama firma de cerámica para reflejar el término medio entre suave cerámica frente dura lógica cableada. Originalmente, el firmware se almacenaba en chips ROM, PROM o EPROM para mantener la modularidad de la placa. El avance de EEPROM y chips flash permitió actualizaciones en el circuito y en placa del firmware.

A medida que los procesadores (y periféricos) se volvieron más pequeños, más baratos y menos hambrientos de energía, las posibilidades de integrarlos en cada tipo de dispositivo / dispositivo se expandieron. Para hacer que el software para operar estos dispositivos sea resistente y seguro, el software se almacena en chips de memoria flash en lugar de en un disco duro; También hace que el dispositivo sea más pequeño y mucho más barato. El término firmware se ha ampliado para abarcar todo el software en dispositivos / dispositivos con procesadores integrados, aunque algunas partes del código almacenado podrían no tener relación con el reemplazo de la lógica cableada.

serrín
fuente
Entonces, ¿qué significa instalar firmware en almacenamiento masivo? ¿Te gusta este paquete de Debian ?
xuhdev
1
@xuhdev: ese paquete Debian consta de archivos que pueden ser utilizados por varios controladores de dispositivos Linux. Los archivos se denominan "firmware", ya que el controlador de Linux los escribe en el dispositivo conectado. Los archivos pueden contener datos operativos o código para el uC / uP incorporado del dispositivo. Tenga en cuenta que este archivo transferido al dispositivo se carga en la memoria volátil del dispositivo, y la carga tiene que ocurrir después de cada reinicio del dispositivo o sistema. La "instalación" de este "firmware" en el almacenamiento masivo del host es simplemente un mecanismo de procedimiento (es decir, manejo de paquetes).
aserrín
3

Alguien publicó esta pregunta recientemente , diciendo:

El firmware es una combinación de memoria persistente, código de programa y los datos almacenados en él. Los ejemplos típicos de dispositivos que contienen Firmware son sistemas integrados como semáforos, electrodomésticos, relojes digitales, computadoras, periféricos, teléfonos móviles y cámaras digitales. El firmware contenido en estos dispositivos proporciona el programa de control para el dispositivo.

De hecho, la driversetiqueta de SuperUser está definida:

Un controlador, también llamado controlador de dispositivo o controlador de software, es un software que permite que los programas informáticos de nivel superior interactúen con un dispositivo de hardware. Cuando un programa de computadora solicita interacción con cierto dispositivo de hardware, el controlador se encargará de la instrucción y la traducción de salida entre el dispositivo y el programa de computadora que invoca al controlador.

y, la firmwareetiqueta está definida:

En general, la diferencia entre software y firmware es el nivel en el que interactúa con el hardware. El firmware interactúa en el nivel muy bajo del hardware, mientras que el software interactúa en niveles altos. El firmware generalmente controla el tiempo básico, los controles y la funcionalidad del hardware.

Originalmente pensé que firmwarese instaló directamente en el chip o la placa y viví allí, por lo que debe ser "flasheado", mientras que instalaría uno driverencima de un sistema operativo.

Conclusión:

Firmwarepermite que el hardware "haga" cosas y driverspermite que el software interactúe con el hardware.

bgmCoder
fuente