BeagleBone Black + Yocto

beaglebone black com yocto 7Masters

Muito tem sido comentado sobre plataformas de desenvolvimento suportadas por grandes comunidades, tal como a BeagleBone Black e a Raspberry Pi. Ambas têm atingido um grande público em específico, aquele ávido por conhecimento em Linux embarcado. Muito bem! Aqui começa um tutorial de como criar imagens personalizadas para a placa BeagleBone Black com Yocto Project

 

 

 

O que é a BeagleBone Black?

 

A BeagleBone Black é o mais novo membro da família BeagleBoard e suas características estão listadas no seu Wiki oficial. Algumas das grandes melhorias dessa placa com relação à sua versão anterior, “white”, são:

  • Processador: TI Sitara AM3359 de 1GHz;
  • Memória DRAM: DDR3L 400MHz de 512 MB;
  • Memória Flash: eMMC de 2GB e conector para microSD card.

 

E onde podemos gravar o nosso querido Linux na placa? Tanto a memória Flash eMMC quanto um microSD card podem receber todas as imagens necessárias para compor o sistema Linux, as quais, basicamente, são: 

  • Bootloader;
  • Kernel Linux;
  • Sistema de arquivos.

 

Agora que é conhecido o que gravar na placa e os dispositivos de armazenamento oferecidos por ela, como é possível gerar tais imagens? Pode-se utilizar tanto imagens pré-compiladas disponibilizadas no site oficial, ou criar imagens customizadas a partir das técnicas apresentadas no artigo Embedded Linux Build Systems, de Diego Sueiro.

 

Neste artigo será utilizado um microSD card como dispositivo de armazenamento e o Yocto Project como build system.

 

 

O que é Yocto Project?

 

O Yocto Project é um projeto open-source colaborativo que oferece templates, ferramentas e métodos para auxiliar na criação de sistemas baseados em Linux para sistemas embarcados, independente da arquitetura de hardware utilizada. O Yocto inclui em sua arquitetura o build system Poky, que, por sua vez, é derivado do build system OpenEmbedded.

 

O OpenEmbedded é composto de dois elementos principais, como mostrado abaixo: BitBake e Metadata. BitBake é uma ferramenta de build muito flexível mantida pelos projetos Yocto e OpenEmbedded, comandada pelas instruções presentes no Metadata e com a finalidade de gerar, entre outros, as imagens finais do sistema de arquivos, kernel, bootloader e SDKs.

 

beaglebone black com yocto
Figura 1: BitBake, ferramenta de build mantida pelos projetos Yocto e OpenEmbedded

 

 

Gerando as imagens para a Beaglebone Black com Yocto

 

Como sistema host foi utilizado um PC com a distribuição Ubuntu 14.04 64-bits instalada. Algumas dependências devem ser resolvidas no sistema antes de prosseguir. Para isso, execute o seguinte comando:

 

Para a geração das imagens da placa BeagleBone Black é necessário utilizar seus respectivos metadados, tais como receitas, classes, tarefas e configuração.

 

Precisa-se, agora, realizar o download de todos esses itens. Neste artigo é utilizada a última versão estável do Yocto, na versão 2.2 e nomeada Morty. Para isso, siga os seguintes comandos:

 

É criado o diretório build-bbb-morty, contendo o sub-diretório conf, onde são armazenados os arquivos de configuração do projeto local.conf e bblayers.conf. Os dois arquivos precisam ser alterados.

  

Arquivo local.conf

 

A linha onde a variável MACHINE é configurada precisa ser substituída pelo seguinte conteúdo:

 

Adicione o seguinte conteúdo:

 

Arquivo bblayers.conf

 

Não é necessário acrescentar layers ao build.

 

Build

 

Neste ponto é necessário selecionar uma imagem para ser gerada para a BeagleBone Black. É só retornar ao diretório build-bbb-morty e executar o BitBake com os seguintes comandos:

 

Configuração de build utilizada:

 

Esse comando cria a menor e mais simples imagem para a placa. Depois de algum tempo, são geradas as imagens em ~/beaglebone-black/yocto/builds/build-bbb-morty/tmp/deploy/images/beaglebone, as quais devem ser gravadas no microSD card. Tais imagens são: 

  • core-image-minimal-beaglebone.tar.bz2 (rootfs - sistema de arquivos);
  • MLO (bootloader de primeiro estágio);
  • u-boot.img (bootloader de segundo estágio - U-Boot);
  • zImage (kernel) e;
  • zImage-am335x-boneblack.dtb (Device Tree Binary).

 

 

Gravação das imagens no microSD Card

 

