27/07/2021 | Consejos tecnológicos,Desarrollo de aplicaciones,Desarrollo de software,Sistema embebido,Tecnologías

LINUX Embebido | Qué es, cómo funciona y para qué se usa

Linux embebido: ¿será lo mismo que Linux?

¿Qué es Linux?

En anteriores posts, hemos hecho una introducción a los sistemas embebidos y sus características, algunos ejemplos que hay en el mercado así como posibles funcionalidades. Hoy hablaremos del sistema operativo por excelencia utilizado como herramienta de desarrollo en este tipo de dispositivos: Linux.

Linux es el nombre que recibe el núcleo (kernel) y en general una serie de sistemas operativos de tipo Unix bajo la licencia GNU GPL (General Public License o Licencia Pública General de GNU) y similares. En muchos aspectos, Linux es similar a otros sistemas operativos como Windows, macOS (antes OS X) o iOS. Al igual que ellos, Linux puede tener una interfaz gráfica y los mismos tipos de software de escritorio a los que estás acostumbrado, como procesadores de texto, editores de fotos, editores de vídeo, etc.

Pero Linux también se diferencia en muchos aspectos importantes. En primer lugar, y quizás su característica más importante, es un software de código abierto. El código utilizado para crear Linux es gratuito y está disponible para que el público lo vea, lo edite y -para los usuarios con los conocimientos adecuados- contribuya a él.

Linux también es diferente en el sentido de que, aunque las piezas centrales del sistema operativo Linux son generalmente comunes, hay muchas distribuciones de Linux que incluyen diferentes opciones de software. Esto significa que Linux es increíblemente personalizable. Podemos instalar un sistema muy ligero e ir añadiendo todo lo necesario posteriormente o según lo vayamos necesitando. Los usuarios también pueden elegir los componentes principales, como el sistema que muestra los gráficos, y otros componentes de la interfaz de usuario.

Probablemente, ya estés utilizando Linux, aunque no seas consciente de ello, ya que está presente en el software de un gran número de dispositivos que utilizamos en nuestro día a día, así como la mayoría de las páginas web de Internet que visitamos, las cuales seguramente hayan sido generadas por servidores con Linux. De igual forma, la mayor parte de las empresas y los particulares eligen Linux para sus servidores porque es seguro, flexible y puede recibir un excelente soporte de una gran comunidad de usuarios.

Linux embebido | Qué es y para qué se usa

Un sistema embebido es un conjunto de hardware y software informático basados en un microcontrolador o microprocesador, controlados por un sistema operativo en tiempo real o RTOS, memoria limitada, y que puede variar tanto en tamaño como complejidad. Linux embebido (embedded Linux) no es más que un tipo de sistema operativo/kernel Linux que ha sido diseñado para ser instalado y utilizado en dispositivos o sistemas empotrados.

Aunque utiliza el mismo kernel, Linux Embebido es bastante diferente del sistema operativo estándar. En primer lugar, está específicamente adaptado a los sistemas embebidos y, por lo tanto, tiene un tamaño mucho menor, requiere menos potencia de procesamiento y tiene características mínimas. En consecuencia y en función de los requisitos del sistema embebido subyacente, el núcleo de Linux se modifica y optimiza como una versión de Linux embebido. Una instancia de Linux de este tipo sólo puede ejecutar aplicaciones creadas específicamente para el dispositivo.

Linux embebido es flexible, de bajo coste y de código abierto, y ya ha sido portado a microprocesadores de propósito específico. En comparación con los sistemas operativos embebidos propietarios, Linux permite múltiples proveedores de software, desarrollo y soporte; tiene un núcleo estable y facilita la capacidad de leer, modificar y redistribuir el código fuente. Además permite un enfoque de bloques de construcción altamente modulares para construir un sistema personalizado, lo que conlleva una mayor flexibilidad.

Destaca el proyecto Yocto, que, parafraseando su página web, se trata de un proyecto de colaboración de código abierto que facilita a los desarrolladores la creación sus propios sistemas Linux personalizados, independientemente de la arquitectura del hardware. Esta herramienta se utiliza profusamente para crear distribuciones de Linux embebido a medida.

Ejemplos de uso de Linux para sistemas embebidos

