La Red de Conocimientos Pedagógicos - Aprendizaje de inglés - Desarrollo de sistemas Linux en dispositivos embebidos

Desarrollo de sistemas Linux en dispositivos embebidos

Linux está creciendo de manera constante en el campo del desarrollo integrado. Debido a que Linux usa la GPL (consulte Recursos más adelante en este artículo), cualquier persona interesada en personalizar Linux para una PDA, PDA o dispositivo portátil puede descargar su kernel y sus aplicaciones de forma gratuita desde Internet y comenzar a portarlo o desarrollarlo. Muchas variedades mejoradas de Linux se adaptan al mercado integrado/en tiempo real. Incluyendo RTlinux (Linux en tiempo real), uclinux (Linux para dispositivos que no son MMU), MontavistaLinux (distribución de Linux para ARM, MIPS y PPC), ARM-Linux (Linux en ARM) y otros sistemas Linux.

El desarrollo de Linux integrado implica tres niveles: cargador de arranque, kernel de Linux e interfaz gráfica de usuario (GUI). El gestor de arranque suele ser el primer código que se ejecuta en cualquier hardware. En sistemas tradicionales como las computadoras de escritorio, el gestor de arranque generalmente se carga en MasterBootRecord ((MBR)) o en el primer sector del disco donde se encuentra Linux. Normalmente, en una computadora de escritorio u otro sistema, el BIOS entrega el control al gestor de arranque.

El software especializado puede interactuar directamente con el dispositivo de memoria flash en el sistema remoto e instalar el gestor de arranque en una ubicación determinada de la memoria flash. Los dispositivos de memoria flash son chips especiales que funcionan de manera similar a los dispositivos de almacenamiento en el sentido de que almacenan información de manera persistente, es decir, su contenido no se borra cuando se reinicia.

Algunos tipos de dispositivos integrados tienen un pequeño código de inicio, basado en unos pocos bytes de instrucciones, que inicializarán algunas configuraciones de DRAM y habilitarán la serie (o USB o Ethernet) en el destino. Los puertos permiten la comunicación con los programas host. El programa host o el cargador pueden usar esta conexión para transferir el cargador de arranque al destino y escribirlo en la memoria flash. La configuración de la cadena de herramientas crea un entorno de compilación en el host que compila el kernel y la aplicación que se ejecutará en el destino, porque es posible que el hardware de destino no tenga un nivel de ejecución binaria que sea compatible con el host.

Una cadena de herramientas consta de un conjunto de componentes que se utilizan para compilar, ensamblar y vincular núcleos y aplicaciones. Estos componentes incluyen: Binutils: un conjunto de utilidades para manipular archivos binarios. Incluyen utilidades como ar, as, objmp y objcopy. Compilador GNUC. glibc: la biblioteca C con la que se vincularán todas las aplicaciones de usuario. Los kernels y otras aplicaciones que evitan el uso de funciones de la biblioteca C se pueden compilar sin la biblioteca. La cadena de herramientas de compilación configura un entorno de compiladores cruzados. Un compilador nativo compila instrucciones para el mismo procesador que el nativo. Los compiladores cruzados se ejecutan en un procesador, pero pueden compilar instrucciones de otro procesador. Configurar una cadena de herramientas de compilador cruzado desde cero no es una tarea sencilla: implica descargar el código fuente, aplicar parches, configurar, compilar, configurar encabezados, instalar y muchas otras operaciones. Además, un proceso de compilación tan exhaustivo requiere enormes cantidades de memoria y disco duro. Si no hay suficiente memoria y espacio en el disco duro, pueden surgir muchos problemas durante la fase de compilación debido a problemas como la asociación, la configuración o la configuración del archivo de encabezado.

Por lo tanto, poder obtener archivos binarios precompilados desde la web es algo bueno (pero no tan bueno, principalmente limitado a sistemas basados ​​en ARM, pero eso cambiará tarde o temprano). Algunas cadenas de herramientas precompiladas populares incluyen las de Compaq (FamiliarLinux), LART (LARTLinux) y Embedian (basadas en Debian pero no relacionadas con él), todas ellas diseñadas para plataformas basadas en ARM. Desde la perspectiva del usuario, la interfaz gráfica de usuario (GUI) es uno de los aspectos más importantes de un sistema: es a través de la GUI que los usuarios interactúan con el sistema. Por tanto, la GUI debería ser fácil de usar y muy fiable. Pero también debe ser consciente de la memoria para que pueda ejecutarse sin problemas en pequeños dispositivos integrados con memoria limitada. Por lo tanto, debe ser liviano y cargarse rápidamente.

Otro aspecto importante a considerar es la concesión de licencias. Algunas distribuciones de GUI tienen licencias que permiten su uso gratuito, incluso en algunos productos comerciales. Si desea integrar una GUI en un proyecto, otras licencias requieren regalías.

Finalmente, la mayoría de los desarrolladores probablemente elegirán XFree86 porque XFree86 les proporciona un entorno familiar donde pueden utilizar sus herramientas favoritas. Sin embargo, las GUI más nuevas en el mercado, como CenturySoftware (Nano-X) y TrolltechQT/Embedded, compiten ferozmente con X en el competitivo campo de Linux integrado, principalmente porque ocupan menos recursos y se ejecutan rápidamente, y hay soporte para ventanas personalizadas. componentes.