¿Cuál es la diferencia entre hardware, firmware y software?

Todo el mundo ha oído hablar de los términos hardware y software informático: el hardware son las cosas físicas en las que ejecutamos los programas, y el software son los propios programas.

El hardware es "duro" porque es difícil de cambiar - para hacer un cambio en el diseño de un circuito normalmente se requiere un nuevo diseño de una placa de circuito impreso (PCB), la fabricación de la placa, el montaje de todas las piezas en la nueva placa, y las pruebas antes de que cualquier programa pueda ejecutarse en él.

El término software fue acuñado 1953 por Paul Niquette, y utilizado por primera vez en la impresión por John Tukey en 1958. (Tukey también inventó la palabra "bit" para designar un dígito binario.)

El software es "blando" porque se pueden hacer algunos cambios en un programa informático, que en la época de Niquette y Tukey significaban cambios en una baraja de tarjetas perforadas, y volver a ejecutar el programa sin tener que hacer ningún cambio en el ordenador. (En los años 40, ordenadores como Colossus y ENAIAC se reprogramaban cambiando el cableado del ordenador mediante interruptores y enchufes.)

Hoy en día, el software se asocia a programas que se almacenan en algún medio de almacenamiento masivo, como un disco duro o SSD, y que luego se cargan en la memoria RAM para ser ejecutados. También podría aplicarse a las apps que se descargan de la Nube y luego se almacenan en tu smartphone o tablet en la memoria Flash, y de nuevo se descargan en la RAM para ser ejecutadas.

En 1971, se inventó el primer microprocesador -el 4004-. Los programas se almacenaban y ejecutaban directamente desde la memoria de sólo lectura (ROM) en lugar de cargarse desde otro medio. Al principio, la única forma de cambiar el programa era crear un nuevo conjunto de máscaras para el chip de la ROM. Más tarde se inventaron las ROMs programables, llamadas PROMs, seguidas de las ROMs programables borrables (EPROMs) que utilizaban luz ultravioleta, y finalmente las ROMs programables eléctricamente borrables (EEPROMs), que están relacionadas con las memorias Flash actuales.

Los microcontroladores integrados que utilizan memoria Flash para mantener sus programas pueden actualizarse en el lugar utilizando lo que se llama programación en serie en circuito (ICSP). Los programas se llaman firmware porque es más fácil de actualizar que hacer cambios en el hardware, pero no es tan fácil como cargar un programa desde un disco duro, y los programas no son volátiles.

main-qimg-13c905691c8de1eab5b877c823a714e3

Actualización del firmware en una placa de desarrollo mediante ICSP

Ascher Opler acuñó el término "firmware" en un artículo de Datamation de 1967. Originalmente, significaba el contenido de un almacén de control escribible (una pequeña memoria especializada de alta velocidad), que contenía microcódigo que definía e implementaba el conjunto de instrucciones del ordenador. No se componía de instrucciones de máquina de la CPU, sino de microcódigo de nivel inferior que participaba en la implementación de las instrucciones de máquina.

Sólo después de la invención del microprocesador (y más tarde del microcontrolador) se empezó a asociar el firmware con los programas que se ejecutaban en estos dispositivos

En un PC de sobremesa o portátil, que ejecuta software de un disco duro o SSD, etc., todavía hay un poco de firmware situado en la BIOS del ordenador, que se encarga del proceso de arranque de la máquina, cargando el sistema operativo en la RAM y cediéndole el control.