Software embarcado Raspberry Pi - Yocto - Framboesa - PIGPIO - Qt uma captura de tela de um programa de computador

Yocto — Raspberry — PIGPIO — Qt

Linux com biblioteca do Pigpio e ferramentas do Qt

receita de BitBake do Pigpio

Crie uma receita para a biblioteca do Pigpio

Para este projeto, precisamos ter a biblioteca do Pigpio para ter acesso a I2C, SPI e outros GPIOs com uma biblioteca.

Infelizmente, não encontramos nenhuma receita para ele nas meta-camadas comuns para o Yocto e temos que criar a nossa própria.

pigpio_git.bb recipe

Criar uma receita personalizada para o Yocto não é tão difícil, mas, de forma detalhada, pode ser.

O procedimento padrão é obter a fonte e deixá-la fazer BitBake:

DESCRIPTION = "pigpio"
SECTION = "devel/libs"
LICENSE = "CLOSED"
LIC_FILES_CHKSUM = "file://UNLICENCE"

COMPATIBLE_MACHINE = "^rpi$"

SRC_URI = "git://github.com/joan2937/pigpio.git;protocol=https;tag=v79 \
"

S = "${WORKDIR}/git"

inherit pkgconfig cmake

Mas se você fizer "BitBake do Pigpio", ele emite alguns erros, porque não há bibliotecas configuradas nessa versão e a localização dos arquivos de páginas de manual não é tratada corretamente.

manpages error

Primeiro, ocorre o seguinte erro:

ERROR: pigpio-git-r0 do_package: QA Issue: pigpio: Files/directories were installed but not shipped in any package:
  /usr/man
  /usr/man/man1
  ...

Você pode corrigir esse erro com as seguintes configurações:

FILES:${PN}-doc += "\
     /usr/man/man1/pigs.1 \
     /usr/man/man1/pig2vcd.1 \
     /usr/man/man1/pigpiod.1 \
     /usr/man/man3/pigpio.3 \
     /usr/man/man3/pigpiod_if.3 \
     /usr/man/man3/pigpiod_if2.3 \
"

non-symlink error

Depois de corrigir o erro com as páginas de manual, o próximo erro aparece:

ERROR: pigpio-git-r0 do_package_qa: QA Issue: pigpio rdepends on pigpio-dev [dev-deps]
ERROR: pigpio-git-r0 do_package_qa: QA Issue: -dev package pigpio-dev contains non-symlink .so '/usr/lib/libpigpio.so'
-dev package pigpio-dev contains non-symlink .so '/usr/lib/libpigpiod_if2.so'
-dev package pigpio-dev contains non-symlink .so '/usr/lib/libpigpiod_if.so' [dev-elf]

Isso acontece, porque não há bibliotecas com versões geradas a partir de "CMakeLists.txt". Para corrigir isso, adicionamos:

SOLIBS = ".so"
FILES_SOLIBSDEV = ""

systemd autostart pigpiod

Para iniciar automaticamente o daemon do Pigpio, adicionamos o seguinte:

do_install() {
    install -d ${D}${bindir}
    install -d ${D}${libdir}
    install -d ${D}${PYTHON_SITEPACKAGES_DIR}
     
    install -m 0644 ${S}/pigpio.py ${D}${PYTHON_SITEPACKAGES_DIR}

    install -d ${D}${systemd_system_unitdir}
    install -m 0644 ${S}/util/pigpiod.service ${D}${systemd_system_unitdir}

    cmake_do_install
}

SYSTEMD_SERVICE:${PN} = "pigpiod.service"

Observação:

Se você precisa de arquivos de cabeçalho instalados para desenvolver, é preciso instalar IMAGE_FEATURES "dev-pkgs

IMAGE_FEATURES += "package-management dev-pkgs doc-pkgs"

Baixe a meta-camada zipada com a receita de meta-interelectronix-rpi.

Configuração da imagem global

configurações do local.conf

Baixe os arquivos de configuração de compilação zipados do rpi4-build.

Primeiro dê uma olhada no arquivo bblayers.conf. Dentro você encontra as meta-camadas necessárias. Baixe as meta-camadas, se você ainda não tiver feito isso e ajuste o seu arquivo bblayers.conf.

Em segundo lugar, dê uma olhada no arquivo local.conf.

I2C settings

Se você quiser usar um chip de sensor (por exemplo, um sensor de temperatura) conectado ao I2C, será preciso habilitar o I2C no arquivo local.conf.

ENABLE_I2C = "1"
KERNEL_MODULE_AUTOLOAD_rpi += " i2c-dev"

Remove X11 and Wayland

Existem muitos erros no processo do BitBake se não removermos X11 e Wayland

No nosso caso, como não precisamos de várias janelas, nós as removemos.

DISTRO_FEATURES:remove = "ptest x11 wayland vulkan directfb"

Para usar eglfs corretamente, adicionamos:

VC4DTBO ?= "vc4-fkms-v3d"

imagem de BitBake do Raspberry

Crie o arquivo de configuração da imagem

No arquivo "rpi4-64-qt5-gpio-image.bb" definimos quais pacotes precisamos na nossa distribuição Linux. Aqui você pode, como mencionamos anteriormente, incluir IMAGE_FEATURES "dev-pkgs".

O arquivo é separado em várias seções, como, por exemplo, DEV-SDK, EXTRA_TOOLS e assim por diante, para adicionar facilmente pacotes necessários.

pigpio package

Este pacote é adicionado em CUSTOM_STUFF:

CUSTOM_STUFF = " \
    pigpio \
"

Qt packages

Os pacotes necessários para o Qt são adicionados aos grupos de pacotes e estes grupos de pacotes são adicionados aqui:

IMAGE_INSTALL:append += " packagegroup-qt5 packagegroup-qt5-toolchain-target packagegroup-qt5-qtcreator-debug"

Você pode encontrar "packagegroup-qt5" no arquivo "packagegroup-qt5.bb" e adicionar ou excluir pacotes do Qt.

Baixe a meta-camada zipada com a imagem em meta-interelectronix-rpi-qt.

Depois disso, você pode fazer o BitBake da imagem:

bitbake rpi4-64-qt5-gpio-image

SDK de BitBake

Crie ferramentas do SDK

Se você deseja desenvolver um aplicativo do Qt para esta distribuição Linux personalizada, será essencial ter ferramentas de compilação cruzada, para adicioná-lo à sua configuração do QtCreator.

Você pode facilmente criar um SDK com o seguinte comando de BitBake:

bitbake -c populate_sdk rpi4-64-qt5-gpio-image

Temos os grupos de pacotes "packagegroup-qt5-toolchain-target packagegroup-qt5-qtcreator-debug" adicionados ao arquivo de configuração da imagem.

Install SDK

Você encontra o SDK gerado no seguinte diretório:

/tmp/deploy/sdk

No nosso caso, ele se chama "poky-glibc-x86_64-rpi4-64-qt5-gpio-image-cortexa72-raspberrypi4-64-toolchain-3.4.3.sh".

Este arquivo contém instruções de configuração e todos os arquivos necessários (em um formato compactado).

Copie este arquivo para o seu computador de desenvolvimento e execute-o:

./poky-glibc-x86_64-rpi4-64-qt5-gpio-image-cortexa72-raspberrypi4-64-toolchain-3.4.3.sh

Siga as instruções para instalar o SDK.

Licença de direitos autorais

Copyright © 2022 Interelectronix e.K.
Este código-fonte do Projeto está licenciado sob a licença * * GPL-3.0 * *.