1 votos

¿Decisión de diseño para la carga dinámica del firmware?

He observado que algunos controladores de dispositivos en Linux tienen una dependencia del firmware del dispositivo. El firmware suele ser un binario que el controlador carga en el dispositivo (como un dongle wifi USB).

Esta pregunta se basa en la suposición de que este tipo de comportamiento del lado de Linux está dictado por el dispositivo (un dongle wifi USB) que depende de ese firmware cargado.

Mi pregunta es ¿cuáles serían los beneficios de este enfoque desde el punto de vista del fabricante del dongle?

¿Qué ventajas tiene diseñar un dispositivo que no tiene ni siquiera un mínimo de almacenamiento no volátil para mantener el firmware y necesita una cpu externa que lo cargue en cada arranque?

¿Se trata de una reducción de costes por no tener un almacenamiento mínimo no volátil para el firmware? ¿O he pasado por alto una ventaja importante?

3voto

Bartosz Radaczyński Puntos 7160

Sólo hay que mirar en /lib/firmware para los que se preguntan de qué va esto.

Estas son mis opiniones y en realidad no hay una respuesta real, todo son opiniones, tendrías que encuestar a los equipos de cada uno de estos proveedores y podrías encontrar una respuesta diferente para cada uno. No hay ninguna regla aquí.

Si ahorras en flash, el flash cuesta dinero y si puedes ahorrar en eso mejor para ti, claro que lo cambias por ram, pero creo que es un intercambio justo en cuanto a costos.

En segundo lugar, no tienes que hacer actualizaciones de campo, no tienes que hacer que el usuario descargue una actualización de firmware y posiblemente brickear el producto. Lo ideal sería que el firmware fuera lo suficientemente bueno en el lanzamiento del producto como para no necesitar nunca una actualización de campo, pero estamos en un mundo post-microsoft, reiniciar/restablecer y ver si eso lo arregla. Así que el firmware puede ser específico para el sistema operativo, ya que está vinculado al controlador para ese sistema operativo y, en segundo lugar, si / cuando las actualizaciones de software en el sistema operativo ocurren el firmware para los dispositivos integrados puede obtener un paseo libre.

En algunos casos es sólo el producto, estos productos utilizan un microcontrolador usb popular, por ejemplo, que por alguna razón se ha convertido en comúnmente utilizado en una línea de productos, o un proveedor de productos hace el diablo que conoces contra el diablo que no y se pega con esta solución.

Con los dispositivos IoT dudo que tengan un firmware a prueba de balas en el lanzamiento del producto y vendrán nuevos hacks para atacar el firmware IoT para una línea de productos por lo que tener una forma rápida y fácil de actualizar sin brickear es deseable, concedido tener un archivo en un disco duro del ordenador es otra cosa para atacar para obtener acceso a una red. Así que hay pros y contras desde el punto de vista de la seguridad.

en cuanto al controlador genérico hay que ver el sistema operativo y el producto y cómo se enumera, etc. Si mi teclado y mi dongle wifi utilizan la misma pieza, ¿cómo podría un controlador genérico distinguirlos? Si una familia de productos o suficientes dispositivos adoptan de alguna manera una enumeración/carga de firmware/reenumeración común, podría hacerlo, pero no tendría que escribir un controlador para cubrir la carga de firmware.

Una de las muchas desventajas es que puede tener que escribir un cargador para cada sistema operativo que soporte, mientras que si el firmware estuviera en la memoria flash del producto no tendría que hacerlo, depende del producto y del protocolo para el host, etc. Igualmente, el protocolo de descarga del firmware, etc. Incluso si un controlador genérico se utiliza para hacer la descarga de firmware que tiene que poner el trabajo extra en el suministro de un paquete de software específico de funcionamiento y el instalador para poner el firmware en la ubicación que el sistema operativo y el controlador de esperar con los archivos de control o entradas de registro que van junto con él, mientras que si el producto tenía el firmware en flash que es menos que tiene que hacer para que el producto funcione. También sólo funciona la primera vez que lo conectan en lugar de hacer un doble paso (hay una razón por la que algunos productos que se compran fuertemente dicen que no se conecten hasta que se instale el controlador, esta es una razón, quieren que el firmware esté listo antes de que el periférico lo quiera una vez conectado la primera vez).

no hay una respuesta correcta se trata de decisiones personales de diseño, se cambia trabajo en un lado por trabajo en otro. Puedes ahorrar potencialmente entre céntimos y dólares en el coste del producto en sí mismo, cambiando los "bits" que el usuario paga por almacenar en su disco duro. Siempre y cuando no lo cambies por facturas de soporte técnico porque no has hecho bien el diseño general del sistema.

2voto

Jacco van Dorp Puntos 521

Creo que una de las principales ventajas es que elimina la necesidad de tener que soportar y validar una (posiblemente amplia) gama de combinaciones de versiones de controlador/firmware. Es fácil imaginar una situación en la que un controlador necesita estar seguro de que el dispositivo está ejecutando una versión de firmware >= x, por lo que las opciones son, o bien pedir al usuario que actualice el firmware del dispositivo, o tener esta capacidad integrada en el controlador, y enviar una versión de firmware adecuada con el controlador. Y si el controlador necesita comprobar y posiblemente cargar el firmware cada vez, ¿por qué molestarse en almacenarlo en el dispositivo en primer lugar?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X