嵌入式软件 树莓派 - Yocto - 树莓派 - PIGPIO - Qt 计算机程序的屏幕截图

Yocto - Raspberry - PIGPIO - Qt

具有 pigpio 库和 Qt 工具链的 Linux

bitbake 方案 pigpio

创建适用于 pigpio库的方案

对于这个项目,我们需要有 pigpio 库才能访问具有一个库的 I2C、SPI 和其他 GPIO。很遗憾,我们在 Yocto 的常见 meta 层中找不到它的方案,必须要创建自己的方案。### 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 的错误后,会出现下一个错误:

<: code4: >

之所以会发生这种情况,是因为没有从“CMakeLists.txt”生成的版本化库。为了解决这个问题,我们添加了:

SOLIBS = ".so"
FILES_SOLIBSDEV = ""

systemd 自动启动 pigpiod

为了使 pigpio 守护程序自动启动,我们添加了以下代码:

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"

meta-interelectronix-rpi 下载含有方案并经过压缩的 meta 层。

全局镜像配置

local.conf 设置

rpi4-build 下载经过压缩的构建配置文件。首先看一下 bblayers.conf 文件。您可以在里面找到需要的 meta 层。如果您还没有下载 meta 层,则下载并调整您的 bblayers.conf 文件。第二,看一下 local.conf 文件。### I2C 设置

如果要使用与 I2C 连接的传感器芯片(例如温度传感器) ,则必须在 local.conf 文件中启用 I2C。

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.bb”文件中找到“packagegroup-qt5”,并添加或删除 Qt 软件包。从 meta-interelectronix-rpi-qt 下载含有镜像并经过压缩的 meta 层。之后,您可以对镜像运行 bitbake 命令:

bitbake rpi4-64-qt5-gpio-image

bitbake SDK

创建 SDK 工具链

如果您想为此定制版 Linux 分发开发 Qt 应用程序,您肯定想拥有跨编译工具链,以便将其添加到您的 QtCreator 配置中。您可以使用以下 bitbake 命令轻松创建 SDK :

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 许可证获得许可。