Para a gravação dessas 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, as imagens geradas anteriormente são copiadas da seguinte forma:

 

Pronto! Agora é conectar o microSD card na Beaglebone Black e curtir! A porta serial de debug da placa é usada para o console do sistema operacional  e o conteúdo de sua saída é mostrado abaixo. Pode ser montado um cabo serial como mostrado no tutorial BeagleBone Black Serial.

 

 

 

Nos próximos artigos serão adicionados aplicativos e bibliotecas, tal como Qt, ao sistema de arquivos, de forma a customizar a imagem mínima criada. Também tenho utilizado com frequência o Buildroot como build system, mas no momento tenho preferência pelo Yocto. E você? Usa o Yocto em seus projetos?

 

 

Para aprender mais

 

Embedded Linux Build Systems

Cozinhando com o Yocto Project

Desvendando Yocto Project – Primeiros passos

Beaglebone Black + Yocto Daisy (Versão 1.6)

Lançada Nova Versão 1.7 (dizzy) do Yocto Project

Desenvolvendo um Kiosk Interativo para a Beaglebone Black com Yocto – parte 1

Beaglebone Black + Qt Embedded + Yocto – parte 1

Beaglebone Black + Qt5 + Yocto - parte 1

Como criar uma imagem customizada para a BeagleBone Black com Buildroot

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.

Henrique Rossi
Engenheiro eletricista com ênfase em eletrônica e pós-graduado em Engenharia de Software. Comecei um mestrado, mas o interrompi. Especialista na área de sistemas embarcados, com mais de 12 anos de experiência em desenvolvimento de firmware (sistemas baremetal e baseados em RTOS) e Linux Embarcado. Atualmente sou administrador do site Embarcados, trabalho num fabricante de Set-Top Box e atuo como consultor/desenvolvedor na área de sistemas embarcados.
recentes antigos mais votados
Notificar
Rodrigo Machado
Visitante
Rodrigo Machado

Olá Henrique gostaria de saber se você já desenvolveu algo para a beaglebone black utilizando o kinect.

Henrique Rossi
Visitante

Olá Rodrigo!

Nunca trabalhei com o kinect. Parece ser uma implementação muito interessante! 🙂

Fernando França
Visitante

Ótimo artigo Henrique, obrigado por compartilhar esse conhecimento. Venho trabalhando com Linux embarcado profissionalmente há pouco tempo utilizando RPi e Raspbian e me preparando para abandonar o Raspbian para algo mais customizado com o Yocto.

Henrique Rossi
Visitante

Muito obrigado Fernando!

Eu acho que está seguindo o caminho correto quando se trata de produto. Também já usei a RPi em projetos e deixa a sua solução mais enxuta e coesa com o que precisa. Se precisar de ajuda, estou à disposição.

Abraços,
Henrique

Gabriel Habib
Visitante
Gabriel Habib

Henrique, gostaria de saber se existe a possibilidade de incluir os drivers do BBView juntamente com Yocto + QT ?

Obrigado!

Henrique Rossi
Visitante

Olá Gabriel,

Eu nunca usei essa expansion board, mas teoricamente seria habilitar o seu .dto no arquivo uEnv.txt da partição de boot. Adicione na variável optargs o seguinte conteúdo:

capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN capemgr.enable_partno=BB-VIEW-LCD7-01

Use estes links também como referência:

http://www.element14.com/community/thread/31051/l/how-to-bb-view-on-latest-debian?displayFullThread=true

http://www.element14.com/community/servlet/JiveServlet/downloadBody/65082-102-5-294046/BB%20VIEW%20User%20Manual%20V3.pdf

Abraços

trackback

[…] BeagleBone Black + Yocto […]

trackback

[…] BeagleBone Black + Yocto […]

trackback
trackback

[…] quiser se aprofundar mais no assunto o Embarcados já possui alguns bons posts a respeito [3] [4] [5] […]

trackback

[…] BeagleBone Black + Yocto […]

trackback

[…] BeagleBone Black + Yocto […]

trackback

[…] Nesta série de artigos sobre o uso do Yocto Project [1] veremos como criar uma distribuição Linux embarcado com o Qt5 [2] para a Raspberry pi [3] usando seu acelerador gráfico VideoCore IV [4]. Na segunda parte veremos como gerar um SDK e integrá-lo ao QtCreator [5] para que possamos desenvolver e compilar aplicações para o nosso target. Se você ainda não teve contato com o Yocto, sugiro que faça o tutorial do Henrique Rossi [6] sobre Beaglebone Black + Yocto [7]. […]