Soy un desarrollador integrado que ha trabajado en pocos códigos de metal desnudo uC. Estoy pensando en aprender sobre Linux para sistemas embebidos. ¿Donde debería empezar?

Antes que nada, mejora tu inglés. Parece que pasas demasiado tiempo en chats casuales de Facebook y WhatsApp.

Ahora, llegando al punto principal, para aprender sobre Linux Embebido, debe comprar la placa ósea Raspberry Pi o Beagle y comenzar a portar la imagen del núcleo en ella.

Ambas juntas tienen soporte comunitario de código abierto. Por lo tanto, no será difícil para usted simplemente seguir el manual. Debe intentar arrancar el kernel de Linux desde la tarjeta SD y TFTP (es decir, arranque de red).

Ahora, cuando haya terminado de arrancar el kernel existente y las imágenes de u-boot, entonces debería intentar compilar estas imágenes desde el código fuente.

Intente ejecutar la distribución de Angstrom o Ubuntu en estas placas.

Esto es solo para comenzar. Obtenga más información sobre cómo construir y ejecutar sus propios dispositivos conectados mediante la programación de controladores de dispositivos Linux.

Controladores de dispositivo: déjame buscar eso en Google

Programación del kernel: déjame buscar eso en Google

Además de la respuesta de Robert Lee, también sugiero (después de haber instalado y utilizado Linux en su computadora portátil) leer la Programación avanzada de Linux y codificar algunas cosas para su computadora portátil.

Familiarícese con la línea de comandos de Linux (Guía avanzada de secuencias de comandos Bash …). Poder compilar algunas utilidades de software libre comunes a partir de su código fuente. Quizás estudie el código fuente de algún shell (por ejemplo, sash o bash ), o codifique su propio shell simple (que es un ejercicio muy común), o extienda uno existente.

Si nunca lees ningún libro de SO, lee uno; Recomiendo sistemas operativos: tres piezas fáciles (puede descargarlo).

Comprender las llamadas al sistema Linux. Se enumeran en syscalls (2): página del manual de Linux. Use strace (1) para comprender qué llamadas al sistema realmente realiza algún programa.

También es posible que desee leer algunos Introducción a los algoritmos

Además de todas las respuestas …

Supongo que su C / Embedded C es bueno, de lo contrario, intente obtener eso primero …

Obtenga una placa básica como Raspberry Pi (versión actual 3) e intente portar Linux incorporado, puede usar YOCTO para lo que está en tendencia en el mundo Linux integrado.

Una vez hecho esto, ve paso a paso

  1. Obtenga información básica relacionada con el sistema operativo (como espacio de usuario / espacio de kernel, paginación, programador, uso de memoria, etc.)
  2. Ejecute el programa Hello World.
  3. Intente activar / desactivar GPIO usando el subsistema / sys en Linux. (Lea el esquema del tablero para esto).
  4. Escribe hello Kernel module e intenta profundizar en el kernel.
  5. Inicie handson en la programación del Módulo Kernel.

Después de todo esto, bienvenido al mundo integrado de Linux.

Para obtener ayuda en línea, Embedded Linux Experts es un recurso muy bueno para usted en Linux incorporado.

Espero que esto ayude

Aprenda a usar Linux como usuario primero.

El uso es como desarrollador. Necesita conocer su forma de desarrollo vernácula particular. Necesita una comprensión operativa de cómo encajan las piezas (núcleo, sistema de archivos, etc.) y cuál es la semántica.

A continuación, escriba un controlador de dispositivo. No tiene que manejar hardware real.

Es más fácil y rápido hacer todo esto en una PC.

Cuando esté listo para probar su nuevo hardware, obtenga el Beaglebone Black. Aprenderá sobre las cadenas de herramientas cruzadas, las entrañas de uBoot, BusyBox y otras quinientas cosas.

Una vez que puedas sacar un Beaglebone en blanco desde cero, te graduarás. En este punto, sabrá lo suficiente para portar Linux en hardware personalizado.