Logiciel embarqué Raspberry Pi - Yocto - Raspberry - PIGPIO - Qt une capture d’écran d’un programme informatique

Yocto - Raspberry - PIGPIO - Qt

Linux avec bibliothèque pigpio et chaîne d'outils Qt

recette bitbake pigpio

Créer une recette pour la bibliothèque pigpio

Pour ce projet, nous avons besoin de la bibliothèque pigpio pour avoir accès à I2C, SPI et autres GPIO avec une seule bibliothèque.

Malheureusement, nous n'avons trouvé aucune recette pour cela dans les méta-couches communes pour Yocto et nous devons créer la nôtre.

pigpio_git.bb recette

Créer une recette personnalisée pour Yocto n'est pas si difficile - mais dans le détail, cela peut l'être.

La procédure standard consiste à obtenir la source et la laisser mijoter dans 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

Mais si vous utilisez pigpio dans bitbake, cela génère quelques erreurs, parce qu'il n'y a pas de bibliothèques versionnées configurées et l'emplacement des fichiers de pages de manuel ne sont pas gérés correctement.

manpages error

D'abord, l'erreur suivante se produit :

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

Vous pouvez corriger cette erreur avec les paramètres suivants :

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

Après avoir corrigé l'erreur avec les pages de manuel, l'erreur suivante apparaît :

<: code4:>

Ceci se produit car il n'y a pas de bibliothèques versionnées générées à partir de "CMakeLists.txt". Pour y remédier, nous ajoutons :

SOLIBS = ".so"
FILES_SOLIBSDEV = ""

systemd autostart pigpiod

Pour démarrer automatiquement le démon pigpio, nous ajoutons ce qui suit :

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"

Remarque

Si vous avez besoin que des fichiers d'en-tête soient installés pour le développement, vous devez installer IMAGE_FEATURES "dev-pkgs

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

Téléchargez la méta-couche zippée avec la recette de meta-interelectronix-rpi.

Configuration d'image globale

paramètres local.conf

Téléchargez les fichiers de configuration de la construction zippés à partir de rpi4-build.Jetez d'abord un coup d'œil au fichier bblayers.conf. À l'intérieur, vous trouverez les méta-couches nécessaires. Téléchargez les méta-couches, si vous ne l'avez pas déjà fait et ajustez votre fichier bblayers.conf.

Ensuite, jetez un œil au fichier local.conf.

I2C settings

Si vous souhaitez utiliser une puce de capteur (par exemple, un capteur de température) connectée à I2C, vous devez activer I2C dans le fichier local.conf.

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

Remove X11 and Wayland

Beaucoup d'erreurs subsistent dans le processus bitbake si nous ne supprimons pas X11 et Wayland

Dans notre cas - comme nous n'avons pas besoin de plusieurs fenêtres - nous les supprimons.

DISTRO_FEATURES:remove = "ptest x11 wayland vulkan directfb"

Pour utiliser eglfs correctement, nous ajoutons :

VC4DTBO ?= "vc4-fkms-v3d"

image Raspberry bitbake

Créer un fichier de configuration d'image

Dans le fichier "rpi4-64-qt5-gpio-image.bb" nous définissons de quels paquets nous avons besoin dans notre distribution linux. Ici, vous pouvez - comme mentionné précédemment - inclure l'IMAGE_FEATURES "dev-pkgs".

Le fichier est séparé en plusieurs sections comme par exemple DEV-SDK, EXTRA_TOOLS et ainsi de suite, pour ajouter facilement des paquets nécessaires.

pigpio package

Ce paquet est ajouté sous CUSTOM_STUFF :

CUSTOM_STUFF = " \
    pigpio \
"

Qt packages

Les paquets nécessaires pour Qt sont ajoutés dans les groupes de paquets et ces groupes de paquets sont ajoutés ici :

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

Vous pouvez trouver "packagegroup-qt5" dans le fichier "packagegroup-qt5.bb" et ajouter ou supprimer des paquets Qt.

Téléchargez la méta-couche zippée avec l'image de meta-interelectronix-rpi-qt.Après cela, vous pouvez passer l'image dans bitbake :

bitbake rpi4-64-qt5-gpio-image

SDK bitbake

Créer une chaîne d'outils SDK

Si vous voulez développer une application Qt pour cette distribution Linux personnalisée, vous voulez sûrement avoir cross compile toolchain, pour l'ajouter à votre configuration QtCreator.

Vous pouvez facilement créer un SDK avec la commande bitbake suivante :

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

Les groupes de paquets "packagegroup-qt5-toolchain-target packagegroup-qt5-qtcreator-debug" ont été ajoutés au fichier de configuration d'image.

Install SDK

Vous trouverez le SDK généré dans le répertoire suivant :

/tmp/deploy/sdk

Dans notre cas, il s'appelle "poky-glibc-x86_64-rpi4-64-qt5-gpio-image-cortexa72-raspberrypi4-64-toolchain-3.4.3.sh".

Ce fichier contient les instructions d'installation et tous les fichiers nécessaires (dans un format compressé).

Copiez ce fichier sur votre ordinateur de développement et exécutez-le :

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

Suivez les instructions pour installer le SDK.

Licence de copyright

Copyright © 2022 Interelectronix e.K.
Le code source de ce projet est sous licence GPL-3.0.