Встроенное программное обеспечение Raspberry Pi - Yocto - Raspberry - PIGPIO - Qt скриншот компьютерной программы

Yocto - Raspberry - PIGPIO - Qt

Linux с библиотекой pigpio и цепочкой инструментов Qt

выполните bitbake для рецепта pigpio

Создайте рецепт для библиотеки pigpio

Для этого проекта нам нужна библиотека pigpio, чтобы иметь доступ к I2C, SPI и другим GPIO с помощью одной библиотеки.

К сожалению, мы не нашли рецепт для этого в общих мета-слоев для Yocto и должны создать свой собственный.

Рецепт pigpio_git.bb

Создать собственный рецепт для Yocto не так сложно, но есть некоторые нюансы.

Обычно, нужно взять исходник и выполнить 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

Но если выполнить "bitbake pigpio", он выбрасывает некоторые ошибки, потому что отсутствуют настроенные версии библиотек и расположение файлов manpages не обрабатывается правильно.

Ошибка manpages

Сначала возникает следующая ошибка:

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

Эту ошибку можно исправить с помощью следующих настроек:

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

После исправления ошибки с manpages появляется следующая ошибка:

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]

Это происходит, потому что отсутствуют версионированные библиотеки, сгенерированные из "CMakeLists.txt". Чтобы исправить это, мы добавляем:

SOLIBS = ".so"
FILES_SOLIBSDEV = ""

systemd autostart pigpiod

Для запуска pigpio daemon, добавим следующее:

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"

Примечание

Если вам нужны файлы заголовков, установленные для разработки, установите IMAGE_FEATURES "dev-pkgs

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

Скачайте zip-мета-слой с рецептом из meta-interelectronix-rpi.

Глобальная конфигурация образа

настройки local.conf

Загрузите zip-архив с файлами конфигурации из rpi4-build.Сначала взгляните на файл bblayers.conf. Внутри вы найдете необходимые мета-слои. Скачайте мета-слои, если вы еще не сделали этого, и измените файл bblayers.conf.

Затем, взгляните на файл local.conf.

Настройки I2C

Если вы хотите использовать микросхему датчика (например, датчик температуры), подключенную к I2C, необходимо включить I2C в файле local.conf.

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

Удалите X11 и Wayland

Если мы не удалим X11 и Wayland, в процессе bitbake возникает много ошибок

В нашем случае, так как нам не нужно несколько окон, мы их удаляем.

DISTRO_FEATURES:remove = "ptest x11 wayland vulkan directfb"

Чтобы правильно использовать eglfs, добавляем:

VC4DTBO ?= "vc4-fkms-v3d"

bitbake образ Raspberry

Создайте файл конфигурации образа

В файле "rpi4-64-qt5-gpio-image.bb" мы определяем, какие пакеты нам нужны в нашем linux дистрибутиве. Здесь вы можете, как упоминалось ранее, включить IMAGE_FEATURES "dev-pkgs".

Файл разделен на несколько разделов, например DEV-SDK, EXTRA_TOOLS и так далее, чтобы легко можно было добавить необходимые пакеты.

Пакет pigpio

Этот пакет добавлен в CUSTOM_STUFF:

CUSTOM_STUFF = " \
    pigpio \
"

Пакеты Qt

Пакеты, необходимые для Qt, добавляются в группы пакетов, и эти группы пакетов добавляются здесь:

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

Вы можете найти "packagegroup-qt5" в файле "packagegroup-qt5.bb" и добавить или удалить пакеты Qt.

Скачайте zip-мета-слой с образом из meta-interelectronix-rpi-qt.После этого вы можете выполнить bitbake образа:

bitbake rpi4-64-qt5-gpio-image

bitbake SDK

Создайте цепочку инструментов SDK

Если вы хотите разработать приложение Qt для этого пользовательского дистрибутива Linux, вы безусловно хотите иметь цепочку инструментов для кросс-компиляции, чтобы добавить ее в свою конфигурацию QtCreator.

Вы можете легко создать SDK с помощью следующей команды bitbake:

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

В конфигурационный файл образа добавлены группы пакетов "packagegroup-qt5-toolchain-target packagegroup-qt5-qtcreator-debug".

Установить SDK

Сгенерированный SDK можно найти в следующем каталоге:

/tmp/deploy/sdk

В нашем случае он называется "poky-glibc-x86_64-rpi4-64-qt5-gpio-image-cortexa72-raspberrypi4-64-toolchain-3.4.3.sh".

Этот файл содержит инструкции по настройке и все необходимые файлы (в сжатом формате).

Скопируйте этот файл на компьютер разработки и выполните его:

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

Следуйте инструкциям по установке SDK.

Лицензия на авторские права

Авторское право © 2022 Interelectronix e.K.
Данный исходный код проекта лицензирован под лицензией GPL-3.0.