Embedded Software Raspberry Pi - Yocto - Raspberry - PIGPIO - Qt een screenshot van een computerprogramma

Yocto - Raspberry - PIGPIO - Qt

Linux met pigpio-bibliotheek en Qt-toolchain

bitbake recept pigpio

Maak een recept voor pigpio-bibliotheek

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

local.conf-instellingen

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

Bestand met afbeeldingsconfiguratie maken

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

SDK-toolchain maken

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.