Beaglebone Black + Yocto Dizzy (Versão 1.7)

yocto

A nova versão 1.7 (dizzy) do Yocto Project foi lançada recentemente e desde a versão 1.6 (daisy) a Beaglebone Black é oficialmente suportada pelo projeto.

 

Sendo assim, não precisamos utilizar a camada de BSP da Texas Instruments (meta-ti) para adicionarmos suporte a Beaglebone Black no Yocto. Porém se você deseja usar a aceleração 3D por hardware do processador AM3359 (presente na Beaglebone Black) você terá de recorrer a meta-ti.

 

Desde a versão 3.12 mainline do Kernel Linux a Beaglebone Black é suportada e nesta versão do Yocto o Kernel Linux construído é o 3.14, ou seja, uma versão bem recente. Mas existe uma limitação para a Beaglebone Black no mainline Linux Kernel: o suporte às capes não foi integrado ainda. Se você deseja usar as capes em seu projeto terá que usar o BSP da placa disponibilizado pela meta-beagleboard e a versão do Kernel Linux utilizada é a 3.8. 

 

Se você é novo no mundo do Yocto sugiro que dê uma lida na seção "O que é o Yocto" no artigo "Beaglebone Black + Yocto" escrito pelo Henrique Rossi.

 

 

Preparando o Host

 

O Yocto Project suporta oficialmente as seguintes distribuições GNU/Linux como ambiente de construção:

  • Ubuntu 12.04, 13.10 e 14.04;
  • Fedora 19 e 20;
  • CentOS 6.4 e 6.5;
  • Debian 7.0, 7.1, 7.2, 7.3 e 7.4;
  • openSUSE 12.2, 12.3 e 13.1.

 

Para que ele execute no Host alguns pacotes necessitam ser instalados.

 

Ubuntu e Debian:

 

Fedora:

 

openSUSE:

 

CentOS:

 

 

Montando o ambiente de construção

 

Após instalar os pacotes para o Host, vamos criar os diretórios e baixar os fontes necessários:

 

Agora vamos configurar o ambiente para gerarmos os artefatos de software:

 

Modifique e adicione as seguintes variáveis no arquivo ~/yocto/build-dizzy/conf/local.conf:

 

Note que configuramos nossa machine como sendo a beaglebone (serve tanto para a white como a black), mudamos o diretório de download para podermos reutilizar os fontes baixados em outros projetos e adicionamos os módulos e dtb nas imagens que iremos gerar.

 

 

Construindo as imagens

 

Vamos gerar uma imagem mínima sem suporte à interface gráfica (core-image-mininal) com o comando:

 

Esta é a configuração de build utilizada:

 

Vamos construir também uma imagem com suporte à interface gráfica (core-image-sato):

 

 

Gravando as imagens

 

Este procedimento é praticamente o mesmo utilizado no tutorial [5] do Henrique mencionado no começo deste post. 

 

Para a gravação das imagens no microSD card, o mesmo deve ser particionado e formatado de acordo o padrão aceito pelo placa. Para isso foi criado um script, que pode ser obtido com os seguintes comandos:

 

Insira um microSD card no computador PC ou notebook (sistema host) e descubra qual o device node criado pelo sistema operacional. Tente um dos seguintes comandos:

 

Caso, por exemplo, o device node criado seja /dev/sdb, use o seguinte comando:

 

Assim que o processo de particionamento e formatação terminar, duas partições no microSD card são criadas:

  • boot (FAT32);
  • rootfs (ext4).

 

Execute a “montagem” dessas duas partições no sistema de arquivos do sistema host. Caso esse faça uso da distribuição Ubuntu, basta remover e inserir novamente o dispositivo no seu conector. Dado que, por exemplo, os pontos de montagem criados sejam /media/boot e /media/rootfs, a imagem gerada anteriormente é copiada da seguinte forma para o microSD :

Este último comando é importante, pois sem ele os dispositivos conectados a USB não serão reconhecidos pelo kernel.

 

 

Testando as imagens

 

Remova o microSD do computador e insira-o na Beaglebone Black, conecte-a a uma TV por um cabo HDMI, e a um mouse através do conector USB. Se quiser monitorar o processo de boot, você também pode conectar um cabo serial [7].

 

NOTA:

Se você tiver instalado algum outro sistema operacional no eMMC da BBB energize a placa pressionando a switch que fica próxima ao slot do microSD. Isso fará com que o processador busque o MLO e u-boot que estão contidos no microSD ao invés do eMMC.

 

