¿Qué es el software embebido?

«¿Qué es el software embebido?» es una pregunta frecuente. El mundo y la sociedad que nos rodea están formados y gobernados por sistemas basados en microprocesadores: marcapasos, teléfonos móviles, electrodomésticos, coches, sistemas de control ferroviario, satélites… la lista es casi literalmente interminable. Sin ellos, no habría energía, agua corriente o suministro de alimentos. Los negocios o el transporte serían imposibles. Las enfermedades se extenderían y la sociedad se desintegraría rápidamente.

El software que se ejecuta en esos sistemas se denomina software integrado. Se trata de software informático que se incorpora a sistemas de hardware escritos para controlar máquinas o dispositivos. El software integrado suele estar diseñado para el hardware concreto en el que se ejecuta y a menudo realiza una función específica, aunque una sola pieza de hardware puede contener varios programas de software integrado.

Cualquier pieza de tecnología que tenga placas de circuitos y chips de ordenador probablemente tendrá software integrado en su interior. Los fabricantes incorporan software integrado en los componentes electrónicos de coches, teléfonos, módems, electrodomésticos, juguetes, sistemas de seguridad, marcapasos, televisores y decodificadores, y relojes digitales, por ejemplo.

El software integrado permite muchas de las funciones avanzadas que son comunes en los dispositivos modernos. Aunque el software embebido puede ser muy sencillo, también puede ser muy sofisticado en aplicaciones como los sistemas de control de procesos, el armamento militar y los aviones.

Historia del software embebido

La mayoría de las tecnologías innovadoras suelen financiarse, investigarse y desarrollarse para aplicaciones militares y los sistemas embebidos se utilizaron en la exploración espacial, el guiado de misiles y la aviónica desde finales de los años 30 hasta mediados de los 60. No fue hasta finales de los años 60 cuando el software integrado evolucionó hasta el punto de ser útil para personas ajenas a estas áreas de especialización.

En los años 70, los primeros chips de microcontroladores integrados, como el Intel 8008, hicieron despegar el software integrado. Este único chip actuaba como un pequeño ordenador; podía leer datos del mundo real, procesarlos y generar salidas, controladas por un programa de software flexible. Con estos chips, era posible escribir un único programa, cargarlo en el chip y hacer que éste ejecutara su programa siempre que recibiera la entrada correcta. A finales de la década de 1980, casi todos los aparatos electrónicos de consumo llevaban incorporado algún tipo de chip microcontrolador.

En los años siguientes, el coste de producción de los microcontroladores integrados se ha reducido a céntimos. Como resultado, están en casi todos los dispositivos electrónicos, y cada uno de estos chips tiene una o más piezas de software integrado. Están incluso en artículos que la mayoría de la gente no pensaría que tienen ordenadores, como tostadoras, ventiladores eléctricos o juguetes para niños.

Los retos del software integrado

El software integrado forma parte, por definición, de un sistema de hardware mayor, ya sea un coche, un marcapasos o un sistema de automatización industrial. Estos sistemas no sólo funcionan en tiempo real y tienen que producir la acción diseñada dentro de un tiempo especificado en todas las circunstancias, sino que deben funcionar con recursos limitados, como un espacio de memoria reducido, una capacidad de procesamiento de datos limitada o un bajo consumo de energía. Además, el software integrado debe adaptarse a una amplia gama de cambios en su entorno. Los procesadores, los sensores y las piezas de hardware cambian con el tiempo, mientras que el software permanece prácticamente igual. Además, el software requiere portabilidad, autonomía, flexibilidad y adaptabilidad.

La fiabilidad es primordial. Un comportamiento inesperado de un sistema embebido podría dañar seriamente su entorno operativo. Dado que los usuarios finales exigen comportamientos a largo plazo de los sistemas embebidos, el software embebido debe funcionar durante décadas sin necesidad de servicio.

Debido a la estrecha asociación del software embebido con entornos críticos y riesgos que amenazan la vida, la seguridad es también un requisito clave. El ciclo de vida del desarrollo de software embebido se rige por normas que exigen procesos de ingeniería y gestión de gran calidad y solidez. La combinación de todo esto con el uso de tecnologías de última generación exige una gran experiencia técnica y profesionalidad a los ingenieros de software embebido. A medida que aumenta el tamaño y la complejidad del software embebido, las normas aplicadas al proceso de desarrollo de software deben mejorar continuamente a pesar de las fuertes presiones de costes.

La seguridad es cada vez más importante a medida que el «Internet de las cosas» hace que los sistemas embebidos se utilicen más y estén más interconectados entre sí. A medida que dispositivos cotidianos como lavadoras y frigoríficos incluyen la conectividad como una característica estándar, el Internet de las cosas corre el riesgo de exponer nuevos niveles de inseguridad y se necesitan nuevas ideas para ayudar a frustrar las amenazas de malware y piratería informática.

Conclusión

El software embebido aumenta la variabilidad, la configurabilidad, la extensibilidad y la capacidad de cambio de los productos cotidianos y también permite una mayor variedad de funcionalidades. Ahora es una parte fundamental de muchas cosas que damos por sentadas en la vida cotidiana.

En el futuro, el software embebido estará en todo: su hogar automatizado, su coche inteligente, las infraestructuras de comunicación, los instrumentos e implantes médicos y los sistemas de control ubicuos. Las nuevas tecnologías relacionadas con la energía aumentarán la eficiencia de la transmisión de la corriente eléctrica y proporcionarán formas inmediatas y eficaces de abordar las demandas energéticas y climáticas.

Los sistemas embebidos ya no se definirán por el hardware informático que utilicen. Más bien, se diseñarán para realizar cualquier función con el fin de lograr objetivos múltiples y cambiantes, ya sea en un microcontrolador, un microprocesador, un procesador de señales, un conjunto biológico o cualquier otro dispositivo lógico programable.

Cuanta más calidad de vida deseemos, más alto sea el nivel de vida que queramos establecer en todo el planeta y más exijamos seguridad y protección, más necesitaremos el software integrado.