Software embebido Raspberry Pi - Yocto - Raspberry - PIGPIO - Qt una captura de pantalla de un programa informático

Yocto - Raspberry - PIGPIO - Qt

Linux con biblioteca PIGPIO y cadena de herramientas Qt

Pasar por Bitbake la receta PIGPIO

Crear receta para la biblioteca PIGPIO

Para este proyecto necesitamos tener la biblioteca PIGPIO para tener acceso a I2C, SPI y otras GPIO con una biblioteca.

Desafortunadamente no hemos encontrado ninguna receta para ello en las metacapas comunes para Yocto y tenemos que crear una propia.

receta pigpio_git.bb

Crear una receta personalizada para Yocto no es tan difícil - pero crearla en detalle puede serlo.

El procedimiento estándar es, para obtener la fuente y dejar que pase por 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

Pero si «pasas por Bitbake pigpio», lanza algunos errores, porque no hay bibliotecas versionadas configuradas y la ubicación de los archivos manpages no se gestionan correctamente.

Error de manpages

Primero se produce el siguiente error:

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

Puedes corregir este error con la siguiente configuración:

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

de error no symlink

Después de corregir el error con las manpages, aparece el siguiente error:

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]

Esto sucede porque no hay bibliotecas versionadas generadas desde «CMakeLists.txt». Para solucionar esto, añadimos:

SOLIBS = ".so"
FILES_SOLIBSDEV = ""

systemd autoiniciar pigpiod

Para iniciar automáticamente la herramienta pigpio, añadimos lo siguiente:

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"

Nota

Si necesitas tener archivos de encabezado instalados para el desarrollo, tienes que instalar IMAGE_FEATURES "dev-pkgs

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

Descarga la meta-capa comprimida con la receta de meta-interelectronix-rpi.

Configuración de imagen global

configuración local.conf

Descargue los archivos de configuración de compilación comprimidos desde rpi4-build.Primero echa un vistazo al archivo bblayers.conf. Dentro encontrará las meta-capas necesarias. Descargue las meta-capas, si aún no lo ha hecho y ajusta tu archivo bblayers.conf.

En segundo lugar, echa un vistazo al archivo local.conf.

Configuración de I2C

Si deseas utilizar un chip sensor (por ejemplo, un sensor de temperatura) conectado con I2C, tienes que habilitar I2C en el archivo local.conf.

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

Eliminar X11 y Wayland

Hay muchos errores en el proceso de bitbake, si no eliminamos X11 y Wayland

En nuestro caso, como no necesitamos varias ventanas, las eliminamos.

DISTRO_FEATURES:remove = "ptest x11 wayland vulkan directfb"

Para usar eglfs correctamente, añadimos:

VC4DTBO ?= "vc4-fkms-v3d"

Pasar por Bitbake Raspberry

Crear archivo de configuración de imagen

En el archivo «rpi4-64-qt5-gpio-image.bb» definimos qué paquetes necesitamos en nuestra distribución linux. Aquí puedes (como ya mencionamos anteriormente) incluir el IMAGE_FEATURES «dev-pkgs».

El archivo se separa en varias secciones como por ejemplo DEV-SDK, EXTRA_TOOLS y así sucesivamente, para añadir paquetes que se necesiten con facilidad.

paquete pigpio

Este paquete se añade bajo CUSTOM_STUFF:

CUSTOM_STUFF = " \
    pigpio \
"

Paquetes Qt

Los paquetes necesarios para Qt se añaden en grupos de paquetes y estos grupos de paquetes se añaden aquí:

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

Puedes encontrar «packagegroup-qt5» en el archivo «packagegroup-qt5.bb» y puedes agregar o eliminar paquetes Qt.

Descarga la meta-capa comprimida con la imagen de meta-interelectronix-rpi-qt.Después de eso se puede pasar la imagen por Bitbake:

bitbake rpi4-64-qt5-gpio-image

Pasar SDK por Bitbake

Crear una cadena de herramientas SDK

Si deseas desarrollar una aplicación Qt para esta distribución personalizada de Linux, es muy probable que quieras tener una cadena de herramientas de compilación cruzada para agregarla a tu configuración de QtCreator.

Puedes crear fácilmente un SDK con el siguiente comando de bitbake:

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

Tenemos los grupos de paquetes «packagegroup-qt5-toolchain-target packagegroup-qt5-qtcreator-debug» añadidos al archivo de configuración de la imagen.

Instalar SDK

Encontrarás el SDK generado en el siguiente directorio:

<: code15:>

En nuestro caso se llama «poky-glibc-x86_64-rpi4-64-qt5-gpio-image-cortexa72-raspberrypi4-64-toolchain-3.4.3.sh».

Este archivo contiene instrucciones de configuración y todos los archivos necesarios (en formato comprimido).

Copia este archivo en tu equipo de desarrollo y ejecútalo:

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

Sigue las instrucciones para instalar el SDK.

Licencia de copyright

Copyright© 2022 Interelectronix e.K.
El código fuente de este Proyecto está autorizado en virtud de la licencia GPL-3.0.