Blob da Árvore de Dispositivos (binário)

2

Temos a placa armv7 (freescale IMx6DL), para a qual temos o arco portado do Linux. depois de construir o iuf, vemos o nosso arquivo .dts que não inclui todos os periféricos, os ônibus, etc.

Alguém pode nos dizer como gerar .dtb (blob da árvore do dispositivo) se tivermos o arquivo dts (source). Makefile dado não está trabalhando separadamente. os arquivos dtb são gerados durante a construção.

podemos gerar o arquivo dtb separadamente se tivermos o arquivo dts.

    
por Srinivas 04.08.2015 / 13:43

1 resposta

4

Sim, qualquer coisa que o Makefile você pode fazer manualmente. No caso de origens de árvore de dispositivos do kernel, eles usam comandos do pré-processador C, mesmo que a linguagem e o compilador da árvore de dispositivos não os suportem.

O que o kernel faz, e você deve fazer também, é passar a origem da árvore de dispositivos através do pré-processador C e do compilador da árvore de dispositivos em sequência, assim:

cpp -Iinclude -E -P -x assembler-with-cpp imx6dl-boardname.dts | dtc -I dts -O dtb -o imx6dl-boardname.dtb -

(Este é o comando que eu mesmo uso, com a nota óbvia de que boardname é alterado para refletir meu hardware - eu o reuni a partir das regras do Makefile e das mensagens de erro do pré-processador)

Argumentos do pré-processador:

  • -Iinclude A árvore de dispositivos de kernel origina principalmente #include <dt-bindings/interrupt-controller/irq.h> , que é um caminho relativo a arch/arm/boot/dts/include .

  • -E significa apenas pré-processamento, não tenho certeza se isso é necessário ao usar o comando cpp

  • -P desativa os comentários do número da linha de origem, o que confunde o compilador da árvore de dispositivos

  • -x assembler-with-cpp força o pré-processador a ser executado em um determinado modo de linguagem, o que, suponho, ajuda a não ficar confuso com a sintaxe da árvore de dispositivos no mesmo arquivo das diretivas do pré-processador. Eu uso porque estava nos Makefiles do kernel.

  • imx6dl-boardname.dts é um marcador, você deve alterar isso para o nome do arquivo de origem da árvore de dispositivos de nível superior

Argumentos do compilador da árvore de dispositivos:

  • -I dts especifica que o formato de entrada é uma fonte de árvore de dispositivo textual
  • -O dtb especifica criar um blob binário da árvore de dispositivos
  • -o imx6dl-boardname.dtb define o nome do arquivo para onde a saída vai, você deve substituí-lo pelo nome do arquivo DTB que você deseja.
  • - indica que o arquivo de entrada é stdin
por 01.10.2015 / 16:44

Tags