25 Comentários

Qt5.4 na Raspberry Pi 2 com Yocto Project (fido) – Parte 2

raspberry pi 2 qt5 qt creator
Este post faz parte da série Qt5.4 na Raspberry Pi 2 com Yocto Project. Leia também os outros posts da série:

Na primeira parte da série vimos como configurar o ambiente e gerar uma distribuição Linux Embarcado com Qt5 para Raspberry Pi 2 usando aceleração gráfica por hardware com o Yocto Project.

Agora vamos aprender como gerar e configurar as ferramentas necessárias para o desenvolvimento de aplicações Qt que serão executadas no nosso target, a Raspberry Pi 2. Basicamente precisaremos de uma toolchain contendo os utilitários e bibliotecas para podermos "cross-compilar" as aplicações desenvolvidas através da IDE Qt Creator.

Gerando a Toolchain para Qt5

É importante que você tenha realizado todos passos descritos no primeiro artigo da série.

Para gerarmos a toolchain devemos carregar as variáveis de ambiente do Yocto e instruí-lo a construir a toolchain para o Qt5.

O instalador da toolchain gerado está disponível em:  ~/yocto/build-fido/tmp/deploy/sdk/ 

e serve tanto para construção de aplicações Qt5 quanto para aplicações Linux que não utilizam o Qt.

Instalando a Toolchain

Vamos executar o script com a opção de instalação no caminho padrão sugerido.

Após a instalação nossa toolchain estará disponível em: /opt/poky/1.8/ .

Instalando o Qt Creator

Vamos baixar a versão 3.4.0 e instala-lá utilizando as opções padrão sugeridas:

Configurando o Qt Creator

Vamos realizar as configurações necessárias para que o Qt Creator utilize a toolchain que geramos. Feche o programa caso ele esteja aberto.

A primeira coisa a ser feita é adicionar as variáveis de ambiente da toolchain no script de inicialização do Qt Creator. Para isso adicione o conteúdo abaixo na primeira linha do arquivo ~/qtcreator-3.4.0/bin/qtcreator.sh:

O resultado final do arquivo ~/qtcreator-3.4.0/bin/qtcreator.sh. deve ser:

Agora vamos executar o Qt Creator. É importante dizer que SEMPRE que formos abrir o programa utilizaremos o comando abaixo, caso contrário o Qt Creator não funcionará corretamente com a toolchain gerada:

A figura abaixo mostra a tela inicial do aplicativo:

raspberry pi 2 qt5 qt creator yocto
Figura 1 - Qt Creator

Agora vamos criar um Kit contendo as informações do nosso target (Raspberry Pi 2) e da nossa toolchain. Siga os passos descritos abaixo:

Ao final desses procedimentos devemos ter a tela de configuração das opções "Build & Run" semelhante a essa:

raspberry pi 2 qt5 qt creator yocto
Figura 2 - Qt Creator com a Raspberri Pi 2 Configurada

Compilando uma aplicação

Como não poderia deixar de ser, vamos criar uma aplicação "Hello World". Execute os seguintes comandos no shell:

Teremos um arquivo de projeto ~/qt5-helloworld/helloworld.pro:

E um código fonte da aplicação ~/qt5-helloworld/hello.cpp:

Vamos importar nosso projeto para dentro do Qt Creator. Para isso, vá em "File" -> "Open File or Project", e selecione o arquivo ~/qt5-helloworld/helloworld.pro.

Na próxima tela aparecerá qual Kit deverá ser utilizado, se você marcou o Kit Rpi2 como default ("Make Default") na seção anterior ele já estará selecionado. Para finalizar clique em "Configure Project".

 Agora vamos construir a aplicação em "Build" -> "Build Project helloworld"

Testando a aplicação

Copie o binário gerado pelo Qt Creator em ~/qt5-helloworld/build-qt5-helloworld-Rpi2-Debug/hello para a raíz de um pendrive ou envie via scp para a placa.

Insira o pendrive na Raspberry Pi 2, plugue um cabo conversor USB Serial e abra uma conexão serial.

