BeagleBone Black + Yocto

beaglebone-black
beaglebone-black

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 usando o Yocto Project.

 

Aprenda mais sobre Linux Embarcado e Yocto Project com os vídeos das palestras do "Seminário Linux Embarcado 2015"

 

 

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.

 

BitBake, ferramenta de build mantida pelos projetos Yocto e OpenEmbedded
Figura 1: BitBake, ferramenta de build mantida pelos projetos Yocto e OpenEmbedded

 

 

Gerando as imagens para a Beaglebone Black

 

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.

  

local.conf

 

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

 

Adicione o seguinte conteúdo:

 

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.

 

 

Confira também como criar uma imagem customizada para a BeagleBone Black com Buildroot, uma outra ferramenta muito utilizada atualmente.

 

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

Raspberrypi + Yocto

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

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

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

Beaglebone Black + Qt Embedded + Yocto – parte 1

Beaglebone Black + Qt Embedded + Yocto – parte 2

Beaglebone Black + Qt5 + Yocto - parte 1

Beaglebone Black + Qt5 + Yocto - parte 2

Raspberry pi + Qt5 + Yocto - parte 1

Raspberry pi + Qt5 + Yocto - parte 2

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.

Deixe um comentário

47 Comentários em "BeagleBone Black + Yocto"

Notificar
avatar
 
Ordenar por:   recentes | antigos | mais votados
Rodrigo Machado
Visitante
Rodrigo Machado

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

Fernando França
Visitante
Fernando França

Ó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.

Gabriel Habib
Visitante
Gabriel Habib

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

Obrigado!

trackback
Lançada Nova Versão 1.8 (fido) do Yocto Project

[…] BeagleBone Black + Yocto […]

trackback
BeagleBone Black + Qt Embedded + Yocto - Parte 2

[…] BeagleBone Black + Yocto […]

trackback
Yocto Project - Introdução - Cleiton Bueno
trackback
Gravando uma nova imagem na Beaglebone Black

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

trackback
Yocto Project

[…] BeagleBone Black + Yocto […]

trackback
Embedded Linux Build Systems - Embarcados - Sua fonte de informações sobre Sistemas Embarcados

[…] BeagleBone Black + Yocto […]

trackback
Raspberry pi Qt5 Yocto

[…] 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]. […]

wpDiscuz