Los sistemas empotrados son sistemas informaticos dedicados a aplicaciones de control. A menudo se piensa en ellos como sistemas cerrados, que carecen o tienen un interface con el usuario muy limitado, y su funcion exclusiva es controlar un proceso.
Esta definicion atendiendo al interface
no es muy acertada, siendo preferible destacar la idea de que son computadores
cuyo objetivo principal del diseño es ejecutar tareas de control.
Podemos tomar como ejemplo el control
de un ascensor con un interface muy simple y limitado: los botones. Pero
tambien podemos hablar de modernos controladores que disponen de un servidor
Web para su gestion. Ambos son sistemas empotrados.
Además del control de procesos, también se utilizan en comunicaciones y monitorización. En comunicaciones, los sistemas empotrados se comienzan a utilizar a finales de los años 60 para controlar conmutadores electro-mecánicos. A estos sistemas se les llamaba "Sistemas de Control mediante Programa Almacenado" ( Stored Program Control Systems ). Contenían:
Inicalmente el diseño global de un sistema empotrado estaba muy ligado a la aplicación concreta que se queria dar, pero esto cambio con la aparición de los microprocesadores, elementos funcionales de bajo coste, que proporcionan una arquitectura hardware basada en:
En el desarrollo de aquellos primeros sistemas, las herramientas de desarrollo disponibles eran extremadamente sencillas. Habia una carencia de compiladores adecuados para lenguajes de alto nivel, asi como de herramientas para la depuración. El software necesario para un proyecto era normalmente:
Hasta finales de los años
70 no se consolido la idea de crear librerias estandarizadas de software
reutilizable y de desarrollar herramientas para asistir a los diseñadores
del software. Comenzaron así a aparecer sistemas operativos para
sistemas empotrados, pero normalmente escritos en ensamblador y por tanto
no portables.
La principal pega de estos sistemas radica en que cuando un microprocesador
queda obsoleto, también lo hace su sistema operativo y los programas
desarrollados,y o bien se descartan o se reescriben completamente para
la nueva plataforma.
El panorama cambió con la
aparición del lenguaje C apareció por fin la posibilidad
de generar sistemas operativos eficientes, estables y a la vez portables,
como lo es , hoy en dia, LINUX.
Esto permite un gran avance, pues
aunque la plataforma quede obsoleta, el software desarrollado sigue siendo
reutilizable. Incluso hoy en dia los sistemas operativos siguen siendo
desarrollados usando C.
Es a partir de los años
80 cuando empiezan a aparecer una gran oferta de sistemas operativos para
sistemas empotrados hasta llegar a la actualidad donde existen varias posibilidades,
entre ellas emergiendo con fuerza VxWorks, pSOS , Neculeus , Windows CE
y Linux, el cual veremos en mas profundidad, algunos derivados de sistemas
anteriores y algunos creados desde cero como IOS de CISCO.
Sin embargo, muchos sistemas empotrados no disponen de sistema operativo, simplemente el habitual bucle de control. Si bien esto es suficiente para aquellas aplicaciones simples, a medida que el sistema crece en complejidad un sistema operativo debe entrar en juego, para evitar que la complejidad del software lo haga intratable. Además de lo anterior, cada vez mas los sistemas empotrados necesitan incorporar interconexión mediante alguna clase de red y por tanto, la necesidad de implementar alguna pila de protocolos de red. Para un sistema sencillo basado simplemente en un bucle de control, el simple hecho de añadir una pila de red puede aumentar la complejidad del sistema.