ซอฟต์แวร์ฝังตัว Raspberry Pi - Yocto - Raspberry - PIGPIO - Qt ภาพหน้าจอของโปรแกรมคอมพิวเตอร์

Yocto - ราสเบอร์รี่ - PIGPIO - Qt

Linux พร้อมไลบรารี pigpio และ Qt toolchain

สูตร bitbake pigpio

สร้างสูตรสําหรับห้องสมุด pigpio

สําหรับโครงการนี้เราจําเป็นต้องมีห้องสมุด pigpio เพื่อเข้าถึง I2C, SPI และ GPIOs อื่น ๆ ด้วยไลบรารีเดียว

น่าเสียดายที่เราไม่พบสูตรสําหรับมันในชั้นเมตาทั่วไปสําหรับ 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 \
"

ข้อผิดพลาดที่ไม่ใช่ 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 = ""

pigpiod autostart systemd

ในการเริ่ม 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"
ดาวน์โหลด meta-layer แบบซิปด้วยสูตรจาก meta-interelectronix-rpi

การกําหนดค่าภาพทั่วโลก

การตั้งค่า local.conf

ดาวน์โหลดไฟล์คอนฟิกูเรชันบิลด์แบบซิปจาก rpi4-build

ก่อนอื่นให้ดูที่ไฟล์ bblayers.conf ภายในคุณจะพบชั้นเมตาที่จําเป็น ดาวน์โหลด meta-layers หากคุณยังไม่ได้ทําและปรับไฟล์ bblayers.conf ของคุณ

ประการที่สองดูที่ไฟล์ local.conf

การตั้งค่า I2C

หากคุณต้องการใช้ชิปเซ็นเซอร์ (เช่นเซ็นเซอร์อุณหภูมิ) ที่เชื่อมต่อกับ I2C คุณต้องเปิดใช้งาน I2C ในไฟล์ local.conf

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

ลบ X11 และ Wayland

มีข้อผิดพลาดมากมายในกระบวนการ bitbake หากเราไม่ลบ X11 และ Wayland

ในกรณีของเรา - เนื่องจากเราไม่ต้องการหลายหน้าต่าง - เราลบออก

DISTRO_FEATURES:remove = "ptest x11 wayland vulkan directfb"

ในการใช้ eglfs อย่างถูกต้องเราเพิ่ม:

VC4DTBO ?= "vc4-fkms-v3d"

ภาพ bitbake Raspberry

สร้างไฟล์การกําหนดค่ารูปภาพ

ในไฟล์ "rpi4-64-qt5-gpio-image.bb" เรากําหนดแพ็คเกจที่เราต้องการในการกระจายลินุกซ์ของเรา ที่นี่คุณสามารถ - ตามที่กล่าวไว้ก่อนหน้านี้ - รวม 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

ดาวน์โหลด meta-layer แบบซิปด้วยภาพจาก meta-interelectronix-rpi-qt

หลังจากนั้นคุณสามารถ bitbake ภาพ :

bitbake rpi4-64-qt5-gpio-image

SDK bitbake

สร้าง SDK toolchain

หากคุณต้องการพัฒนาแอปพลิเคชัน 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</:code16:></:code15:></:code14:>

ใบอนุญาตลิขสิทธิ์

ลิขสิทธิ์ © 2022 Interelectronix e.K.
ซอร์สโค้ดของโครงการนี้ได้รับอนุญาตภายใต้ใบอนุญาต GPL-3.0