ricetta per bitbake 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
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
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
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 * *.