A imagem core-image-minimal (sem interface gráfica) possui o seguinte log de boot:

 

Para a imagem core-image-sato (com interface gráfica), temos o seguinte log de boot: 

 

E as seguintes imagens saindo pelo HDMI temos as seguintes telas (imagens):

 

bbb-daisy-boot

Figura 1

 

bbb-daisy-desktop

Figura 2

 

 

Para aprender mais

 

Embedded Linux Build Systems

Cozinhando com o Yocto Project

Desvendando Yocto Project – Primeiros passos

 

Pronto! Agora você já tem um ponto de partida para construir  e customizar as suas distribuições Linux embarcado com o Yocto Project.

 

Referências

 

https://www.embarcados.com.br/lancada-nova-versao-1-7-dizzy-yocto-project 

https://www.embarcados.com.br/beaglebone-black-yocto-daisy/

http://elinux.org/Beagleboard:BeagleBone_Capes

https://github.com/beagleboard/meta-beagleboard

https://www.embarcados.com.br/beaglebone-black-yocto/

https://www.embarcados.com.br/author/henriqueprossi/

http://elinux.org/Beagleboard:BeagleBone_Black_Serial

 

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Diego Sueiro
Formado em Engenharia de Controle e Automação pela UNIFEI e CEO do Embarcados, atualmente trabalho na Inglaterra com Desenvolvimento de Sistemas Linux Embarcado Real Time. Sou consultor e desenvolvedor de software para Sistemas Embarcados com vasta experiência em projetos com processadores de 8bits a 32bits, sistemas bare metal, RTOS, Linux Embarcado e Android Embarcado. Um apaixonado por Pink Floyd e Empreendedorismo.

5
Deixe um comentário

avatar
 
2 Comment threads
3 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
2 Comment authors
Diego SueiroChristian SchultzYocto Project - Introdução - Cleiton Bueno Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
trackback
Christian Schultz
Visitante
Xultz

Olá! Muito obrigado pelo texto! Eu segui o processo para gerar a imagem core-image-minimal, e a compilação ocorreu sem problemas. Porém, como resultado ele gerou imagens do tipo uImage ao invés de zImage, eu errei em algum ponto da configuração? Por este motivo eu copiei somente o MLO e u-boot.img para a partição boot. Ao dar boot na placa, ele carrega o kernel, porém o mesmo fica travado, conforme mostra a seguir: SD/MMC found on device 0 reading uEnv.txt ** Unable to read file uEnv.txt ** gpio: pin 55 (gpio 55) value is 1 5067360 bytes read in 875 ms… Leia mais »

Diego Sueiro
Visitante
Diego Sueiro

Xultz, Acabei de atualizar minha cópia local do poky (no branch dizzy) e gerei o sistema de novo e não tive nenhum problema. As mensagens de boot são: U-Boot SPL 2013.07 (Jan 21 2015 - 14:58:33) musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, HB-ISO Rx, HB-ISO Tx, SoftConn) musb-hdrc: MHDRC RTL version 2.0 musb-hdrc: setup fifo_mode 4 musb-hdrc: 28/31 max ep, 16384/16384 memory USB Peripheral mode controller at 47401000 using PIO, IRQ 0 musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, HB-ISO Rx, HB-ISO Tx, SoftConn) musb-hdrc: MHDRC RTL version 2.0 musb-hdrc: setup fifo_mode 4 musb-hdrc: 28/31 max ep, 16384/16384 memory USB Host mode controller… Leia mais »

Christian Schultz
Visitante
Xultz

Obrigado pela resposta, Diego.
Eu vou tentar o processo novamente, anotando com cuidado todos os passos tomados, e se tiver dificuldade novamente, eu coloco as informações que você solicitou. Mas isto só deve acontecer depois de amanhã, meu pobre computador demora quase 12 horas prá gerar a imagem 🙂

Christian Schultz
Visitante
Xultz

Olá, consegui fazer a imagem minimal rodar, eu liguei a BBB e não pressionei o botão user, assim pelo jeito o bootloader ficou confuso 🙂
Eu optei por apagar a mmc com os comandos
mmc dev 1
mmc erase 0 512

e desta forma ela está bootando sem precisar pressionar o botão.
Obrigado pela ajuda!
No momento estou procurando instruções de como instalo a imagem da SD Card para a mmc da BBB, mas não estou encontrando as informações, se tiver alguma dica a respeito, seria bem interessante!