Insira o microSD card gerado na primeira parte dessa série, conecte a Rpi 2 a uma TV através de uma cabo HDMI, conecte o pendrive com o binário gerado e energize a placa, logue como root e execute os seguintes comandos:

Note que rodamos a aplicação com os parâmetros "-platform eglfs", isso indica ao Qt que ele deve rodar utilizando o plugin de plataforma EGLFS.

A TV ficará com a seguinte imagem:

raspberry pi 2 qt5 qt creator yocto
Figura 3 - Qt5 Helloworld

Notem que está escrito no canto esquerdo da tela a frase: "Hello Qt!"

Conclusão

Com ambas as partes desse tutorial é possível gerar uma distribuição Linux embarcado customizado usando o Qt5 com aceleração gráfica por hardware para a Raspberry Pi 2 e desenvolver aplicações sem muitas complicações.

Se você é novato no mundo de programação Qt, sugiro que dê uma lida no material Qt for beginners.

Saiba mais

Embedded Linux Build Systems

Desvendando Yocto Project – Primeiros passos

Raspberry pi + Qt5 + Yocto - parte 1

Outros artigos da série

<< Qt5.4 na Raspberry Pi 2 com Yocto Project (fido) - Parte 1
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

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

Linux Embarcado » Qt5.4 na Raspberry Pi 2 com Yocto Project (fido) - Parte 2
Comentários:
Notificações
Notificar
guest
25 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Átila Santos
Átila Santos
07/09/2015 20:49

Olá Diego,
Realizei passo a passo deste tutorial, mas durante a compilação, o Qt apresenta o seguinte erro:
c: command not found
Ao que me parece, o compilador não está configurado, mas está. Fui lá em Tools, options, build & run e configurei o compiler, debuggers, Qt version e Kits, mesmo assim, o erro não desaparece.
Sabe o que pode estar acontecendo?

Vinicius Maciel
vinifr
Reply to  Átila Santos
08/09/2015 08:17

Ola Atila,

Eu tive esse mesmo problema, ai descobri que o caminho da variável environment-setup-cortexa7hf-vfp-vfpv4-neon-poky-linux-gnueabi estava incorreto. Depois de colocar o caminho correto, funcionou.

Átila Santos
Átila Santos
Reply to  vinifr
08/09/2015 09:31

Ola vinifr,

O arquivo environment-setup-cortexa7hf-vfp-vfpv4-neon-poky-linux-gnueabi se encontra na pasta /opt/poky/1.8.

Em qual arquivo ou onde consigo editar o caminho desta variável para que fique correto?

;D

Vinicius Maciel
vinifr
Reply to  Átila Santos
08/09/2015 09:57

Dentro do arquivo qtcreator.sh. No meu caso, no artigo estava /opt/poky/1.6.2, mas a versão que instalei era 1.6.3. Mas isso na Raspberry B: http://embarcados.com.br/raspberry-pi-qt5-yocto-parte-2/

Átila Santos
Átila Santos
Reply to  vinifr
08/09/2015 11:41

Muito obrigado! Consegui resolver o problema com a sua ajuda!

Abraços!

joël maranhão
21/06/2015 08:07

In Figura 2 in the Device field, I don't have any options. Do I need to add a device clicking Manage... or will it be unnecessary?

Diego Sueiro
Diego Sueiro
Reply to  joël maranhão
21/06/2015 08:24

Click on manage and create a new one.
It's nit this tutorial but you can configure extra settings do connect to the board and perform remote debugging, for example.

joël maranhão
12/06/2015 10:39

Until I figure out the meta-toolchain-qt5 build issue, I would like to try out Wayland see if how it does with QtWebEngine.

