bitbake 方案 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 层。
全局镜像配置
从 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
如果您想为此定制版 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 许可证获得许可。