نرم افزار جاسازی شده Raspberry Pi - Yocto - Raspberry - PIGPIO - Qt تصویری از یک برنامه کامپیوتری

Yocto - Raspberry - PIGPIO - Qt

لینوکس با کتابخانه pigpio و زنجیره ابزار Qt

دستور بیت‌بیک pigpio

ایجاد دستور العمل برای کتابخانه pigpio

برای این پروژه باید کتابخانه pigpio را داشته باشیم تا بتوانیم با یک کتابخانه به I2C، SPI و سایر GPIOها دسترسی داشته باشیم.

متأسفانه ما هیچ دستور العملی برای این کار در متا لایه های رایج برای Yocto پیدا نکردیم و باید خودمان چنین دستوری را ایجاد کنیم.

دستور pigpio_git.bb

ایجاد یک دستور سفارشی برای Yocto چندان دشوار نیست - اما جزئیات آن می تواند دشوار باشد.

روال استاندارد به این صورت است که منبع را بدست آورید و اجازه دهید بیت‌بیک شود:

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 به درستی مدیریت نمی شود.

خطای manpageها

ابتدا خطای زیر رخ می دهد:

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

پس از رفع خطای مربوط به manpageها، خطای بعدی ظاهر می شود:

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 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 دانلود کنید.

پیکربندی ایمیج جهانی

تنظیمات local.conf

فایل های پیکربندی بیلد فشرده را از rpi4-build دانلود کنید.

ابتدا به فایل blayers.conf نگاهی بیندازید. در داخل فایل می‌توانید متا لایه های مورد نیاز را پیدا کنید. اگر قبلاً این کار را نکرده‌اید، متا لایه‌ها را دانلود کنید و فایل blayers.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"

بیت‌بیک کردن ایمیج رزبری

ایجاد فایل پیکربندی ایمیج

در فایل "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-interelectronix-rpi-qt دانلود کنید.

پس از آن می توانید ایمیج را bitbake کنید:

bitbake rpi4-64-qt5-gpio-image

بیت‌بیک کردن SDK

ایجاد زنجیره ابزار SDK

اگر می خواهید یک برنامه 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 است.