Muchas veces los diferentes componentes y periféricos de nuestro ordenador requieren una actualización de lo que llamamos el firmware. Ya sea para solucionar ciertos bugs y errores que tiene dicha pieza de hardware o para añadir nuevas capacidades antes no existentes. ¿Cómo funciona el proceso de actualizar el firmware?
Antes de nada hemos de aclarar que una actualización del firmware no equivale a una actualización de los drivers, ya que mientras que el controlador que instalamos en el PC les sirve a las aplicaciones para comunicarse con los diferentes componentes y dispositivos. El firmware, en cambio, le indica cómo ha de funcionar en todo momento.
No hay que olvidar que muchos dispositivos contienen un microcontrolador para su gestión, lo que podemos considerar un ordenador por sí mismo. El cual ejecuta de manera recursiva un programa que se encuentra en su interior donde se encuentra cómo ha de hacer las cosas y cuando. Estos procesadores que se encuentran en las diferentes piezas de hardware no interactúan, por tanto, en su funcionamiento con la CPU y el resto del sistema de cara a la comunicación, pero sí que son esenciales de cara a acceder a todas las capacidades de nuestro hardware.
¿Qué ventajas tiene actualizar el firmware a un componente?
Supongamos que tenemos un monitor con soporte HDMI 2.1 que no es completo, el fabricante ha decidido no incluir funciones como el VRR en su interior y el ancho de banda que soporta es de menos de 48 Gbps. Un día a través de una actualización de firmware tenemos acceso a esas características sin tener que comprarnos un nuevo modelo.
Actualizar un firmware también puede afectar positivamente a una CPU, ya que su unidad de control e incluso el controlador de memoria son microcontroladores por sí mismo que tienen un firmware concreto. Nos podemos encontrar con aumento de rendimiento en ciertas instrucciones o soporte para memoria más rápido gracias a actualizar el firmware del procesador. Sin embargo, también se pueden llegar a recortar capacidades del mismo, ya sea por motivos de seguridad o por el hecho que hay una característica que entra en conflicto con otros productos de la misma empresa.
Ventaja económica
Aunque su mayor ventaja está en el hecho de que poder realizar una actualización del firmware nos supone a nosotros y al fabricante no tener que realizar reemplazos y reparaciones para solucionar ciertos problemas que afectan a nuestro hardware. Por lo que ahorra grandes dolores de cabeza para ambos lados, ya que nos evita tener que enviar el dispositivo en garantía y al fabricante tener que gestionar una compleja logística de envíos y devoluciones, así como tener que parar la producción.
En todo caso, actualizar el Firmware no le da capacidades más allá de las que puede ejecutar el hardware por sí mismo, sino que lo que hace es optimizar el funcionamiento de sus funciones para hacerlo más eficiente y bloquear o desbloquear funciones del mismo. Tampoco podemos olvidar que el proceso también puede suponer solventar errores de anteriores versiones del mismo.
¿Cómo funciona el actualizar un firmware?
Hay dos formas en la que un fabricante puede actualizar el Firmware de su hardware, las cuales dependen del tipo de memoria utilizado para almacenar el firmware, ya que no todos los fabricantes quieren que los usuarios tengan un fácil acceso a su contenido.
Uso de una ROM programable
En algunos casos este se encuentra en una EEPROM, cuyo contenido solo puede ser modificado por el fabricante haciendo uso de herramientas especializadas o reemplazando el chip que la contiene por otro del mismo tipo, pero que almacene una versión actualizada, siendo el caso por ejemplo de las tarjetas gráficas en PC.
Cómo su nombre indica una ROM es solo de lectura y su contenido no lo podemos reemplazar por otro, además, en muchos casos, son piezas lo suficientemente pequeñas como para quien no tenga conocimientos de manipulación de piezas electrónicas de pequeño tamaño se vea con problemas para manejarlas. Es más, muchas veces su montaje en fábrica ha sido realizado por un robot de alta precisión.
A través de memoria Flash interna
En cambio, la mayoría del hardware suelen incluir el contenido del firmware en una RAM no volátil o memoria Flash que se encuentra dentro del propio microcontrolador incluido en el dispositivo. Lo que nos indica que el usuario no necesita manipular el hardware para actualizar el firmware.
Dispositivos con acceso directo a la RAM
Si hablamos de un dispositivo que tiene acceso directo a la RAM, ya sea la CPU, el chipset de la placa base o un dispositivo PCI Express, entonces la actualización se efectúa obviamente a través de la unidad DMA incluida en el componente a actualizar. No olvidemos que una unidad DMA lo que hace es darle acceso a la RAM a un dispositivo externo a base de bloquear temporalmente el acceso al IMC del resto de componentes para poder copiar el contenido de una memoria física a otra. En este caso hacía la memoria que almacena el firmware dentro del controlador.
Las direcciones de memoria que se utilizan en concreto para actualizar el firmware no son conocidas por el usuario, pero si por el componente en concreto y se realizan de manera totalmente transparente al sistema operativo. Simplemente, el componente a actualizar mira esa parte de la RAM de manera periódica y almacena la información. En muchos casos, la memoria flash suele incluir espacio para dos Firmware, uno para la versión actual y otro para la actualización. ¿El motivo? Sencillo, por si la actualización está rota y da errores graves de funcionamiento, poder volver a la anterior.
Componentes sin acceso directo a la memoria RAM
En cambió para los periféricos que se conectan a través de USB u otros puertos que no tienen acceso directo a la memoria y dependen del IOMMU simplemente reciben la actualización del firmware de manera directa, por lo que no existe una unidad DMA por el medio ejecutando el proceso.
Por ejemplo, un ratón o un teclado que son periféricos de entrada y no de salida, pero la interfaz que utilizan es bidireccional. Por lo que solo es necesario enviarles datos para actualizar el firmware de los mismos o incluso que almacenen cierta información como las macros de las teclas o los botones.