Software Embedded Raspberry Pi - Yocto - Raspberry - PIGPIO - Qt uno screenshot di un programma per computer

Yocto - Raspberry - PIGPIO - Qt

Linux con la libreria pigpio e la toolchain Qt

ricetta per bitbake pigpio

Crea la ricetta per la libreria pigpio

Per il progetto ci occorre la libreria pigpio, così da avere accesso a I2C, SPI e altri GPIO da una sola libreria.

Purtroppo non abbiamo trovato nessuna ricetta specifica nei comuni meta-layer per Yocto, quindi dobbiamo crearne una.

ricetta pigpio_git.bb

Creare una ricetta personalizzata per Yocto non è così difficile, ma i dettagli possono nascondere delle insidie.

Per ottenere il sorgente ed effettuare il bitbake, questa è la procedura standard:

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

Ma se effettui il "bitbake pigpio", riscontrerai alcuni errori, perché non ci sono librerie con versioni configurate e la posizione dei file manpages non è gestita correttamente.

errore di manpages

Si verifica per primo questo errore:

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

Puoi correggerlo con le seguenti impostazioni:

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 \
"

errore di non-symlink

Dopo aver corretto l'errore con le manpages, riscontrerai quest'altro errore:

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]

Ciò si verifica perché non ci sono librerie con versioni generate partendo dal file "CMakeLists.txt". Per risolvere il problema, aggiungiamo:

SOLIBS = ".so"
FILES_SOLIBSDEV = ""

avvio automatico da systemd di pigpiod

Per avviare automaticamente il daemon pigpio, aggiungi quanto segue:

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"

Nota

Se hai bisogno di file header installati per lo sviluppo, devi installare i "dev-pkgs" IMAGE_FEATURES

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

Scarica il meta-layer compresso con la ricetta da meta-interelectronix-rpi.

Configurazione globale dell'immagine

Impostazioni di local.conf

Scarica i file di configurazione della build compressi da rpi4-build.

Per prima cosa controlla il file bblayers.conf. All'interno troverai i meta-layer necessari. Se non l'hai già fatto, scaricali e poi modifica il tuo file bblayers.conf all'occorrenza.

A questo punto controlla il file local.conf.

impostazioni I2C

Se vuoi utilizzare un chip sensore (ad esempio un sensore di temperatura) collegato con I2C, devi abilitare I2C nel file local.conf.

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

rimozione di X11 e Wayland

Non rimuovendo X11 e Wayland, si verificano molti errori nel processo di bitbake.

Nel nostro caso, poiché non abbiamo bisogno di più finestre, li rimuoviamo.

DISTRO_FEATURES:remove = "ptest x11 wayland vulkan directfb"

Per utilizzare correttamente eglfs, aggiungiamo:

VC4DTBO ?= "vc4-fkms-v3d"

immagine di bitbake Raspberry

Creare il file di configurazione dell'immagine

Nel file "rpi4-64-qt5-gpio-image.bb" definiamo quali pacchetti ci occorrono nella distribuzione Linux. Come già accennato, qui possiamo includere i "dev-pkgs" IMAGE_FEATURES.

Il file è diviso in diverse sezioni, come ad esempio DEV-SDK, EXTRA_TOOLS e così via, per aggiungere pacchetti di comune utilizzo.

pacchetto pigpio

Questo pacchetto viene aggiunto annidato in CUSTOM_STUFF:

CUSTOM_STUFF = " \
    pigpio \
"

pacchetti Qt

I pacchetti necessari per Qt vengono aggiunti nei gruppi di pacchetti, a loro volta aggiunti qui:

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

Puoi trovare "packagegroup-qt5" nel file "packagegroup-qt5.bb" e aggiungere o eliminare pacchetti Qt.

Scarica il meta-layer compresso con l'immagine da meta-interelectronix-rpi-qt.Dopo, puoi effettuare il bitbake dell'immagine:

bitbake rpi4-64-qt5-gpio-image

Effettuare il bitbake dell'SDK

Creare una toolchain dell'SDK

Se vuoi sviluppare un'applicazione Qt per questa distribuzione Linux personalizzata, sicuramente vorrai una toolchain di compilazione incrociata da aggiungere alla configurazione QtCreator.

Puoi creare facilmente un SDK con il seguente comando bitbake:

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

Abbiamo i gruppi di pacchetti "packagegroup-qt5-toolchain-target packagegroup-qt5-qtcreator-debug" aggiunti al file di configurazione dell'immagine.

Installare l'SDK

Trovi l'SDK generato nella cartella seguente:

/tmp/deploy/sdk

Nel nostro caso si chiama "poky-glibc-x86_64-rpi4-64-qt5-gpio-image-cortexa72-raspberrypi4-64-toolchain-3.4.3.sh".

Questo file contiene le istruzioni di installazione e tutti i file necessari (in un formato compresso).

Copia il file nel computer di sviluppo ed eseguilo:

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

Segui le istruzioni per installare l'SDK.

Licenza sul diritto d'autore

Copyright © 2022 Interelectronix e.K.
Questo codice sorgente del Progetto è concesso in licenza sotto la licenza **GPL-3.0 * *.