Por estas razones, y en especial por su versatilidad, Linux embebido se ha hecho muy popular en los sistemas empotrados. Muchos dispositivos de electrónica de consumo como los teléfonos, tabletas inteligentes, dispositivos de almacenamiento digital, grabadoras de vídeo personales, cámaras, dispositivos wearables y otros, suelen desarrollarse en Linux. También es utilizado en el software de los propios coches particulares, y otros muchos ejemplos como equipos de red, control de máquinas, automatización industrial, equipos de navegación, software de vuelo de naves espaciales e instrumentos médicos en general.

Incluso Microsoft Windows cuenta con componentes de Linux como parte del Subsistema de Windows para Linux o Windows Subsystem for Linux (WSL). Pero quizás el mejor ejemplo de Linux integrado sea Android, desarrollado por Google. De estos dos últimos ejemplos hablaremos más en detalle a lo largo del post.

Linux embebido en Windows

La introducción de Linux embebido en su organización puede significar tener que superar múltiples retos. Sin duda, las guías son útiles para poder ganar experiencia a buen ritmo, pero ¿qué pasa con el entorno de desarrollo? ¿Es necesario sustituirlo por completo para que soporte el desarrollo de Linux?

En muchos casos, el desarrollo de productos Linux embebidos se realiza utilizando el propio host Linux. La versión PC ofrece más bibliotecas y utilidades preinstaladas que los sistemas Linux embebidos, lo que hace que los hosts de desarrollo Linux sean ideales para el desarrollo de código Linux embebido. ¿Pero qué pasa con los ingenieros que son nuevos en este sistema operativo o que prefieren utilizar Windows como host de desarrollo?

La solución más extendida hasta la época ha sido utilizar entornos virtuales como VirtualBox o VMware Player. De esta manera se permite al usuario seguir trabajando con Windows como sistema operativo principal, y por tanto seguir navegando en un entorno ya familiar, y utilizar la máquina virtual con Ubuntu u otras distribuciones de Linux para el desarrollo de productos basados en Linux embebido.

Además, existen otras opciones para desarrollar código Linux embebido. Recientemente, la tecnología de contenedores ha ganado mucho interés, ofreciendo otra alternativa para ejecutar una distribución de Linux dentro del sistema operativo Windows

¿Qué es el Subsistema de Windows para Linux (WSL)?

Fuente: Microsoft Docs

Microsoft por su parte, también ha dado un paso adelante en el apoyo al entorno de desarrollo de Linux dentro de su sistema operativo con la introducción del Subsistema de Windows para Linux (WSL), que fue incluido en la versión de Windows 10.

El WSL proporciona una interfaz de kernel compatible con Linux desarrollada por Microsoft, que luego puede ejecutar un espacio de usuario GNU sobre él. De esta manera, se consigue que las herramientas de desarrollo de Linux puedan instalarse fácilmente en el entorno nativo de Linux basado en la WSL.

¿Qué significa esto para los desarrolladores? Significa que aquellos que prefieren desarrollar bajo el sistema operativo anfitrión Windows pueden permanecer con el entorno de desarrollo familiar de Windows y simplemente habilitar el entorno de desarrollo de Linux en el mismo host.

Gracias a esto, han aparecido herramientas de software integrado que pueden ser utilizados en el propio windows como el IDE TimeStorm de Timesys. Este programa basado en Eclipse proporciona a los usuarios del sistema operativo Windows 10 un entorno ya conocido, lo que facilita el desarrollo de productos Linux embebidos dentro de un entorno Windows. Esta característica lo convierte en una solución ideal para los programadores que quieren migrar al desarrollo de dispositivos Linux basados en microprocesadores, ya que, aparte de dar soporte de lenguajes como C/C++/Python, utiliza el mismo SDK de Yocto en los sistemas operativos Linux y Windows.

Linux y Android embebido | ¿Cómo funciona?

El sistema operativo Android es un tipo de Linux embebido, personalizado para ser utilizado en teléfonos inteligentes o smartphones. En esencia, Android ejecuta el mismo tipo de kernel de Linux que el de los sistemas embebidos y comparte los mismos controladores, la gestión de la memoria y las capacidades de red. Pero también incluye algunas modificaciones del núcleo que lo hacen ideal para los sistemas móviles. Además, viene cargado de funciones adicionales extraídas de otros proyectos de código abierto.

