¿Qué es firmware? ¿Por qué está en todos los dispositivos electrónicos?
El firmware es un término que muchos confunden o que desconocen totalmente su significado. Por ese motivo, en este artículo podrás conocer más de cerca todo lo que significa este código de bajo nivel, además de comprender para qué sirve, por qué es importante actualizarlo, en qué dispositivos de hardware está presente, etc.
Índice de contenidos
¿Qué es el firmware?
El firmware es algo intermedio entre el software y el hardware. Algunos lo incluyen como un software especial, otros lo incluyen dentro de lo que es el hardware. Se trata de algo intermedio, como he dicho, es decir, un código con rutinas elementales o programa simple a muy bajo nivel que se almacena en una memoria no volátil (EERPOM, flash…) y que sirve para que el hardware pueda realizar todas las funciones para las que ha sido diseñado.
Actualmente, el firmware se ha acercado o integrado a los drivers o controladores, que suelen incluir éste para que sea más sencilla su actualización y gestión por parte del usuario. Además, así implica menos riesgos a la hora de modificarlo que cuando se graba directamente sobre el hardware en el momento de la fabricación.
Parece ser que el informático estadounidense Ascher Opler acuñó la frase firmware en una edición de 1967 de la publicación Datamation . Usó el término para describir un tipo de microprograma entre hardware y software. Su nombre proviene de firm o firma
Como sabes, este firmware está presente en muchos dispositivos de hardware, como dispositivos móviles, dispositivos IoT, CPU, tarjetas gráficas, unidades ópticas, routers, NAS, periféricos, etc. Ya analizaremos sus usos más adelante, pero es importante que comprendas su importancia para que todo funcione como es debido, ya que sin él no sería posible.
Como se puede apreciar en la anterior imagen, el firmware es una capa más que se encontraría entre los drivers o controladores del dispositivo y el hardware. No obstante, es importante destacar lo que ya he comentado anteriormente, y es que mucho firmware actual se implementa dentro de los propios controladores o módulos del kernel para que sea más sencillo su actualización. Aunque bien es cierto que durante el arranque suele cargarse en la memoria de hardware para que el dispositivo en cuestión pueda funcionar.
Diferencias firmware vs driver
Existen diferencias notables entre un driver o controlador y el firmware. Aunque en algunos casos la diferencia parece diluirse y al descargar los controladores también estás descargando el firmware, lo cierto es que hay diferencias notables:
El firmware es una rutina o programa de bajo nivel que opera para un hardware concreto además de proveer una API/ABI para el alto nivel, es decir, para los drivers.
Los drivers o controladores proveen un medio o interfaz para que el sistema operativo pueda usar esa API/ABI expuesta por el firmware.
Un controlador o driver de un dispositivo es un software de alto nivel que permite al sistema operativo comunicarse con los dispositivos o hardware y gestionar sus recursos.
El firmware es un programa especial dentro del dispositivo que permite realizar las funciones del hardware de E/S, etc. Suelen estar cargados en una memoria no volátil como una EEPROM o flash.
Los controladores o drivers son específicos del sistema operativo y dependientes del hardware.
El firmware es independiente del sistema operativo, así como está estrechamente relacionado con el hardware.
Diferencia entre firmware y software
Como he comentado anteriormente, algunos consideran al firmware como un tipo de software más, pero es diferente. Para diferenciar entre el software convencional y el firmware de más bajo nivel, podemos analizar estas afirmaciones:
Firmware es un código muy elemental, tan solo unas rutinas o programa con instrucciones básicas a bajo nivel para que el hardware funcione y se pueda comunicar con el resto del software. No obstante, existe firmware más complejo como puede ser el BIOS/UEFI.
El control que hace el firmware es a bajo nivel, justo controlando las funciones elementales del hardware.
El software está diseñado para que los usuarios interactúen con él de forma sencilla. Y puede tener muy diversas funciones.
El firmware es algo mucho más concreto y, generalmente, oculto al usuario.
El software es de más alto nivel.
El firmware es de bajo nivel, casi trabajando de forma íntima con el hardware.
Un software se puede cambiar sin tener que reemplazar un componente de hardware.
El firmware no se puede reemplazar en muchos casos sin sustituir el hardware al que acompaña. Solo se puede actualizar en algunos casos en los que esto esté permitido.
El firmware se integra en chips de memoria no volátil o se carga en el dispositivo de hardware durante el arranque.
El software no está integrado en ningún componente de hardware. Solo se aloja en la unidad de almacenamiento secundario y se cargará en la memoria RAM para ser ejecutado cuando sea necesario y el kernel del sistema operativo necesite ejecutar dicho proceso.
Tipos de firmware
Existen varios tipos de firmware que se pueden encontrar en diferentes dispositivos de hardware. No todo el firmware es igual, y hay que diferenciar entre:
De bajo nivel: es una parte intrínseca o inseparable del hardware. A menudo se almacena en chips de memoria no volátiles, es decir, memorias de solo lectura como una ROM y, por lo tanto, no se puede reescribir ni actualizar. Dicho de otro modo, el firmware de bajo nivel tienen memoria programable de una sola vez, se programa tras su fabricación y permanece inalterable durante la vida útil del dispositivo.
De alto nivel: este firmware permite actualizaciones y generalmente es más complejo que el firmware de bajo nivel. Este tipo de firmware de alto nivel reside en chips de memoria flash, por lo que se puede flashear, como ocurre con un BIOS/UEFI.
Del subsistema: viene como parte de un sistema integrado. Es comparable al firmware de alto nivel en que puede actualizarse y es más complejo que el firmware de bajo nivel, aunque suele serlo menos que el de alto nivel. Por ejemplo, como el ACPI que gestiona la energía.
Aplicaciones de firmware
Como puedes imaginar, existen varias aplicaciones del firmware que usas a diario sin darte cuenta de que ese código o rutinas están ahí, ya que funciona de forma totalmente transparente. Los casos más conocidos son:
Computadores: puede ser el propio BIOS o UEFI, viene integrado en un pequeño chip de memoria flash en la placa base y se encarga de comprobar el funcionamiento de los componentes y periféricos durante el arranque y de realizar toda la rutina para que el arranque del equipo sea posible, incluyendo la carga del Sistema operativo buscándolo entre los diferentes medios de almacenamiento. Los periféricos, como las tarjetas gráficas, routers, unidades ópticas, impresoras, webcam, lector de tarjetas, ratón, teclado, etc., también contienen su propio firmware. Incluso la CPU tiene su firmware o microcódigo incluido dentro del propio chip de la CPU o en el BIOS/UEFI. Por otro lado, muchas unidades de almacenamiento, ya sean internas o externas contienen también firmware. Como sabes, los discos duros o SSD lo tienen, también los pendrivers o unidades USB, los NAS, etc.
Dispositivos móviles: estos, como pequeñas computadoras que son, también contienen su firmware que permite que el hardware funcione de forma correcta. En este caso, se suele actualizar con el propio sistema operativo, como cuando llegan actualizaciones por OTA para Android o para iOS. Y puede haber en varias de las partes que componen estos dispositivos móviles, como en los controladores de la pantalla, de la unidad de almacenamiento flash, en el lector de tarjetas, en el SoC, etc.
Otros: también está presente en otros muchos equipos y tecnologías que usamos de forma cotidiana en el día a día y que ni se te había pasado por la cabeza que podían contener firmware, además de hardware y software. Por ejemplo:
Vehículos: contienen muchos sistemas integrados, sensores y pequeñas computadoras que contienen firmware que les permite realizar sus tareas designadas.
Electrodomésticos: los lavavajillas, las lavadoras, pequeños electrodomésticos, robots de cocina o aspiradores, televisores, etc., se encuentran entre los electrodomésticos que contienen firmware. El firmware ayuda a la máquina a comunicarse con la computadora utilizada para configurar los ajustes de la máquina y controlar su funcionamiento.
Tarjetas inteligentes: muchas tarjetas inteligentes tienen instrucciones integradas en un chip que proporciona la funcionalidad básica de la tarjeta, así como la autenticación y el cifrado.
Es decir, el firmware está presente en muchos dispositivos con electrónica y es fundamental para su buen funcionamiento. Sin él no se podrían utilizar…
¿Qué es una actualización del firmware?
Por supuesto, actualizar el firmware es tan vital como actualizar el software, e incluso más importante en algunos casos. De ello dependerá el buen funcionamiento de los dispositivos de hardware que empleas en casa.
Salvo excepciones, el firmware de los dispositivos se suele actualizar junto con las actualizaciones del propio sistema operativo o con los propios drivers o controladores. Solo en algunos casos eso no es así, y hay que hacerlo de forma independiente, como por ejemplo en el caso del BIOS/UEFI, que se actualiza por separado.
Las actualizaciones de firmware pueden ocurrir de forma esporádica, como una vez cada ciertos años, o con mayor frecuencia. En algunos casos no se actualiza el firmware, ya sea porque es perfecto o porque el desarrollador no se toma las molestias para actualizarlo. Por esto, te recomiendo siempre elegir los fabricantes más populares y con mayor frecuencia de actualización del firmware para evitar problemas…
¿Por qué necesita una actualización de firmware?
Las actualizaciones de firmware son vitales, como he comentado anteriormente, y es que sin ellas se podrían crear serios problemas en el hardware. Por ejemplo, las actualizaciones pueden:
Solucionar problemas o errores que afecten al funcionamiento del hardware.
Pueden agregar soporte o compatibilidad para otros dispositivos relacionados.
Parchear vulnerabilidades que afectan a la seguridad y pueden aprovecharse para realizar ataques.
Agregar nuevas funciones al dispositivo de las que carecía antes de la actualización, aunque para ello es necesario que el hardware sea capaz de llevarlas a cabo.
Mejorar el rendimiento. Muchas veces se optimizan para mejorar la velocidad. Por ejemplo, en los routers se pueden ver mejoras de la velocidad o cobertura, en las GPUs se optimizan para mejorar el comportamiento, etc.
Por esto, es importante que no descuides tu firmware y que hagas una revisión de vez en cuando para saber si hay actualizaciones disponibles. Si las hay, es recomendable actualizar. Solo en el caso del BIOS/UEFI de la placa base, puede que no necesites actualización en muchos casos…
Consejos sobre el firmware
Para terminar, me gustaría dar algunos consejos para actualizar el firmware con seguridad:
Comprueba siempre la versión de firmware que está actualmente instalada para ver si existe una versión posterior para actualizar.
Sigue siempre las indicaciones del fabricante para actualizar el firmware.
No descargues el firmware desde sitios de terceros, ya que podría estar modificado o infestado. Siempre hazlo desde la página web oficial del fabricante de hardware. Por ejemplo, puedes encontrar actualizaciones para el BIOS/UEFI en la web del fabricante del equipo OEM o de la placa base.
Las actualizaciones que llegan con las del propio sistema operativo también son una fuente fiable.
Mantén el equipo siempre enchufado (mejor si hay un SAI) o con batería suficiente para evitar cortes mientras se está actualizando el firmware.