GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo modificar el archivo DTB del kernel

¿Por qué no generas un nuevo dtb?

DTB (Blob de árbol de dispositivos/binario), es una base de datos de hardware que representa los componentes de hardware de la placa.

U-boot pasa la estructura de información de la placa al núcleo, que se deriva del archivo de encabezado en U-Boot.

DTB es compilado por el compilador especial que produce el binario en la forma adecuada para que U-Boot y Linux lo entiendan.

DTC (Compilador de árbol de dispositivos) traduce el archivo del árbol de dispositivos al binario legible por máquina que U-Boot y el kernel de Linux pueden entender.

La forma sencilla de usar DTC.

$ dtc -O dtb -o arm_board.dtb -b 0 arm_board.dts

para obtener el árbol de dispositivos en texto desde el dtb.

dtc -I dtb -O dts arm_board.dtb

board.dts es binario creado por el comando anterior. -O especifica el formato de salida. -o la bandera es el archivo de salida. -b 0 especifica la CPU de arranque físico.

Entonces haz

$ make ARCH=arm arm_board.dtb

Otro enfoque podría ser simplemente usar make dtbs esto llamará a dtc. arch/arm/boot/dts/Makefile enumera qué DTB deben generarse en el momento de la compilación. Esta es otra forma de compilarlo. make lo colocará en esta ubicación del árbol del kernel /arch/arm/boot/dts

Echa un vistazo a este árbol de dispositivos para principiantes


Solo quiero actualizar esto con 2 años más de experiencia en el tema.

Los archivos DTS en el repositorio de Linux son una mezcla de DTS y Directivas de preprocesador de C (#include, #define, etc.). Entonces, cuando se compila el DTB original, el preprocesador se vincula a los archivos a los que se hace referencia para crear un archivo DTS puro. dtc convierte el único archivo DTS en un archivo DTB.

Entonces, si desea modificar un archivo DTS del kernel y compilarlo, tiene dos opciones:

  1. Simplemente ejecute make dtbs que maneja automáticamente todo esto
  2. Ejecute manualmente el preprocesador (cpp -nostdinc -I <include dir> -undef -x assembler-with-cpp ... ) y luego compile la salida con dtc .

Linux
  1. CentOS/RHEL 7:Cómo modificar la línea de comandos del kernel

  2. Cómo grep \n en el archivo

  3. ¿Cómo modificar globalmente el PYTHONPATH predeterminado (sys.path)?

  4. ¿Cómo guardar o exportar una configuración personalizada del kernel de Linux?

  5. ¿Cómo copiar un archivo transaccionalmente?

Cómo crear un archivo en Linux

Cómo crear un archivo Tar Gz

Cómo descomprimir (abrir) un archivo Gz

Cómo vincular un archivo en Linux

Cómo hacer eco en un archivo

¿Cómo funciona /proc/*?