Estou tentando criar um Linux personalizado para um BeagleBoard xM (Rev. C). Eu faço muito C / C ++, mas sou iniciante na construção e instalação do Linux a partir do zero.
Usei o dispositivo de construção do Yocto Project ( https://www.yoctoproject.org/ ) que parecia promissor - ele criou arquivos para o carregador de inicialização u-Boot, o kernel do Linux e o sistema de arquivos raiz.
Esta página fornece instruções para configurar o cartão micro SD com os arquivos gerados pelo Yocto. No entanto, os arquivos de imagem incluem um arquivo ".dtb" que não é mencionado nas instruções de configuração.
Esse arquivo tem algo a ver com o hardware da placa? Vários sites mencionam o carregamento de arquivos dtd (talvez em uEnv.txt?), Mas não encontrei nenhuma informação detalhada.
Usei as instruções acima para configurar a partição de inicialização com o MLO e o u-boot.img e mexi um pouco com o uEnv.txt. Também configurei uma segunda partição com o sistema de arquivos raiz.
Consegui inicializar e efetuar login (via console da porta serial), mas parecia que a maior parte do hardware da placa - por exemplo, vídeo e todos os dispositivos USB, incluindo Ethernet - não estavam funcionando. Poderia ser porque eu não estava usando o arquivo .dtb?
Alguém pode explicar o dtb e como usá-lo em uma placa beagle? Obrigado!
fonte
Respostas:
Respondendo à minha própria pergunta, depois que eu descobri o que procurar. Um arquivo "dtb" contém um Blob da árvore de dispositivos (ou binário) (boa descrição aqui ). É a nova (er) maneira de passar informações de hardware sobre a placa para o kernel do Linux.
Ele pode ser carregado na memória e passado para o kernel pelo u-Boot.
Aqui estão os comandos u-Boot que eu usei:
zImage é o kernel e beagle-xm.dtb é o blob da árvore de dispositivos. Automatizei o processo de inicialização configurando uma variável "uenvcmd = ..." no uEnv.txt (com as opções acima), mas é um pouco feia e provavelmente há maneiras melhores.
Observe que isso inicializa e diz que carregou a árvore de dispositivos OK. No entanto, ainda não tenho dispositivos USB ou vídeo (pelo que sei). No entanto, suspeito que possa ser um problema diferente.
fonte
Estou usando o Ubuntu 14.04 no beaglebone black, então minha configuração pode ser um pouco diferente, mas aqui está como carreguei um dtb personalizado:
No uEnv.txt, adicione uma linha com:
dtb=name-of-desired.dtb
Os locais pesquisados devem ser os especificados aqui . Para mim, era aqui
/boot/dtbs/linux-kernel/
que linux-kernel é o nome da versão carregada.fonte
Observe que existem 2 dtb. O u-boot dtb e o kernel dtb. São duas coisas diferentes. A placa de inicialização em U dts / dtb nem sempre é usada, não é obrigatória. No u-boot, você pode usar o dtb "u-boot" incorporando-o ao u-boot ou concatenando-o ao u-boot.
fonte