¿Por qué el firmware y los controladores deben estar separados?

¿Por qué el firmware y los controladores deben estar separados?

Al observar las diferencias entre el firmware del dispositivo y el controlador, realmente no veo por qué técnicamente necesitamos la distinción. Entiendo que el firmware no es fácil de cambiar, que realiza la operación del dispositivo de bajo nivel mientras los controladores están ahí para comunicarse con el sistema operativo host.

La pregunta es, ¿por qué no podemos simplemente fusionar esas dos capas en una sola? Sólo un controlador que sabe cómo comunicarse con el sistema operativo y traduce todas las solicitudes directamente a operaciones de dispositivo de bajo nivel. ¿Es para facilitar el desarrollo (es decir, reducir el conocimiento necesario del desarrollador para desarrollar este software)? ¿No es posible comunicarse con el dispositivo mediante un software que no reside en su memoria flash?

Respuesta1

No, ambos tipos de software normalmente se ejecutan en un tipo de máquina diferente.

El firmware se está ejecutando en el procesador/controlador del dispositivo periférico, el controlador se está ejecutando en la CPU de su máquina. Por lo general, incluso son de diferentes tipos.

En teoría, unopodríaEncargue a la CPU de su máquina que haga todos los bits en el dispositivo periférico. Esto se hizo en las primeras computadoras. Pero esto tiene un precio elevado.

A menudo, el protocolo externo implica restricciones estrictas de sincronización (piense en una tarjeta de red o una pantalla CRT). Su CPU necesitará manejarmuchode interrupciones para realizar el trabajo en el momento adecuado. Por esa razón, en el famoso Sinclair ZX-81, la pantalla se apagaba cuando la CPU estaba trabajando duro; no había tiempo para actualizar la pantalla :)

Por lo tanto, hoy en día intentamos desacoplar el trabajo de los dispositivos periféricos. La CPU recibirá una notificación cuando la red esté completa.paqueteLlegó y no tiene que sondear un cable para cambiar bits.

Respuesta2

El firmware se ejecuta en el dispositivo utilizando directamente el hardware del dispositivo. Una forma de verlo es que el firmware es una API para el sistema operativo, no importa qué sistema operativo ejecute la computadora, si recibe la instrucción x, entonces el firmware realizará y y puede devolver un valor z. El dispositivo tendrá su propio reloj que controlará la velocidad en que se ejecutan las instrucciones, su propia memoria y el procesador del dispositivo puede ser diferente al de la computadora; por ejemplo, la computadora puede ser un AMD64, pero el dispositivo tiene un procesador arm64. El firmware no se comunica directamente con la CPU o la RAM, recibe instrucciones del bus y devuelve los datos al bus.

Los controladores se ejecutan en la computadora ya sea en el nivel del kernel del sistema operativo o en el nivel de usuario del sistema operativo; un controlador depende del sistema operativo y debe cumplir con los requisitos del sistema operativo para poder funcionar. Un controlador generalmente se encargará de cualquier trabajo que necesite la CPU o la RAM de la computadora; una vez que se haya completado el procesamiento de la instrucción, la instrucción se pasa al dispositivo a través del firmware.

Respuesta3

De hecho, no es necesario separarlos.

En muchos casos, se puede recorrer todo el espectro, desde controlar el hardware directamente desde la CPU central hasta implementar todo lo posible en el firmware.

Aquí hay una lista incompleta de consideraciones de diseño sobre el equilibrio entre firmware y controladores:

  1. ¿Quiere utilizar un controlador o una interfaz estándar?

Por supuesto, se puede crear una memoria flash USB que exponga la semántica NAND al controlador y guarde el chip controlador. Y distribuya su exótico controlador de alguna manera (para Windows, Linux, MAC, impresoras Konica, etc., etc.). Por otro lado, tanto los usuarios como los desarrolladores de sistemas operativos esperan que la memoria USB funcione con el controlador de dispositivo de bloque estándar. ¿Ratón óptico con interfaz no HID? Realmente tampoco es una buena idea.

  1. ¿Alguna de sus patentes de funcionalidad/NDA/secreto comercial está cargada?

El controlador (incluso si está compilado) está disponible para realizar ingeniería inversa y modificarlo fácilmente, y mucho menos el firmware. Este suele ser el caso de los chips de vídeo.

  1. ¿Cumplimiento de normativas?

Muchos firmwares relacionados con la radio (wifi, celular, bluetooth) exigen el cumplimiento de las regulaciones del espectro de frecuencias.

  1. ¿Costo? Suele haber un punto óptimo en cuanto a gastos tanto de diseño como de fabricación.

etcétera etcétera...

Además de esto, hay bastantes dispositivos que carecen de memoria ROM, por lo que el firmware es en realidad parte del controlador y se carga en el dispositivo cada vez que se enciende.

información relacionada