¿Qué es un sistema embebido?

 


Oye, pero... ¿Qué es realmente un sistema embebido?

Sin duda la pregunta más recurrente para aquellos que nos hacemos llamar "desarrolladores de sistemas embebidos"

La pregunta tiene miga. No es nada fácil de responder y a mí, personalmente, todavía me sudan las manos cuando trato de dar una explicación clara y concisa a un amigo sobre qué es un sistema de estos.

Básicamente se suelen dar dos respuestas: 

1. La respuesta vaga: "Es un ordenador pequeño que forma parte de una lavadora."

2. La respuesta arrogante: "Es un sistema de computación especializado, integrado en sistemas mecánicos y/o eléctricos, capaz de relacionarse con su entorno físico y llevar a cabo el control de diferentes procesos. Dado que están destinados a realizar tareas concretas, el ingeniero optimiza el sistema para reducir tamaño y costes y aumentar el rendimiento y la fiabilidad."

Lo sé. La primera respuesta te habrá dejado indiferente, escasamente he dicho nada, en la segunda, si has leído hasta el final, enhorabuena, eres un luchador/a. Busquemos una respuesta intermedia.

 

¿Es un ordenador? 

Si y no. Depende de lo que entendamos por ordenador.

Tiene los mismos principios básicos que un ordenador al uso (ordenador de sobremesa). Es un dispositivo electrónico programable, basado en micro controlador o micro procesador,  poseen CPU (central processing unit), diferentes tipos de memoria, distintos buses de comunicaciones, se adapta a una arquitectura determinada, etc.  En este sentido realmente no hay mucha diferencia.

No obstante, mientras un ordenador de uso general (por ejemplo un ordenador portátil) está pensado para adaptarse a muchos entornos y diferentes tareas, un sistema embebido es todo lo contrario. Un sistema embebido tiene una única tarea determinada (la que sea) y para ejecutar esa tarea utilizará todos los recursos y potencia que posee.  Es decir, todo lo que un sistema embebido concreto posea (hardware y software), dependerá de la tarea para la que esté destinado.

    Ejemplo: Si la tarea es controlar la frenada de un coche para no bloquear las ruedas (ABS - Anti-Lock Braking System), el sistema embebido lo hará, y lo hará mejor que ningún ordenador de uso personal del mercado, porque para ello está especializado, esa es su tarea. Eso si, no intentes ver Netflix o conectarte al Skype desde un sistema ABS.

 

¿Por qué son sistemas tan especializados?  

Los sistemas embebidos se diseñan para llevar a cabo tareas muy concretas y a menudo se requiere de ellos un nivel de desempeño, robustez y fiabilidad muy elevado. Así, el diseño de cada uno de ellos es una tarea extremamente compleja.

Imaginemos el caso del control de los airbags de un vehículo. La eyección del airbag un instante más tarde del requerido puede suponer la muerte del pasajero. A su vez, una falsa predicción de choque y la activación de los airbags cuando realmente no se ha producido un choque, sino un bache también puede suponer la pérdida del control del coche. 

Un sistema como el control de los airbags no puede o no debe estar también pendiente, por ejemplo, del sistema antibloqueo de frenado si la acción de uno afecta el correcto desempeño del otro. Es por ello que cada uno se especializa en una tarea en concreto. 

Dado que los sistemas embebidos son sistemas destinados a cumplir una única tarea, cada tarea distinta requiere de un sistema embebido distinto. En el ejemplo del coche encontramos integrados cientos de ellos. Entre ellos están el control de los airbags, control de crucero, control de tracción, aparcamiento automático, sistema antibloqueo de frenada, control de emisiones, cambio de marcha automático, etc. por nombrar solo algunos.  


En ingeniería todo queda reducido a una sencilla expresión, coste vs rendimiento.  los sistemas embebidos no son menos. En el ejemplo anterior queda patente la necesidad de optimizar los costes para cada uno de ellos.

 

¿Qué supone la optimización en estos sistemas?

Sencillamente, la reducción de costes. Un mismo sistema embebido se puede llegar a fabricar en miles e incluso millones de unidades, por lo que una reducción mínima en el precio puede aportar enormes beneficios para la empresa. 

Así, a menudo se limita al máximo aquellos recursos del sistema que no van a ser utilizados o no son imprescindibles (CPU, memoria, buses de comunicación, periféricos, etc.). Al contrario de lo que sucede en los computadores de uso genérico en los que "más es mejor", en los sistemas embebebidos "lo suficiente es demasiado, ¡optimiza!".

En cuanto al diseño de software. La optimización está íntimamente relacionada con la reducción de recursos hardware y la imperiosa necesidad de sacar el máximo provecho de las capacidades del mismo.

Así, el programador no solo debe disponer de una amplia cartera de habilidades de desarrollo software, sino que también deberá disponer de amplios conocimientos de áreas colindantes a su especialidad como electrónica y desarrollo hardware. 

 

Un poco de historia. (Incluye dato curioso)

Los sistemas embebidos no son algo reciente. El primer sistema embebido  "moderno" fue el ordenador de navegación de la nave espacial Apollo, el Apollo Guidance Computer. Fue desarrollado a principios de los años 60 y este módulo tenía unas dimensiones de 61x32x17 cm y pesaba la friolera de 32 kg. 

 

Apolo Guidance Computer (1966)
 

A día de hoy es fácil encontrar sistemas embebidos con tamaños menores al de una moneda, capaces sin embargo de realizar cálculos infinitamente más complejos y más rápidamente que los realizados por aquel entonces en el Apollo Guidance Computer.

     Dato curioso: A pesar de sus dimensiones y la misión tan crítica que desarrolló (control de la orientación y navegación del módulo de mando y modulo lunar), hoy en día su capacidad de cálculo sería incluso menor que la de una calculadora de uso académico (la Casio de segundo de bachillerato, para entendernos). Además, para el desarrollo del software fue necesario el diseño de nuevas herramientas y técnicas desde cero. En el equipo de desarrollo software participaron cerca de 300 personas a lo largo de 7 años. En la imagen, Margaret Hamilton, directora del equipo que escribió el código de navegación del Apolo, posa con el mismo una vez impreso en papel.


Margaret Hamilton junto al código del AGC


Presente y futuro de los sistemas embebidos.

El sector de los sistemas embebidos está en auge, lleva así desde sus inicios y a día de hoy se espera que siga creciendo más rápidamente aún, influenciado por nuevas áreas tecnológicas como la inteligencia artificial (AI), realidad virtual, Internet of Things, etc. 

    En cifras: De acuerdo a un estudio publicado en 2018 por QYResearch, el mercado global para la industria de sistemas embebidos en 2017 tenía un valor de 68.9 billones de dólares. Para 2025 se espera que esa cifra ascienda hasta los 105.7 billones.

 

Conclusión

Hoy en día encontramos sistemas embebidos por todas partes. Coches, aviones, máquinas industriales, lavadoras, relojes inteligentes. La industria se mueve rápido y cada vez más aparatos incluyen alguno de estos sistemas.

Estos sistemas son extremadamente complejos y a menudo sus estándares de calidad son elevadísimos. Conocer los entresijos de los mismos no es algo que se consiga de la noche a la mañana, requiere esfuerzo y dedicación en un proceso de continuo aprendizaje. 



Comments

Popular posts from this blog

Introducción a los sistemas multitarea

Patrones software en arquitecturas orientadas a control