Phần mềm nhúng Raspberry Pi - Yocto - Raspberry - PIGPIO - Qt ảnh chụp màn hình của chương trình máy tính

Yocto - Mâm xôi - PIGPIO - Qt

Linux với thư viện pigpio và chuỗi công cụ Qt

Công thức bitbake Pigpio

Tạo công thức cho thư viện pigpio

Đối với dự án này, chúng ta cần có thư viện pigpio để có quyền truy cập vào I2C, SPI và các GPIO khác với một thư viện.

Thật không may, chúng tôi không tìm thấy công thức nào cho nó trong các lớp meta phổ biến cho Yocto và phải tạo ra lớp của riêng mình.

pigpio_git.bb công thức

Tạo một công thức tùy chỉnh cho Yocto không quá khó - nhưng chi tiết nó có thể.

Quy trình tiêu chuẩn là, để có được nguồn và để nó 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

Nhưng nếu bạn "bitbake pigpio", nó sẽ gây ra một số lỗi, vì không có thư viện phiên bản nào được cấu hình và vị trí của các tệp manpages không được xử lý chính xác.

lỗi manpages

Đầu tiên, lỗi sau xảy ra:

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

Bạn có thể khắc phục lỗi này bằng các cài đặt sau:

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

lỗi không liên kết tượng trưng

Sau khi sửa lỗi với các manpages, lỗi tiếp theo xuất hiện:

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]

Điều này xảy ra, bởi vì không có thư viện phiên bản nào được tạo ra từ "CMakeLists.txt". Để khắc phục điều này, chúng tôi thêm:

SOLIBS = ".so"
FILES_SOLIBSDEV = ""

systemd autostart pigpiod

Để tự động khởi động pigpio daemon, chúng tôi thêm như sau:

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"

Ghi

Nếu bạn cần cài đặt các tệp tiêu đề để phát triển, bạn phải cài đặt IMAGE_FEATURES "dev-pkgs

IMAGE_FEATURES += "package-management dev-pkgs doc-pkgs"
Tải xuống lớp meta nén với công thức từ meta-interelectronix-rpi.

Cấu hình hình ảnh toàn cầu

Cài đặt local.conf

Tải xuống các tệp cấu hình xây dựng đã nén từ bản dựng rpi4.

Đầu tiên hãy xem tệp bblayers.conf. Bên trong bạn tìm thấy các lớp meta cần thiết. Tải xuống các lớp meta, nếu bạn chưa thực hiện và điều chỉnh tệp bblayers.conf của mình.

Thứ hai, hãy xem tệp local.conf.

Cài đặt I2C

Nếu bạn muốn sử dụng chip cảm biến (ví dụ: cảm biến nhiệt độ) được kết nối với I2C, bạn phải bật I2C trong tệp local.conf.

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

Xóa X11 và Wayland

Có rất nhiều lỗi trong quá trình bitbake, nếu chúng ta không loại bỏ X11 và Wayland

Trong trường hợp của chúng tôi - vì chúng tôi không cần nhiều cửa sổ - chúng tôi xóa chúng.

DISTRO_FEATURES:remove = "ptest x11 wayland vulkan directfb"

Để sử dụng eglfs đúng cách, chúng tôi thêm:

VC4DTBO ?= "vc4-fkms-v3d"

bitbake Hình ảnh quả mâm xôi

Tạo tệp cấu hình hình ảnh

Trong tệp "rpi4-64-qt5-gpio-image.bb", chúng tôi xác định, gói nào chúng tôi cần trong bản phân phối linux của mình. Ở đây bạn có thể - như đã đề cập trước đây - bao gồm IMAGE_FEATURES "dev-pkgs".

Tệp được chia thành nhiều phần như ví dụ DEV-SDK, EXTRA_TOOLS, v.v., để thêm các gói dễ dàng cần thiết.

Gói pigpio

Gói này được thêm vào theo CUSTOM_STUFF:

CUSTOM_STUFF = " \
    pigpio \
"

Gói Qt

Các gói cần thiết cho Qt được thêm vào các nhóm gói và các nhóm gói này được thêm vào đây:

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

Bạn có thể tìm thấy "packagegroup-qt5" trong tệp "packagegroup-qt5.bb" và thêm hoặc xóa các gói Qt.

Tải xuống lớp meta nén với hình ảnh từ meta-interelectronix-rpi-qt.

Sau đó, bạn có thể bitbake hình ảnh:

bitbake rpi4-64-qt5-gpio-image

SDK bitbake

Tạo chuỗi công cụ SDK

Nếu bạn muốn phát triển một ứng dụng Qt cho bản phân phối Linux tùy chỉnh này, bạn chắc chắn muốn có chuỗi công cụ biên dịch chéo, để thêm nó vào cấu hình QtCreator của bạn.

Bạn có thể dễ dàng tạo SDK bằng lệnh bitbake sau:

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

Chúng tôi có các nhóm gói "packagegroup-qt5-toolchain-target packagegroup-qt5-qtcreator-debug" được thêm vào tệp cấu hình hình ảnh.

Cài đặt SDK

Bạn tìm thấy SDK được tạo trong thư mục sau:

/tmp/deploy/sdk

Trong trường hợp của chúng tôi, nó được đặt tên là "poky-glibc-x86_64-rpi4-64-qt5-gpio-image-cortexa72-raspberrypi4-64-toolchain-3.4.3.sh".

Tệp này chứa hướng dẫn thiết lập và tất cả các tệp cần thiết (ở định dạng nén).

Sao chép tệp này vào máy tính phát triển của bạn và thực thi nó:

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

Làm theo hướng dẫn để cài đặt SDK.</:code16:></:code15:></:code14:>

Giấy phép bản quyền

**Bản quyền © 2022 Interelectronix ví dụ: **
Mã nguồn Project này được cấp phép theo giấy phép GPL-3.0.