Google construyó Android a medida como un sistema operativo móvil que viene con su propio ecosistema, separado del clásico de Linux. Su interfaz de usuario está optimizada para dispositivos de pantalla táctil. Además, viene con un conjunto de APIs que permiten un entorno de desarrollo de aplicaciones más estandarizado. De igual forma, los dispositivos Android pueden aprovechar adicionalmente una serie de servicios de Google como puede ser Google Maps, Fit, Cast o Awareness, entre otras.

Algunos dirían incluso que Android se convierte en un sustituto viable de Linux integrado porque estandariza el desarrollo de software de dispositivos como teléfonos, tabletas o televisores. Aun así, puede que Android esté ganando en popularidad, pero le queda un camino por recorrer antes de que se utilice en la misma proporción que Linux integrado y – mucho menos – que lo sustituya. Todavía se encuentra en un lejano segundo puesto. De hecho, las variedades «clásicas» de Linux embebido sin duda dominan como sistema operativo de elección para los desarrolladores de sistemas embebidos.

Para la mayoría de los dispositivos Linux embebidos, que están escondidos en la maquinaria industrial, por ejemplo, y que prosperan con un bajo consumo de energía, esas características amigables con el móvil son un volumen extra que un desarrollador necesita eliminar. Es por ello que Android tiene más sentido en un dispositivo que aprovecha sus puntos fuertes en cuanto a interfaz de usuario y medios de comunicación.

Ventajas de Linux embebido

Como ya hemos comentado, Linux embebido es  una versión compacta de Linux que ofrece características y servicios acordes con los requisitos de funcionamiento y aplicación del sistema integrado. Al igual que Linux, sus principales ventajas frente a otros sistemas operativos integrados son, entre otras, el uso de código abierto y por tanto bajo coste, la existencia de múltiples proveedores de software, desarrollo y soporte, la apertura en cuanto a derechos de autor o licencias y un núcleo estable y robusto. Además, gracias a la posibilidad de leer, modificar y redistribuir el código fuente, unido a un enfoque de bloques de construcción altamente modular para construir un sistema embebido personalizado, se consigue una mayor flexibilidad en las posibilidades de diseño.

  • Uso de código abierto.
  • Coste bajo.
  • Múltiples proveedores de software, desarrollo y soporte.
  • Altamente modulable y personalizable.
  • Mayor flexibilidad.

Puntos débiles de Linux embebido

Dentro de las desventajas que se pueden considerar de Linux embebido, cabe destacar su complejidad. Gracias a ventajas ya mencionadas como el hecho de ser de código abierto y haber múltiples desarrollos, Linux embebido es más rico en características que otros entornos de desarrollo de sistemas empotrados. La gran base de código de Linux (tanto dentro de su sistema, como disponible en la comunidad) da lugar a una complejidad casi ilimitada.  

Además, se debe tener en cuenta que al desarrollarse soluciones adaptadas a la plataforma que se va a utilizar, cualquier modificación en el hardware puede afectar directamente en el software, viéndose reflejado en situaciones de reemplazo de productos o incluso en actualizaciones del propio software. Por otra parte, debe considerarse que el hecho de utilizar Linux embebido implica la necesidad de disponer de un espacio de memoria comparativamente grande frente a otros entornos. Esto afectará sobre todo a dispositivos de recursos limitados.

La suma de todos estos aspectos puede dar lugar a un aumento de dinero y tiempo para el desarrollo de nuevas implementaciones. Por ello, es muy importante contar con expertos desarrolladores que puedan optimizar en la medida de lo posible el proceso.

  • Al tener más características, puede resultar más complejo.
  • Al modificar el hardware, el software puede ser afectado.
  • Más necesidad de espacio de memoria

Linux embebido: desarrolladores de software embebido

Después de todo lo que hemos visto hasta aquí,  ¿estás buscando desarrolladores C/C++ expertos para el desarrollo de software y sistemas embebidos sobre Linux? Acabas de encontrarlos.

Compartir en:

Relacionados