Estoy tratando de construir un Linux personalizado para un BeagleBoard xM (Rev. C). Hago mucho C / C ++ pero soy un principiante en la construcción e instalación de Linux desde cero.
Utilicé el dispositivo de compilación Yocto Project ( https://www.yoctoproject.org/ ) que parecía prometedor: creó archivos para el cargador de arranque u-Boot, el kernel de Linux y el sistema de archivos raíz.
Esta página proporciona instrucciones para configurar la tarjeta micro SD con los archivos generados por Yocto. Sin embargo, los archivos de imagen incluyen un archivo ".dtb" que no se menciona en las instrucciones de configuración.
¿Tiene este archivo algo que ver con el hardware de la placa? Varios sitios mencionan la carga de archivos dtd (¿tal vez en uEnv.txt?) Pero no he encontrado ninguna información detallada.
Usé las instrucciones anteriores para configurar la partición de arranque con MLO y u-boot.img, y me metí un poco con el uEnv.txt. También configuré una segunda partición con el sistema de archivos raíz.
Pude arrancar e iniciar sesión (a través de la consola del puerto serie), pero parecía que la mayoría del hardware de la placa, por ejemplo, video y todos los dispositivos USB, incluido Ethernet, no funcionaban. ¿Podría ser esto porque no estaba usando el archivo .dtb?
¿Alguien puede explicar el dtb y cómo usarlo en una placa beagle? ¡Gracias!
fuente
Respuestas:
Respondiendo a mi propia pregunta, después de que descubrí qué buscar. Un archivo "dtb" contiene un Blob de árbol de dispositivos (o Binario) (buena descripción aquí ). Es la nueva (er) forma de pasar información de hardware sobre la placa al kernel de Linux.
Se puede cargar en la memoria y pasar al núcleo mediante u-Boot.
Aquí están los comandos de u-Boot que utilicé:
zImage es el núcleo, y beagle-xm.dtb es el blob del árbol de dispositivos. Automaticé el proceso de arranque configurando una variable "uenvcmd = ..." en uEnv.txt (con lo anterior en él), pero es un poco feo y probablemente hay mejores formas.
Tenga en cuenta que esto se inicia y dice que cargó bien el árbol de dispositivos. Sin embargo, todavía no tengo dispositivos USB o video (por lo que puedo decir). Sin embargo, sospecho que puede ser un problema diferente.
fuente
Estoy usando Ubuntu 14.04 en el beaglebone black, por lo que mi configuración puede ser un poco diferente, pero así es como cargué un dtb personalizado:
En uEnv.txt, agregue una línea con:
dtb=name-of-desired.dtb
Las ubicaciones buscadas deben ser como se especifica aquí . Para mí, aquí fue
/boot/dtbs/linux-kernel/
donde linux-kernel es el nombre de la versión cargada.fuente
Tenga en cuenta que hay 2 dtb. El u-boot dtb y el kernel dtb. Son 2 cosas diferentes. U-boot board dts / dtb no siempre se usa, no es obligatorio, por cierto, en u-boot puedes usar el "u-boot" dtb incrustarlo en u-boot o concatenarlo en u-boot.
fuente