Beaglebone Black + Qt Embedded + Yocto - parte 1

qt embedded yocto
Este post faz parte da série Beaglebone Black + Qt Embedded + Yocto. Leia também os outros posts da série:

Dando continuidade na série de artigos sobre o uso do Yocto Project, agora veremos como criar uma distribuição Linux embarcado com o Qt Embedded para a Beaglebone Black. Se você ainda não teve contato com o Yocto, sugiro que faça o tutorial do Henrique Rossi sobre Beaglebone Black + Yocto.

 

Qt Embedded

O Qt (/ˈkjuːt/ "cute") é um framework para desenvolvimento de aplicações cross-plataforma. Isso quer dizer que as aplicações desenvolvidas podem rodar em diversos sistemas operacionais e arquiteturas de hardware diferentes sem que seja necessária alguma alteração no código fonte, sendo obrigatório apenas a sua recompilação. Aplicações com ou sem GUI (Graphical User Interface) são contempladas no framework e são desenvolvidas em C++. Ele é distribuído sob a licença GPL-3 e LGPL-2.1, além de possuir licença comercial. 

O Qt começou a ser desenvolvido pelos fundadores da Trolltech em 1991 que foi adquirida pela Nokia em 2008 para ser usado como interface gráfica para os celulares com sistema operacional Symbian. Em 2011 a Nokia vendeu a divisão de licenciamento comercial do Qt para a Digia.

Em sistemas Linux embarcado, onde recursos de processamento e memória são mais restritos dos que encontramos em desktop, devemos dar uma atenção especial quando o produto utilizará uma interface gráfica. Sistemas de gerenciamento de janelas (Windowing Systems), como por exemplo o X11 e Wayland, consomem bastante recursos e muitas vezes são impeditivos em aplicações embarcadas.

O Qt Embedded elimina a necessidade do uso de um sistema de gerenciamento de janelas e faz o acesso aos recursos gráficos diretamente pelo Linux framebuffer, que é o dispositivo responsável por abstrair o hardware gráfico. Dessa maneira o consumo de memória e processamento são melhores otimizados.

Montando o Ambiente de construção no yocto

Vamos criar os diretórios e baixar os fontes necessários:

Note que estamos usando a versão "dora" do Yocto Project. E baixamos também o layer meta-ti que possui o BSP (Board Support Package) com os fontes necessários (u-boot, kernel etc) para rodar a nossa distribuição na Beaglebone Black.

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

Adicione a linha abaixo no arquivo ~/yocto/build-dora/conf/bblayers.conf  para a variável BBLAYERS:

Modifique e adicione as seguintes variáveis no arquivo ~/yocto/build-dora/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, usaremos o gerenciador de pacotes ipk (ele é mais indicado para sistemas embarcados porque não exige muitos recursos para funcionar) e vamos instalar na imagem todos os módulos do kernel gerados.

Se você já fez o tutorial do Henrique, você pode simplesmente atualizar as cópias locais dos repositórios poky e meta-ti (git pull) e modificar o arquivo local.conf.

Gerando a imagem

Depois de baixado os fontes e ter configurado o sistema de build , vamos gerar uma imagem com os aplicativos demo do Qt Embedded versão 4.8.5.

Esta é a configuração de build que foi utilizada:

Gravando a imagem

Este procedimento é praticamente o mesmo utilizado no tutorial 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 o mouse não será reconhecido pelo kernel.

Se você já possui algum outro sistema operacional instalado no eMMC da BBB, como por exemplo o Angstrom, execute os seguintes comandos:

 Dessa maneira garantimos que o bootloader irá carregar os arquivos corretos do microSD card. 

Testando a imagem

Remova o microSD do computador e insira-o na BBB, 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.

Depois de energizar a placa você terá a seguinte imagem na TV:

qt-embedded-yocto-1
Imagem na TV do Qt Embedded

 

O log de boot é:

Experimente selecionar os diversos demos disponíveis para se ter uma ideia do que é possível ser feito com o Qt Embedded.

O que vem por aí

Na próxima parte veremos como gerar uma toolchain com o Qt Embedded para ser integrado a IDE Qt Creator para desenvolvimento e compilação das aplicações Qt.

Saiba mais

Embedded Linux Build Systems

Cozinhando com o Yocto Project

Desvendando Yocto Project – Primeiros passos

 

Outros artigos da série

Beaglebone Black + Qt Embedded + Yocto - parte 2 >>
Este post faz da série Beaglebone Black + Qt Embedded + Yocto. Leia também os outros posts da série:
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.

27
Deixe um comentário

avatar
 
18 Comment threads
9 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
4 Comment authors
Ivan BragaGustavo HenriqueDiego SueiroEduardo ScherrerProjeto de Kiosk Interativo para a Beaglebone Black com Yocto - parte 1 Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
trackback

[…] Beaglebone Black + Qt Embedded + Yocto – parte 1 […]

trackback

[…] Beaglebone Black + Qt Embedded + Yocto – parte 1 […]

trackback

[…] Beaglebone Black + Qt Embedded + Yocto – parte 1 […]

trackback

[…] BeagleBone Black + QT Embedded + Yocto - Parte 1 […]

trackback

[…] foi publicada uma série [8] [9] para a Beaglebone Black, porém usando a versão QtEmbedded […]

trackback

[…] #sharebar { padding: 0; text-align: left; list-style: none; margin: 0; } #sharebar span {float: left; padding: 0 5px; } #sharebar { display: block; margin: 0; padding: 5px 0 5px 5px; overflow: visible; text-align: center; height: 20px;} #sharebar #fb { text-align: left;} #sharebar #tww { width: 95px; overflow: hidden; } p.recommended { padding: 14px; text-align: center; } .page { position: relative; } Tweetar lang: en_US (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/pt_BR/all.js#xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs'); window.___gcfg = {lang: 'pt-BR'}; (function()… Leia mais »

trackback

[…] foi publicada uma série [8] [9] com a mesma finalidade, porém usando a versão QtEmbedded (Qt4) […]

trackback

[…] Beaglebone Black + Qt Embedded + Yocto – parte 1 […]

trackback

[…]  Beaglebone Black + Qt Embedded + Yocto – parte 1 […]

trackback

[…] Beaglebone Black + Qt Embedded + Yocto – parte 1 […]