Indlejret software Raspberry Pi - Yocto - Raspberry - PIGPIO - Qt et skærmbillede af et computerprogram

Yocto - Raspberry - PIGPIO - Qt

Linux med Pigpio library og Qt-værktøjskæde

bitbake opskrift pigpio

Opret opskrift til pigpio library

Til dette projekt skal vi have pigpio-biblioteket til at have adgang til I2C, SPI og andre GPIO'er med ét bibliotek.

Desværre fandt vi ingen opskrift på det i de almindelige metalag for Yocto, og vi er nødt til at skabe vores egen.

###pigpio_git.bb opskrift

Det er ikke så svært at oprette en brugerdefineret opskrift til Yocto – men i detaljer kan det være.

Standardproceduren er, at få kilden og lade den 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

Men hvis du "bitbarke pigpio", opstår der nogle fejl, fordi der ikke er nogle versionerede biblioteker konfigureret, og placeringen af manpages-filerne ikke håndteres korrekt.

manpages-fejl

Først opstår følgende fejl:

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

Du kan rette denne fejl med følgende indstillinger:

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 \
"
ikke-symlink-fejl

Efter fastsættelse af fejlen med manpages, kommer den næste fejl op:

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]

Dette sker, fordi der ikke er nogen versionerede biblioteker genereret fra "CMakeLists.txt". For at løse dette, tilføjer vi:

SOLIBS = ".so"
FILES_SOLIBSDEV = ""

systemd autostart pigpiod

For at autostarte pigpio-dæmonen, tilføjer vi følgende:

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"

Bemærkning

Hvis du har brug for at have header-filer installeret til udvikling, du er nødt til at installere IMAGE_FEATURES "dev-pkgs

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

Download det zippede metalag med opskriften fra meta-interelectronix-rpi.

Global billedkonfiguration

local.conf-indstillinger

Download de zippede byggekonfigurationsfiler fra rpi4-build.

Tag først et kig på bblayers.conf-filen. Indeni finder du de nødvendige metalag. Download metalagene, hvis du ikke allerede har gjort det, og juster din bblayers.conf-fil.

Derefter tager du et kig på local.conf-filen.

I2C-indstillinger

Hvis du vil bruge en sensorchip (f.eks. en temperaturføler) forbundet med I2C, skal du aktivere I2C i local.conf-filen.

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

Fjern X11 og Wayland

Der er mange fejl i bitbake-processen, hvis vi ikke fjerner X11 og Wayland

I vores tilfælde – da vi ikke har brug for flere vinduer – fjerner vi dem.

DISTRO_FEATURES:remove = "ptest x11 wayland vulkan directfb"

For at bruge eglfs korrekt tilføjer vi:

VC4DTBO ?= "vc4-fkms-v3d"

bitbake Raspberry-billede

Opret billedkonfigurationsfil

I filen "rpi4-64-qt5-gpio-image.bb" definerer vi, hvilke pakker vi har brug for i vores linux-distribution. Her kan du – som tidligere nævnt – inkludere image_Funktioner IMAGE_FEATURES "dev-pkgs".

Filen er opdelt i flere sektioner som for eksempel DEV-SDK, extra_ TOOLS og så videre, for nemt at tilføje nødvendige pakker.

pigpio-pakke

Denne pakke er tilføjet under CUSTOM_TUFF:

CUSTOM_STUFF = " \
    pigpio \
"

Qt-pakker

De pakker, der er nødvendige for Qt, tilføjes i pakkegrupper, og disse pakkegrupper tilføjes her:

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

Du kan finde "packagegroup-qt5" i filen "packagegroup-qt5.bb" og tilføje eller slette Qt-pakker.

Download det zippede metalag med billedet fra meta-interelectronix-rpi-qt. Efter at du kan bitbake billedet:

bitbake rpi4-64-qt5-gpio-image

bitbake SDK

Opret SDK-værktøjskæde

Hvis du ønsker at udvikle en Qt-applikation til denne brugerdefinerede Linux-distribution, vil du helt sikkert gerne have en krydskompileringsværktøjskæde for at tilføje den til din QtCreator-konfiguration.

Du kan nemt oprette en SDK med følgende bitbake-kommando:

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

Vi har pakkegrupperne "packagegroup-qt5-toolchain-target packagegroup-qt5-qtcreator-debug" tilføjet til billedkonfigurationsfilen.

Installer SDK

Du finder den genererede SDK i følgende mappe:

/tmp/deploy/sdk

I vores tilfælde hedder den "poky-glibc-x86_64-rpi4-64-qt5-gpio-image-cortexa72-raspberrypi4-64-toolchain-3.4.3.sh".

Denne fil indeholder installationsinstruktioner og alle de nødvendige filer (i et komprimeret format).

Kopier denne fil til din udviklingscomputer, og kør den:

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

Følg instruktionerne for at installere SDK.

Ophavsretslicens

Copyright © 2022 Interelectronix e.K.
Denne projektkildekode er licenseret under GPL-3.0-licensen.