So now I have DISTRO_FEATURES_remove = "x11" in my ~/yocto/build/conf/local.conf and I added qtwayland module to the image. Well Is that the correct way to do it? (it's compiling so far).

Looks I may need to do something else to add the Wayland plugin for Qt. Any pointers?

Diego Sueiro
Diego Sueiro
Reply to  joël maranhão
12/06/2015 11:10

Joel,

As far as I know there isn't any support for wayland on Rpi.

I don't have knowledge on Wayland, sorry.

joël maranhão
Reply to  Diego Sueiro
12/06/2015 11:19

I think I remember trying some test image a couple of months ago. Nevermind, this is really not critical for me. I was just interested, but I think you are right.

FYI here a link about Weston Wayland
http://wayland.freedesktop.org/raspberrypi.html

joël maranhão
11/06/2015 18:23

**Part 1** seems to have succeeded well with QtWebEngine + QML plugin. I will test again now. I still got a problem with toolchain. I hope I haven't missed something this time. I have bitbake meta-toolchain-qt5 ERROR: Unable to install packages. Command '/home/otto/yocto/build/tmp/sysroots/x86_64-linux/usr/bin/opkg-cl -f /home/otto/yocto/build/tmp/work/cortexa7hf-vfp-vfpv4-neon-poky-linux-gnueabi/meta-toolchain-qt5/1.0-r0/opkg.conf -o /home/otto/yocto/build/tmp/work/cortexa7hf-vfp-vfpv4-neon-poky-linux-gnueabi/meta-toolchain-qt5/1.0-r0/sdk/image/opt/poky/1.8/sysroots/cortexa7hf-vfp-vfpv4-neon-poky-linux-gnueabi --force_postinstall --prefer-arch-to-version install packagegroup-core-standalone-sdk-target-dbg packagegroup-core-standalone-sdk-target packagegroup-qt5-toolchain-target' returned 255: Installing packagegroup-core-standalone-sdk-target-dbg (1.0-r8) on root. ... ... Configuring packagegroup-core-standalone-sdk-target. Collected errors: * satisfy_dependencies_for: Cannot satisfy the following dependencies for packagegroup-qt5-toolchain-target: * libx11-6 (>= 1.6.2) * libxcb1 (>= 1.11) * libxau6 (>= 1.0.8) * libxdmcp6 (>= 1.1.1) * * opkg_install_cmd: Cannot install package packagegroup-qt5-toolchain-target. ERROR: Function… Leia mais »

Diego Sueiro
Diego Sueiro
Reply to  joël maranhão
11/06/2015 18:43

Do you have added this line to local.conf?
DISTRO_FEATURES_remove = "x11 wayland"

joël maranhão
Reply to  Diego Sueiro
11/06/2015 19:29

Yeah I did, this is what I added at the top of the default file ... but my "default" has a lot more line that I didn't touch ... may be that's the issue


otto:~/yocto/build/conf$ ls -al local.conf
-rw-r--r-- 1 otto otto 10259 Jun 11 06:39 local.conf

MACHINE = "raspberrypi2"
LICENSE_FLAGS_WHITELIST="commercial license"
DISTRO = "poky"
DL_DIR = "${TOPDIR}/../dl"
PACKAGE_CLASSES = "package_ipk"
DISTRO_FEATURES_remove = "x11 wayland"

# Set Rpi GPU Memory to 128MB
GPU_MEM = "128"

joël maranhão
Reply to  Diego Sueiro
14/06/2015 11:35

still fighting this issue (even on a Sunday), I am guessing that it should have been straight forward. At the top of the log I found this additional message that may be relevant, but it didn't raise a hint on my side. May be it does on yours. [email protected] Vinícius Martins Meneses:~/yocto/build$ bitbake meta-toolchain-qt5 Loading cache: 100% |##############################################################################################################################################################################################| ETA: 00:00:00 Loaded 2025 entries from dependency cache. NOTE: Resolving any missing task queue dependencies Build Configuration: BB_VERSION = "1.26.0" BUILD_SYS = "x86_64-linux" NATIVELSBSTRING = "Debian-7.8" TARGET_SYS = "arm-poky-linux-gnueabi" MACHINE = "raspberrypi2" DISTRO = "poky" DISTRO_VERSION = "1.8" TUNE_FEATURES = "arm armv7a… Leia mais »

joël maranhão
Reply to  Diego Sueiro
14/06/2015 13:56

OK my 2 cents is that your Ubuntu 14.04 environment has the correct version of libx11-6 i.e. >= 1.6.2, I think it mysteriously needs it even if removed from the distro. I hope this is not a completely silly diagnose.

Do you mind running this command on your machine?


$ apt-cache policy libx11-6

Diego Sueiro
Diego Sueiro
Reply to  joël maranhão
14/06/2015 19:14

Here it is:

apt-cache policy libx11-6
libx11-6:
Installed: 2:1.6.2-1ubuntu2

I've added this package installation on the part 1 of this series.

joël maranhão
Reply to  Diego Sueiro
15/06/2015 04:48

Ok I have now found out why my build is failing. Debian 7.8 won't install libx11-6 >= 1.6.2, I think I will upgrade my build machine to Jessie or find another computer. Thanks!

joël maranhão
Reply to  Diego Sueiro
15/06/2015 15:34

Upgraded to Debian 8.1 Jessie, deleted my tmp, and started over. The RPi2 image built fine (Tutorial Part 1), but the I am getting the same message when bitbake meta-toolchain-qt5. Collected errors: * satisfy_dependencies_for: Cannot satisfy the following dependencies for packagegroup-qt5-toolchain-target: * libx11-6 (>= 1.6.2) * libxcb1 (>= 1.11) * libxau6 (>= 1.0.8) * libxdmcp6 (>= 1.1.1) * * opkg_install_cmd: Cannot install package packagegroup-qt5-toolchain-target. libx11-6, libxau6, libxdmcp6 satisfy the dependency rules, but not libxcb1. [email protected] Vinícius Martins Meneses:~/yocto/build$ apt-cache policy libxcb1 libxcb1: Installed: 1.10-3+b1 Candidate: 1.10-3+b1 Version table: *** 1.10-3+b1 0 500 http://ftp.us.debian.org/debian/ jessie/main amd64 Packages 500 http://http.debian.net/debian/ jessie/main amd64… Leia mais »

Diego Sueiro
Diego Sueiro
Reply to  joël maranhão
15/06/2015 15:44

Sorry,

But I don't use Debian.

joël maranhão
Reply to  Diego Sueiro
15/06/2015 17:08

No worries. May be someone else here can help. I am going to try Ubuntu 14.04! 😉 Cheers mate

joël maranhão
Reply to  Diego Sueiro
18/06/2015 18:26

BTW Would you know I list I could post my meta-qt5 question? It puzzles me that I can't get to build my toolchain on Debian 8.1. Nevermind.

Diego Sueiro
Diego Sueiro
Reply to  joël maranhão
18/06/2015 18:30

This one:
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Did you tried on Ubuntu 14.04?

joël maranhão
Reply to  Diego Sueiro
18/06/2015 18:34

not yet, actually we are buying a machine for that purpose. Hence trying lists, just in case there is a hack. Cheers

joël maranhão
Reply to  Diego Sueiro
19/06/2015 20:37

On Ubuntu 14.04 the toolchain took about 4 hours to build, got a few WARNINGs ... hopefully nothing critical. Thx [email protected]:~/yocto/build-fido$ bitbake meta-toolchain-qt5 Loading cache: 100% |######################################################################################################################################################| ETA: 00:00:00 Loaded 2025 entries from dependency cache. Parsing recipes: 100% |####################################################################################################################################################| Time: 00:00:00 Parsing of 1547 .bb files complete (1545 cached, 2 parsed). 2024 targets, 280 skipped, 0 masked, 0 errors. NOTE: Resolving any missing task queue dependencies Build Configuration: BB_VERSION = "1.26.0" BUILD_SYS = "x86_64-linux" NATIVELSBSTRING = "Ubuntu-14.04" TARGET_SYS = "arm-poky-linux-gnueabi" MACHINE = "raspberrypi2" DISTRO = "poky" DISTRO_VERSION = "1.8" TUNE_FEATURES = "arm armv7a vfp thumb neon callconvention-hard vfpv4 cortexa7" TARGET_FPU… Leia mais »

trackback
15/01/2016 17:37

[…] qt5 toolchain raspberry pi2 qt apps using yocto see tutorial. build machine nuc debian […]

Talvez você goste:

Séries



Outros da Série

Menu

WEBINAR
 

Soluções inteligentes para acionamento de MOSFETs/IGBTs com família STDRIVE

Data: 08/10 às 15:00h - Apoio: STMicroelectronics
 
INSCREVA-SE AGORA »



 
close-link