এম্বেডেড সফ্টওয়্যার রাস্পবেরি পাই - ইয়োক্টো - রাস্পবেরি - পিআইজিপিও - কিউটি একটি কম্পিউটার প্রোগ্রামের স্ক্রিনশট

Yocto - Raspberry - PIGPIO - Qt

pigpio লাইব্রেরি এবং Qt টুলচেন সহ লিনাক্স

pigpio - এর বিটবেক রেসিপি

pigpio লাইব্রেরির জন্য রেসিপি তৈরি করুন

এই প্রকল্পের জন্য I2C, SPI এবং একটি লাইব্রেরি সহ অন্যান্য GPIO-তে আমাদের অ্যাক্সেসের জন্য 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

কিন্তু আপনি যদি "bitbake pigpio" করেন তবে এটি কিছু ত্রুটি দেখায়, কারণ এতে কোনও ভার্সনবিশিষ্ট লাইব্রেরি কনফিগার করা নেই এবং manpage ফাইলগুলির অবস্থান সঠিকভাবে পরিচালনা করা হয় না।

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

নন-সিমলিংক ত্রুটি

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

সিস্টেমড অটোস্টার্ট পিগপিওড

পিগপিও ডেমন অটোস্টার্ট করতে, আমরা নিম্নলিখিত যোগ করি:

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.con ফাইলটি দেখুন।

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" ফাইলে স্পষ্টভাবে নির্দিষ্ট করি। যেমন আগে উল্লেখ করা হয়েছে - সেভাবে আপনি - 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 টুলচেন তৈরি করুন

আপনি যদি এই কাস্টম লিনাক্স ডিস্ট্রিবিউশনের জন্য একটি 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 লাইসেন্সের অধীনে লাইসেন্সকৃত।