ایمبیڈڈ سافٹ ویئر رسبیری پائی - یوکٹو - رسبیری - پی آئی جی پی آئی او - کیو ٹی ایک کمپیوٹر پروگرام کا اسکرین شاٹ

Yocto - Raspberry - PIGPIO - Qt

pigpio لائبریری اور Qt ٹول چین کے ساتھ Linux

bitbake ریسیپی pigpio

pigpio لائبریری کے لیے ریسیپی بنائیں

اس پروجیکٹ کے لیے ہمیں ایک لائبریری کے ساتھ I2C، SPI اور دیگر GPIOs تک رسائی کے لیے pigpio لائبریری کی ضرورت ہے۔

بدقسمتی سے ہمیں 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

لیکن اگر آپ "pigpio کو بٹ بیک" کرتے ہیں، تو اس میں کچھ نقائص پیدا ہوتے ہیں، کیونکہ وہاں کوئی ورژن شدہ لائبریریاں ترتیب نہیں دی گئی ہیں اور مین پیجز فائلوں کی لوکیشن کو درست طریقے سے بروئے کار نہیں لایا گیا ہے۔

مین پیجز کا نقص

سب سے پہلے درج ذیل نقص پیدا ہوتا ہے:

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 کا نقص

مین پیجز میں نقص کو ٹھیک کرنے کے بعد، اگلا نقص سامنے آتا ہے:

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 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-interelectronix-rpiسے ریسیپی کے ساتھ زپ شدہ میٹا لیئر ڈاؤن لوڈ کریں۔

عالمی امیج کی کنفیگریشن

local.conf کی ترتیبات

rpi4-build سے زپ شدہ تخلیقی کنفیگریشن فائلیں ڈاؤن لوڈ کریں۔پہلے bblayers.conf فائل پر ایک نظر ڈالیں۔ اندر آپ کو مطلوبہ میٹا لیئرز ملیں گی۔ اگر آپ نے پہلے میٹا لیئرز کو ڈاؤن لوڈ نہیں کیا تھا تو اب کرلیں اور اپنی bblayers.conf فائل کو ایڈجسٹ کریں۔

اس کے بعد local.conf فائل پر ایک نظر ڈالیں۔

I2C ترتیبات

اگر آپ I2C سے منسلک سینسر چپ (مثلاً درجۂ حرارت کا سینسر) استعمال کرنا چاہتے ہیں، تو آپ کو local.conf فائل میں I2C کو فعال کرنا ہوگا۔

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

X11 اور Wayland کو ہٹا دیں

اگر ہم X11 اور Wayland کو نہ ہٹائیں تو بٹ بیک کے عمل میں بہت سی نقائص آتے ہیں

ہمارے معاملے میں - جیسا کہ ہمیں ایک سے زیادہ ونڈوز کی ضرورت نہیں ہے - ہم انہیں ہٹا دیتے ہیں۔

DISTRO_FEATURES:remove = "ptest x11 wayland vulkan directfb"

eglfs کو صحیح طریقے سے استعمال کرنے کے لیے، ہم شامل کرتے ہیں:

VC4DTBO ?= "vc4-fkms-v3d"

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سے امیج کے ساتھ زپ شدہ میٹا لیئر ڈاؤن لوڈ کریں۔ اس کے بعد آپ امیج کو بٹ بیک کرسکتے ہیں:

bitbake rpi4-64-qt5-gpio-image

SDK کو بٹ بیک کریں

SDK ٹول چین بنائیں

اگر آپ ضرورت کے مطابق بنائے گئے اس Linux ڈسٹری بیوشن کے لیے ایک Qt ایپلیکیشن تیار کرنا چاہتے ہیں، تو آپ یقینی طور پر ٹول چین کی معکوس تالیف کرنا چاہیں گے تاکہ اسے اپنی QtCreator کنفیگریشن میں شامل کیا جائے۔

آپ درج ذیل بٹ بیک کمانڈ کے ساتھ آسانی سے 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 eKاس پروجیکٹ کا سورس کوڈ GPL-3.0 لائسنس کے تحت لائسنس یافتہ ہے۔