Inbäddad programvara Hallon Pi - Yocto - Hallon - PIGPIO - Qt en skärmdump av ett datorprogram

Yocto - Raspberry - PIGPIO - Qt

Linux med pigpio-bibliotek och Qt-verktygskedja

bitbake-recept pigpio

Skapa recept för pigpio-bibliotek

För detta projekt behöver vi ha pigpio-biblioteket för att ha åtkomst till I2C, SPI och andra GPIO:er med ett bibliotek.

Tyvärr hittade vi inget recept på det i de vanliga metalagren för Yocto och måste skapa våra egna.

pigpio_git.bb recipe

Att skapa ett anpassat recept för Yocto är inte så svårt – men i detalj kan det vara det.

Den vanliga proceduren är att hämta källan och låta den köras i 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 om du "behandlar pigpio i bitbake " blir det några fel, eftersom det inte finns några versionerade bibliotek konfigurerade och platsen för manpages-filerna inte hanteras korrekt.

manpages error

Först inträffar följande fel:

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 åtgärda detta fel med följande inställningar:

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 error

När du har åtgärdat felet med manpages dyker nästa fel upp:

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]

Detta händer eftersom det inte finns några versionerade bibliotek som genereras från "CMakeLists.txt". För att åtgärda detta lägger vi till:

SOLIBS = ".so"
FILES_SOLIBSDEV = ""

systemd autostart pigpiod

För att starta pigpio-demonen automatiskt lägger vi till följande:

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"

Obs

Om du behöver header-filer installerade för utveckling måste du installera IMAGE_FEATURES "dev-pkgs

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

Ladda ner det komprimerade metalagret med receptet från meta-interelectronix-rpi.

Global bildkonfiguration

local.conf-inställningar

Ladda ner de komprimerade filerna för strukturkonfiguration från rpi4-build.Ta först en titt på filen bblayers.conf. Inuti hittar du de metalager som behövs. Ladda ner metalagren om du inte redan har gjort det och justera din bblayers.conf-fil.

Sedan tittar du på filen local.conf.

I2C settings

Om du vill använda ett sensorchip (t.ex. en temperatursensor) som är anslutet till I2C måste du aktivera I2C i filen local.conf.

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

Remove X11 and Wayland

Det blir många fel i bitbake-processen om vi inte tar bort X11 och Wayland

I vårt fall – eftersom vi inte behöver flera fönster – tar vi bort dem.

DISTRO_FEATURES:remove = "ptest x11 wayland vulkan directfb"

För att använda eglfs korrekt lägger vi till:

VC4DTBO ?= "vc4-fkms-v3d"

bitbake Raspberry-bild

Skapa bildkonfigurationsfil

I filen "rpi4-64-qt5-gpio-image.bb" definierar vi vilka paket vi behöver i vår linuxdistribution. Här kan du – som tidigare nämnts – inkludera IMAGE_FEATURES "dev-pkgs".

Filen är uppdelad i flera sektioner, som till exempel DEV-SDK, EXTRA_TOOLS och så vidare, för att enkelt lägga till nödvändiga paket.

pigpio package

Det här paketet läggs till under CUSTOM_STUFF:

CUSTOM_STUFF = " \
    pigpio \
"

Qt packages

Paketen som behövs för Qt läggs till i paketgrupper och dessa paketgrupper läggs till här:

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

Du kan hitta "packagegroup-qt5" i filen "packagegroup-qt5.bb" och lägga till eller ta bort Qt-paket.

Ladda ner det komprimerade metalagret med bilden från meta-interelectronix-rpi-qt.Efter det kan du behandla bilden i bitbake:

bitbake rpi4-64-qt5-gpio-image

bitbake SDK

Skapa SDK-verktygskedja

Om du vill utveckla en Qt-applikation för den här anpassade Linux-distributionen vill du säkert ha en korskompilerande verktygskedja för att lägga till den i din QtCreator-konfiguration.

Du kan enkelt skapa ett SDK med följande bitbake-kommando:

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

Vi har lagt till paketgrupperna "packagegroup-qt5-toolchain-target packagegroup-qt5-qtcreator-debug" i bildkonfigurationsfilen.

Install SDK

Du hittar det genererade SDK i följande katalog:

/tmp/deploy/sdk

I vårt fall heter den "poky-glibc-x86_64-rpi4-64-qt5-gpio-image-cortexa72-raspberrypi4-64-toolchain-3.4.3.sh".

Denna fil innehåller installationsinstruktioner och alla nödvändiga filer (i ett komprimerat format).

Kopiera den här filen till din utvecklingsdator och kör den:

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

Följ instruktionerna för att installera SDK.

Upphovsrättslicens

Copyright © 2022 Interelectronix e.K.
Detta projekts källkod är licensierad under licensen GPL-3.0.