Wbudowane oprogramowanie Raspberry Pi - Yocto - Malina - PIGPIO - Qt zrzut ekranu programu komputerowego

Yocto – Raspberry – PIGPIO – Qt

Linux z biblioteką PIGPIO i łańcuchem narzędzi Qt

receptura bitbake dla pigpio

Utwórz recepturę dla biblioteki pigpio

Do realizacji tego projektu potrzebujemy biblioteki pigpio, aby mieć dostęp do I2C, SPI i innych GPIO za pomocą jednej biblioteki.

Niestety nie udało nam się znaleźć odpowiedniej receptury w popularnych meta-warstwach dla Yocto i dlatego musimy stworzyć własną.

receptura pigpio_git.bb

Stworzenie własnej receptury dla Yocto nie jest takie skomplikowane – ale szczegóły mogą być.

Standardową procedurą jest pobranie źródła i zastosowanie 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

Ale jeśli zastosujesz "bitbake pigpio", pojawi się kilka błędów, ponieważ brak jest skonfigurowanych bibliotek z wersjami, a lokalizacja dokumentów manpage nie jest obsługiwana poprawnie.

błąd dokumentów manpage

Najpierw pojawia się następujący błąd:

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

Możesz naprawić ten błąd, stosując następujące ustawienia:

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 \
"

błąd non-symlink

Po naprawieniu błędu manpage, pojawia się kolejny błąd:

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]

Dzieje się tak, ponieważ nie ma wersjonowanych bibliotek wygenerowanych z pliku „CMakeLists.txt”. Aby to naprawić, dodajemy:

SOLIBS = ".so"
FILES_SOLIBSDEV = ""

systemd autostart pigpiod

Aby uruchomić automatycznie daemona pigpio, dodajemy to:

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"

Uwaga

Jeśli potrzebujesz zainstalowanych plików nagłówkowych do programowania, musisz zainstalować IMAGE_FEATURES "dev-pkgs

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

Pobierz spakowaną meta-warstwę z recepturą zmeta-interelectronix-rpi.

Globalna konfiguracja obrazu

ustawienia local.conf

Pobierz spakowane pliki konfiguracyjne kompilacji zrpi4-build.

Najpierw zajrzyj do pliku bblayers.conf. W środku znajdziesz potrzebne meta-warstwy. Pobierz meta-layers, jeśli jeszcze ich nie masz, i dostosuj swój plik bblayers.conf.

Następnie zajrzyj do pliku local.conf.

Ustawienia I2C

Jeśli chcesz używać układu czujnika (np. czujnika temperatury) połączonego przez I2C, musisz aktywować I2C w pliku local.conf.

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

Usuń X11 i Wayland

W procesie bitbake pojawia się wiele błędów, jeśli nie usuniemy X11 i Wayland

W naszym przypadku, jako że nie potrzebujemy obsługi wielu okien, usuwamy je.

DISTRO_FEATURES:remove = "ptest x11 wayland vulkan directfb"

Aby poprawnie używać eglfs, dodajemy:

VC4DTBO ?= "vc4-fkms-v3d"

bitbake na obrazie Raspberry

Tworzenie pliku konfiguracyjnego obrazu

W pliku „rpi4-64-qt5-gpio-image.bb” określamy, jakich pakietów potrzebujemy w naszej dystrybucji systemu linux. Tutaj możesz – jak już pisaliśmy wcześniej – dołączyć IMAGE_FEATURES "dev-pkgs".

Plik jest podzielony na kilka sekcji, np. DEV-SDK, EXTRA_TOOLS i tak dalej, aby łatwo dodać potrzebne pakiety.

pakiet pigpio

Ten pakiet jest dodawany pod CUSTOM_STUFF:

CUSTOM_STUFF = " \
    pigpio \
"

pakiety Qt

Pakiety potrzebne dla Qt są dodawane do grup pakietów, a te grupy pakietów są dodawane tutaj:

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

Możesz znaleźć „packagegroup-qt5” w pliku „packagegroup-qt5.bb” i dodawać lub usuwać pakiety Qt.

Pobierz spakowaną meta-warstwę z obrazem zmeta-interelectronix-rpi-qt.

Następnie możesz zastosować bitbake na obrazie:

bitbake rpi4-64-qt5-gpio-image

bitbake SDK

Tworzenie łańcucha narzędzi SDK

Jeśli chcesz stworzyć aplikację Qt dla tej niestandardowej dystrybucji systemu Linux, na pewno potrzebujesz łańcucha narzędzi do kompilacji krzyżowej, aby dodać go do swojej konfiguracji QtCreatora.

Możesz łatwo stworzyć SDK za pomocą następującego polecenia bitbake:

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

Grupy pakietów „packagegroup-qt5-toolchain-target packagegroup-qt5-qtcreator-debug” zostały dodane do pliku konfiguracyjnego obrazu.

Instalacja SDK

Wygenerowany pakiet SDK znajdziesz w następującym katalogu:

/tmp/deploy/sdk

W naszym przypadku nosi on nazwę „poky-glibc-x86_64-rpi4-64-qt5-gpio-image-cortexa72-raspberrypi4-64-toolchain-3.4.3.sh”.

Ten plik zawiera instrukcje dotyczące konfiguracji oraz wszystkie potrzebne pliki (w skompresowanym formacie).

Skopiuj ten plik na swój komputer do programowania i wykonaj go:

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

Postępuj zgodnie z instrukcjami, aby zainstalować SDK.

Licencja na prawa autorskie

Copyright © 2022 Interelectronix e.K.
Ten kod źródłowy projektu jest udostępniany na licencji **GPL-3.0 * *.