Pasar por Bitbake la receta 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
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
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
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.