bitbake recept pigpio
Voor dit project hebben we de pigpio-bibliotheek nodig om toegang te hebben tot I2C, SPI en andere GPIO's met één bibliotheek.
Helaas hebben we geen recept voor het in de gemeenschappelijke meta-layers voor Yocto en moeten we onze eigen maken.
pigpio_git.bb recept
Het maken van een aangepast recept voor Yocto is niet zo moeilijk - maar in detail kan het dat wel zijn.
De standaard procedure is, om de bron te krijgen en laat het bitbakken:
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
Maar als je 'bitbake pigpio', werpt het een aantal fouten op, omdat er geen versiebibliotheken geconfigureerd zijn en de locatie van de manpagesbestanden worden niet correct behandeld.
manpages fout
Eerst treedt de volgende fout op:
ERROR: pigpio-git-r0 do_package: QA Issue: pigpio: Files/directories were installed but not shipped in any package:
/usr/man
/usr/man/man1
...
Je kunt deze fout oplossen met de volgende instellingen:
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 fout
Na het oplossen van de fout met de manpages, verschijnt de volgende fout:
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]
Dit gebeurt omdat er geen versiebibliotheken zijn gegenereerd van 'CMakeLists.txt'. Om dit op te lossen, voegen we toe:
SOLIBS = ".so"
FILES_SOLIBSDEV = ""
systemd autostart pigpiod
Om de pigpio-daemon automatisch te starten, voegen we het volgende toe:
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"
Opmerking
Als je headerbestanden moet installeren voor ontwikkeling, moet je IMAGE_FEATURES "dev-pkgs installeren
IMAGE_FEATURES += "package-management dev-pkgs doc-pkgs"
Download de gezipte meta-layer met het recept van meta-interelectronix-rpi.
Algemene beeldconfiguratie
Download de gecomprimeerde configuratiebestanden van rpi4-build.
Bekijk eerst het bestand bblayers.conf. Binnenin vind je de nodige meta-layers. Download de meta-layers, als je dat nog niet hebt gedaan en pas je bblayers.conf bestand aan.
Bekijk ten tweede het bestand local.conf.
I2C-instellingen
Als je een sensorchip (bijv. een temperatuursensor) wilt gebruiken die is aangesloten op I2C, moet je I2C inschakelen in het bestand local.conf.
ENABLE_I2C = "1"
KERNEL_MODULE_AUTOLOAD_rpi += " i2c-dev"
Verwijder X11 en Wayland
Er zijn veel fouten in het bitbake-proces, als we X11 en Wayland niet verwijderen
In ons geval - omdat we geen meerdere vensters nodig hebben - verwijderen we ze.
DISTRO_FEATURES:remove = "ptest x11 wayland vulkan directfb"
Om eglfs goed te gebruiken, voegen we toe:
VC4DTBO ?= "vc4-fkms-v3d"
bitbake Raspberry-afbeelding
In het bestand 'rpi4-64-qt5-gpio-image.bb' definiëren we welke pakketten we nodig hebben in onze Linux-distributie. Hier kun je - zoals eerder vermeld - de IMAGE_FEATURES "dev-pkgs" opnemen.
Het bestand is onderverdeeld in verschillende secties zoals bijvoorbeeld DEV-SDK, EXTRA_TOOLS en ga zo maar door, om gemakkelijk benodigde pakketten toe te voegen.
pigpio-pakket
Dit pakket is toegevoegd onder CUSTOM_STUFF:
CUSTOM_STUFF = " \
pigpio \
"
Qt-pakketten
De pakketten die nodig zijn voor Qt worden toegevoegd in pakketgroepen en deze pakketgroepen worden hier toegevoegd:
IMAGE_INSTALL:append += " packagegroup-qt5 packagegroup-qt5-toolchain-target packagegroup-qt5-qtcreator-debug"
Je kunt "packagegroup-qt5" vinden in het bestand "packagegroup-qt5.bb" en Qt-pakketten toevoegen of verwijderen.
Download de gezipte meta-layer met de afbeelding van meta-interelectronix-rpi-qt.
Daarna kun je de afbeelding bitbakken:
bitbake rpi4-64-qt5-gpio-image
bitbake SDK
Als je een Qt-applicatie wilt ontwikkelen voor deze aangepaste Linux-distributie, wil je zeker een cross compile toolchain hebben, om het toe te voegen aan je QtCreator-configuratie.
Je kunt eenvoudig een SDK maken met het volgende bitbake-commando:
bitbake -c populate_sdk rpi4-64-qt5-gpio-image
We hebben de pakketgroepen 'packagegroup-qt5-toolchain-target packagegroup-qt5-qtcreator-debug' toegevoegd aan het afbeeldingsconfiguratiebestand.
SDK installeren
Je vindt de gegenereerde SDK in de volgende map:
/tmp/deploy/sdk
In ons geval heet het 'poky-glibc-x86_64-rpi4-64-qt5-gpio-image-cortexa72-raspberrypi4-64-toolchain-3.4.3.sh'.
Dit bestand bevat installatie-instructies en alle benodigde bestanden (in een gecomprimeerd formaat).
Kopieer dit bestand naar je ontwikkelcomputer en voer het uit:
./poky-glibc-x86_64-rpi4-64-qt5-gpio-image-cortexa72-raspberrypi4-64-toolchain-3.4.3.sh
Volg de instructies om de SDK te installeren.
Auteursrechtlicentie
Copyright © 2022 Interelectronix e.K.
Deze broncode van het project is gelicentieerd onder de GPL-3.0 licentie.