Firmware


Firmware

A la actualización del programa principal de un sistema microprogramable embebido (que gobierna y forma parte integral de un sistema electrónico) se le denomina actualización del firmware.

El firmware o programación en firme, es un bloque de instrucciones de programa para propósitos específicos, grabado en una memoria de tipo no volátil (ROM, EEPROM, flash,...), que establece la lógica de más bajo nivel que controla los circuitos electrónicos de un dispositivo de cualquier tipo. Al estar integrado en la electrónica del dispositivo es en parte hardware, pero también es software, ya que proporciona lógica y se dispone en algún tipo de lenguaje de programación. Funcionalmente, el firmware es el intermediario (interfaz) entre las órdenes externas que recibe el dispositivo y su electrónica, ya que es el encargado de controlar a ésta última para ejecutar correctamente dichas órdenes externas.

El término firmware ha evolucionado popularmente para significar casi cualquier contenido programable de un dispositivo hardware residente en una memoria no volatil, no sólo código máquina para dispositivos de lógica programable, cargadores de arranque (bootloader), o aplicaciones especializadas, sino también configuraciones y datos para los circuitos integrados tipo PLD o para aplicaciones específicas (ASICs). Un ejemplo de ASIC sería un c.i. que encarga una compañía a un fabricante de semiconductores para crear un decodificador de audio para sus reproductores MP3. Ver Dispositivos PLD y ASIC

El firmware, como antes se indicó al hablar del bootloader, reside en memorias no volátiles. Si no es actualizable estará en memorias o c.i.s de sólo lectura. Si es actualizable sólo se escribe en ellas para actualizar la versión de su contenido. En este caso suelen utilizarse memorias de tipo flash, independientes o formando parte de un c.i. con mas elementos.
Actualización del firmware

Existe una gran cantidad de dispositivos electrónicos que cuentan con un firmware actualizable. En primer lugar pueden actualizarse en producción, esto garantiza que los dispositivos se colocan en el mercado con la última versión disponible, posteriormente pueden actualizarse por medio de un servicio técnico o incluso por el usuario final.

Hasta mediados de los años 1990 el procedimiento típico para actualizar un firmware a una nueva versión era reemplazar el medio de almacenamiento que contenía el firmware, usualmente un chip de memoria ROM o EPROM enchufado en un zócalo. Hoy en día este procedimiento no es habitual ya que los fabricantes han añadido un bootloader que permite grabar las nuevas instrucciones en la misma memoria, de tipo flash, haciendo de la actualización un proceso mucho más cómodo y dinámico.

Dependiendo del equipo puede necesitarse un PC para la actualización y una conexión a través de un puerto serie, RS232 o USB. En otros casos puede actualizarse a través de una conexión de red, por cable o inalámbrica, incluso utilizándo servidores en Internet. En otros casos el dispositivo puede contar con un puerto USB HOST y la actualización del firmware realizarse a través de un pendrive.

Aún así el proceso de actualización de un firmware hay que realizarlo con mucho cuidado, ya que al ser un componente vital, cualquier fallo puede dejar al sistema inservible. Por ejemplo, un fallo de alimentación a mitad del proceso de actualización impediría la carga completa del código que gobierna el sistema, quizá incluso la carga de una modificación del bootloader que contiene el código que se encarga de actualizar el firmware, así que no podríamos actualizarlo de nuevo ni el sistema podría arrancar, debido a una corrupción del código del bootloader. Por lo tanto el sistema no volvería a funcionar. La única solución sería reprogramar la memoria con el bootloader mediante un programador hardware, lo que puede complicarse si el circuito integrado es de tipo SMD y está soldado a la PCB.

Ejemplos de firmware


Encontramos firmware en memorias no volátiles de sistemas de diversos dispositivos periféricos de un ordenador, como en monitores de video, unidades de disco, impresoras, etc., pero también en los propios microprocesadores, c.i.s de memoria principal y en general en cualquier circuito integrado.

El programa BIOS de un PC es un firmware cuyo propósito es activar la máquina desde su encendido y preparar el entorno para la instalación o ejecución de un sistema operativo complejo, así como responder a otros eventos externos (como por ejemplo el teclado) y al intercambio de órdenes entre distintos componentes del ordenador.

Relación de ejemplos:



  • Sistemas de control domésticos de "línea blanca" como una lavadora, un microondas, un frigorífico, un lavavajillas o industriales como un autómata programable o un regulador de velocidad de un motor eléctrico.
  • Sistemas de control domésticos de "línea marrón ", como el control de sonido, video y lista de canales en televisores modernos, TDTs, reproductores DVD y HD, equipos de música (control y c.i.s procesadores digitales de audio) ,videoconsolas, cámaras fotográficas o de video, etc.
  • En ordenadores: BIOS de PCs, EFI de máquinas Mac OS X basadas en Intel, Open Firmware, usado por ordenadores de Sun Microsystems, ARCS, usado en ordenadores de Silicon Graphics, etc.
  • Reproductores de música portátiles (MP3). Las actualizaciones del firmware agregan incluso nuevos formatos de archivos de reproducción de sonido (codecs) actualizaciones del GUI e incluso de la vida de la batería.
  • Teléfonos móviles. La mayoría de los teléfonos móviles tienen un firmware actualizable. Pueden incluso ser actualizados para mejorar la recepción o la calidad de sonido. La mayoria de las grandes empresas brindan programas gratuitos para la actualización del firmware por partel del cliente final.
  • Automóviles. Desde 1996 la mayoría de los automóviles han empleado un ordenador de a bordo y varios sensores para detectar problemas mecánicos. Los vehículos modernos emplean sistemas controlados por microprocesador, por ejemplo para el ABS o los sistemas de control del motor, de la transmisión, etc. El conductor puede también recibir información mientras conduce, como por ejemplo lecturas en tiempo real de la economía del combustible y de la presión de los neumáticos. La mayoría del firmware del vehículo puede ser actualizado en un distribuidor local autorizado.
  • Dispositivos de electrónica de red, como router o puntos de acceso WiFi.

Cuando tengamos la posibilidad de actualizar un firmware, aunque sea una versión oficial, por ejemplo en un móvil, antes de realizar cualquier modificación en el equipo, es importante verificar que no se viole la garantía del fabricante o derechos de autor.


Hackeando el firmware
A veces una nueva o modificada versión no oficial de un firmware es creada por terceros para proporcionar nuevas características o para abrir funcionalidades ocultas o restringidas. Se hace con reproductores de audio digital, cámaras digitales, enrutadores inalámbricos (por ejemplo para que emitan con mas potencia), consolas de videojuegos, receptores de TDT, decodificadores de televisión, motores de auromóviles (saltanso por ejemplo límites de potencia a costa de mayores consumos o el incumplimiento de la normativa sobre emisión de gases), etc. Hay que tener en cuenta que en la mayoría de los casos esta "actualización" puede vulnerar derechos y ser ilegal.

Muchos de los firmwares almacenados en memoria no volatil están protegidos por derechos de autor.

No hay comentarios:

Publicar un comentario