miércoles, marzo 10, 2010

Linux en Sistemas Embebidos.

Siempre me ha gustado pensar en el hecho de que en pequeños circuitos electrónicos tenemos toda una computadora, en muchos casos varias, tan simple como la Ley de Moore. A primera vista no notamos que casi en todo lo que nos rodea tenemos una computadora, dígase en coches,  televisores, móviles, microondas, neveras, solo por mencionar algunos. Entiendo que mucha gente empieza a ver los sistemas embebidos como verdaderas computadoras cuando se enteran de que poseen un Sistema Operativo, uno de los más utilizados en la actualidad es el Linux Embedded, (Linux Embebido o Empotrado) y de este voy a comentar un poco.

Antes de los Linux Embebidos la mayoría de los equipos empotrados trabajaban con sistemas propietarios, pero desde hace poco mas de 10 años las cosas han empezado a cambiar, al punto tal de que Linux predomina en este mercado, esto gracias a las ventajas que posee de ser maduro, estable (pues debemos tener en cuenta que son sistemas que nunca se apagan) y de Código Abierto.  Por lo general un Linux Embebido puede ocupar 2 MB o menos, todo depende de su aplicación, pues  en estos sistemas por lo general se requiere de personalizaciones, drivers específicos, entre otras características que siempre son propias.

Como los sistemas embebidos son tan específicos, se deben tener en cuenta varios factores que indicen directamente, es decir, conocer bien el dispositivo en el que se le instalará el Linux, los datos más importantes serían, la memoria (muy importante), el tipo de microprocesador, los buses que podría soportar, la placa y sobre todo, que queremos lograr con él. Todo esto nos trae limitantes, que fueron los principales retos cuando se desarrollaron los primeros Linux Embebidos.

El principal fue el Boot, un sistema embebido siempre debe subir mucho más rápido que cualquier otro sistema, por lo general la aplicación del mismo lo demanda, un usuario común no aceptaría encender un televisor y esperar 50 segundos para empezar a ver su programa favorito, por ello se atacó directamente este punto, haciendo que estos sistemas estén listos para trabajar de forma casi inmediata, tanto así que el usuario no nota que un sistema operativo instalado está detrás de todo.

Otro reto en sus inicios fue el espacio en disco, pues como se imaginan la mayoría de los sistemas empotrados (esto por no decir todos) no poseen un disco duro, sino que disponen de memoria, para ello los desarrolladores implementaron un Kernel con todo lo estrictamente necesario para funcionar. Siendo la parte fundamental del sistema operativo, solo lo limitaron a la gestión de los recursos y las comunicaciones entre el hardware y el software, así aseguraban que este pudiera aplicar para casi todos los casos, es decir genérico. Entonces para necesidades específicas se podría disponer de Módulos del Kernel, que son pequeños programas que actúan en función de una necesidad, por ejemplo drivers.

Gracias al Linux Embedded, la presencia de este sistema operativo es mucho mayor a la de cualquier otro en el mundo, pues la cantidad de sistemas empotrados triplica la de los ordenadores comunes.  Para concluir me gustaría mencionar algunos Linux para sistemas empotrados muy famosos:

-µCLinux: Destinado a portar Linux a dispositivos  sin unidades de manejo de memoria (Linux Empotrado), es uno de los mas populares. Gracias a éste, es posible contar con otros proyectos como iPodLinux.

- Android: Es el sistema operativo basado en Linux para móviles, ha tenido un fuerte impacto debido a que lo promueve google.

- OpenWRT: Fue una de las primeras distribuciones GNU/Linux para routers WIFI, estos sistemas empotrados se lograron convertir en algo mas de son, llegandose a implementar en ellos diferentes aplicaciones y aprovechando el potencial del equipo.

Para verlos todos: http://www.linuxlinks.com/Embedded/Distributions/

Referencias:

http://es.wikipedia.org/wiki/Sistema_integrado
http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/Embedded-Linux-Distributions-Quick-Reference-Guide/
http://www.linuxfordevices.com/
http://en.wikipedia.org/wiki/Embedded_system
http://elinux.org/Embedded_Linux_Distributions