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

1

He observado que algunos controladores de dispositivos en Linux dependen 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 desde el lado de Linux es dictado por el dispositivo (un dongle wifi USB) que depende de la carga del firmware.

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

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

¿Se reduce la reducción de costos al no tener un almacenamiento no volátil mínimo para el firmware? ¿O he pasado por alto un beneficio importante?

    

2 respuestas

3

solo mire / lib / firmware para la gente que se pregunta de qué se trata.

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

Sí, ahorras en flash, flash cuesta dinero y si puedes ahorrar más para ti, asegúrate de canjearlo por ram, pero creo que es un costo de comercio justo.

En segundo lugar, no tiene que hacer actualizaciones de campo, no necesita que el usuario descargue una actualización de firmware y, posiblemente, bloquee el producto. Idealmente, su firmware debería ser lo suficientemente bueno en el lanzamiento del producto para no necesitar nunca una actualización de campo, pero estamos en un post microsoft, reiniciar / reiniciar y ver si eso lo arregla todo el mundo. Por lo tanto, 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 las actualizaciones de software en el sistema operativo ocurren, el firmware para los dispositivos incorporados puede obtener un viaje gratis.

En algunos casos, es solo el producto que utilizan un popular microcontrolador usb, por ejemplo, que por alguna razón se usa comúnmente en una línea de productos, o un proveedor de productos hace el diablo que conoce contra el diablo con el que no se atasca esta solución.

Con los dispositivos de IoT dudo que tengan un firmware a prueba de balas en la versión del producto y vendrán nuevos ataques para atacar el firmware de IoT para una línea de productos, por lo que es deseable tener una forma rápida y fácil de actualizar sin bricking. un disco duro de computadora es otra cosa que atacar para obtener acceso a una red. Así que hay ventajas y desventajas desde una perspectiva de seguridad.

En cuanto al controlador genérico, debe ver el sistema operativo y el producto y cómo se enumera, etc. Si mi teclado y el dongle wifi usaron la misma parte, ¿cómo los separaría un controlador genérico? Si una familia de productos o suficientes dispositivos adoptan de alguna manera una enumeración / carga de firmware / reenumeración comunes, es posible que no tenga que escribir un controlador para cubrir la carga de firmware. Realmente es una cosa de implementación, por lo tanto, el sistema operativo y la versión específica.

Uno de los muchos inconvenientes aquí es que es posible que tenga que escribir un cargador para cada sistema operativo que admita, donde si el firmware estuviera en flash en el producto, tal vez no tenga que hacerlo, depende del producto y el protocolo del host. Del mismo modo, el protocolo de descarga de firmware, etc. Incluso si se usó un controlador genérico para realizar la descarga de firmware, tiene que hacer un esfuerzo adicional para proporcionar un paquete de software operativo específico e instalador para colocar el firmware en la ubicación donde se encuentran el sistema operativo y el controlador. cuente con los archivos de control o las entradas de registro que lo acompañan, donde si el producto tuviera un firmware en flash, tendrá que hacer menos para que el producto funcione. También funciona la primera vez que lo conectan en lugar de hacerlo en dos pasos (hay una razón por la que algunos productos que compra fuertemente dicen que no se conecte hasta que instale el controlador, esta es una razón, quieren que el firmware esté listo antes) el periférico lo quiere una vez enchufado la primera vez).

no hay una respuesta correcta, son decisiones de diseño personales, intercambias trabajo por un lado por trabajo por otro. Potencialmente, puede ahorrar entre un centavo y un dólar el costo del producto, intercambiándolo por "bits" que el usuario paga por almacenar en su disco duro. Siempre y cuando no intercambies eso por facturas de soporte técnico porque no obtuviste el diseño general correcto del sistema.

    
respondido por el old_timer
2

Creo que un beneficio principal es que elimina la necesidad de tener que admitir y validar un rango (posiblemente grande) de combinaciones de versión de controlador / firmware. Es fácil imaginar una situación en la que un controlador debe asegurarse de que el dispositivo esté ejecutando una versión de firmware > = x, por lo tanto, sus opciones son para pedirle al usuario que actualice el firmware del dispositivo o tener esta capacidad incorporada en el controlador. y envíe una versión de firmware adecuada con el controlador. Y si el controlador necesita verificar y posiblemente cargar el firmware cada vez, ¿para qué molestarse en almacenarlo en el dispositivo en primer lugar?

    
respondido por el Nate Strickland

Lea otras preguntas en las etiquetas