Aprendiendo Linux para sistemas embebidos
Recientemente me preguntaron cómo una persona con experiencia en programación de sistemas embebidos con procesadores de 8 bits, como PIC, así como procesadores de 32 bits, como PowerPC, pero sin experiencia en Linux, puede aprender a usar Linux Embebido.
Lo que siempre recomiendo a un programador de sistemas embebidos es esto: Mire Linux Embebido como dos partes, la parte embebida y la parte Linux. Consideremos primero la parte de Linux.
El lado Linux
Los sistemas operativos abundan y las opciones son muchas para un sistema embebido, tanto propietario como de código abierto. Linux es una de estas opciones. No importa lo que use para su host de desarrollo, ya sea Linux, Windows o Mac, necesita aprender a programar usando el sistema operativo de destino. En este sentido, usar Linux Embebido no es muy diferente de usar VxWorks, WindowCE u otro sistema operativo. Necesita comprender cómo se diseña el sistema operativo, cómo configurarlo y cómo programar mediante su interfaz de programación de aplicaciones (API).
Algunos factores hacen que aprender a programar Linux sea más fácil que otros sistemas operativos integrados. Encontrará muchos libros y tutoriales sobre Linux, así como Unix de los que se deriva, muchos más que para otros sistemas operativos. Los recursos en línea para Linux son amplios, mientras que otros sistemas operativos tienen una presencia mucho menor, o uno impulsado por el fabricante del sistema operativo. Linux es de código abierto, y puede leer el código para comprender exactamente lo que está haciendo el sistema operativo, algo que a menudo es imposible con un sistema operativo propietario distribuido como binarios. (Ciertamente no recomiendo leer código fuente de Linux para intentar aprender a programar Linux. Es como tratar de aprender a conducir estudiando cómo funciona la transmisión de un automóvil.)
El factor más significativo que diferencia a Linux de otros sistemas operativos es que el mismo núcleo se utiliza para todos los sistemas, desde las tarjetas incrustadas más pequeñas hasta los sistemas de escritorio y las grandes granjas de servidores. Esto significa que puede aprender una gran cantidad de programación de Linux en su escritorio en un entorno, que es mucho más flexible que usar una placa de destino con todas las complejidades de conectarse al destino, descargar una programación de prueba y ejecutar la prueba. Todos los conceptos básicos y la mayoría de las API son los mismos para su Linux de escritorio y su Linux integrado.
Instalación de Linux
Puede instalar una distribución Linux de escritorio en su sistema de desarrollo, reemplazando su sistema Windows o Mac, pero eso puede ser una pieza bastante grande para morder a la vez, ya que es probable que necesite configurar el correo electrónico, aprender nuevas herramientas y ponerse al día con una interfaz de escritorio diferente. Puede instalar Linux en un entorno de arranque dual, donde utiliza el entorno antiguo para correo electrónico, etc., y usar el sistema Linux para aprender. Esto puede ser bastante incómodo, ya que necesitas apagar un entorno para que aparezca el otro. Además, hacer dentro de un entorno corporativo puede ser poco práctico o imposible. La gente de TI prefiere apoyar un entorno conocido, no uno que usted haya elegido.
Una forma más sencilla es crear un entorno de máquina virtual en su sistema de desarrollo actual. Para hosts de Windows, puede instalar VMware Player o VirtualBox, y en Mac, puede instalar Parallels o VMware Fusion. El uso de una máquina virtual le ofrece mucha más flexibilidad. Puede instalar una distribución Linux de escritorio, como Ubuntu o Fedora. Puede usar esta distribución para familiarizarse con conceptos básicos de Linux, aprender el shell de comandos y aprender a construir y ejecutar programas. Puede reconfigurar el núcleo o los controladores de carga, sin la preocupación de que bloqueará su sistema de escritorio. Puede compilar todo el entorno del núcleo y de la aplicación, de forma similar a lo que podría hacer con un entorno de desarrollo cruzado para un destino Linux incrustado.
Si su máquina virtual que ejecuta Linux se bloquea, simplemente reinicie la máquina virtual. El bloqueo no afecta a otras cosas que podría estar haciendo en su sistema de desarrollo, como leer una página web sobre cómo construir e instalar un controlador, o escribir un correo electrónico a una de las muchas listas de correo de soporte.
Algunos de los productos de máquinas virtuales tienen funciones de instantáneas que le permiten tomar un punto de comprobación de una configuración de trabajo conocida, a la que puede retroceder si no puede corregir un bloqueo fácilmente. Esta instantánea es mucho más fácil que intentar rescatar un sistema de escritorio que se bloquea o una placa de destino que no responde.
Una máquina virtual Linux que se ejecuta en su escritorio no es un modelo perfecto para un entorno Linux integrado. La máquina virtual emula el hardware de un sistema de escritorio, con un conjunto limitado de dispositivos que es poco probable que coincidan con un destino incrustado real. Pero nuestro objetivo en este punto no es modelar un objetivo real (algo que discutiremos más adelante), sino crear un entorno en el que pueda aprender conceptos y programación de Linux fácilmente.
Este es el primer paso: Cree una máquina virtual e instale una distribución Linux de escritorio en la máquina virtual. Escogeremos de aquí en nuestra próxima entrega.
Michael Eager es consultor principal de Eager Consulting en Palo Alto, California. Tiene más de cuatro décadas de experiencia en el desarrollo de compiladores, depuradores y simuladores para una amplia gama de arquitecturas de procesador utilizadas en sistemas embebidos. Sus clientes actuales y anteriores incluyen importantes compañías de semiconductores y desarrolladores de sistemas. Michael ha sido miembro del Comité de Estándares ISO C++ y de los Comités ABI para varias arquitecturas de procesadores. Es presidente del Comité de Estándares de Depuración para DWARF, un formato de datos de depuración ampliamente utilizado. Está activo en las comunidades de código abierto y Linux.
enlaces Relacionados:
- el Aprendizaje de Linux para sistemas embebidos
- primeros pasos con Linux Embebido: Parte Dos
- primeros pasos con Linux Embebido: Parte Tres
- primeros pasos con Linux Embebido: Parte Cuatro
- primeros pasos con Linux Embebido: Parte Cinco
- primeros pasos con Linux Embebido: Parte Seis
- primeros pasos con Linux Embebido: Parte Siete