Gömülü Yazılım Raspberry Pi - Yocto - Raspberry - PIGPIO - Qt bir bilgisayar programının ekran görüntüsü

Yocto - Raspberry - PigPIO - Qt

pigpio kitaplığı ve Qt araç zinciri içeren Linux

bitbake tarifi pigpio

Pigpio kütüphanesi için tarif oluşturun

Bu projede, I2C, SPI ve diğer bir kütüphaneye sahip GPIO'lara erişebilmemiz için pigpio kütüphanesine sahip olmamız gerekir.

Maalesef Yocto'nun ortak meta katmanlarında bunun tarifini bulamadık ve kendimizinkini yaratmak zorunda kaldık.

###pigpio_git.bb tarifi

Yocto için özel bir tarif oluşturmak o kadar zor değildir ancak ayrıntılı olarak ele alındığında zorlayıcı olabilir.

Standart prosedür, kaynağı edinmek ve bitbake işlemi uygulanmasına izin vermektir:

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

Ancak "bitbake pigpio"yu kullanırsanız yapılandırılmış sürümlü kitaplık olmadığından ve manpage dosyalarının konumu doğru şekilde ele alınmadığından bazı hatalar ortaya çıkar.

manpages error

İlk olarak aşağıdaki hata oluşur:

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

Bu hatayı aşağıdaki ayarlarla düzeltebilirsiniz:

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 error

Hatayı manpage komutları ile düzelttikten sonra bir sonraki hata ortaya çıkar:

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" üzerinden oluşturulan sürümlü kitaplıklar olmadığından bu hata ortaya çıkar. Bunu düzeltmek için şunları ekliyoruz:

SOLIBS = ".so"
FILES_SOLIBSDEV = ""

systemd autostart pigpiod

Pigpio hizmetini otomatik olarak başlatmak için aşağıdakileri ekliyoruz:

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"

Not

Geliştirme için üst bilgi dosyalarının yüklenmesi gerekiyorsa IMAGE_FEATURES "dev-pkgs paketini yüklemeniz gerekir

IMAGE_FEATURES += "package-management dev-pkgs doc-pkgs"

meta-interelectronix-rpi üzerinden tarihi içeren sıkıştırılmış meta katman ı yükleyin.

Genel görüntü yapılandırması

local.conf ayarları

rpi4-build üzerinden sıkıştırılmış derleme yapılandırma dosyalarını indirin.Önce bblayers.conf dosyasına bir göz atın. Bunun içinde gerekli meta katmanları bulacaksınız. Henüz yapmadıysanız meta katmanları indirin ve bblayers.conf dosyanızı ayarlayın.

İkinci olarak local.conf dosyasına bir göz atın.

I2C settings

I2C'ye bağlı bir sensör çipi (örneğin bir sıcaklık sensörü) kullanmak istiyorsanız local.conf dosyasında I2C'yi etkinleştirmeniz gerekir.

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

Remove X11 and Wayland

X11 ve Wayland kaldırılmazsa bitbake işlemi sırasında çok fazla ortaya çıkar

Bu durumda, birden fazla pencere gerekmediğinden bunları kaldırırız.

DISTRO_FEATURES:remove = "ptest x11 wayland vulkan directfb"

eglfs komutunu düzgün şekilde kullanabilmek için şunu ekleriz:

VC4DTBO ?= "vc4-fkms-v3d"

bitbake Raspberry görüntüsü

Görüntü yapılandırma dosyası oluşturun

"rpi4-64-qt5-gpio-image.bb" dosyasında Linux dağıtımınızda ihtiyacımız olan paketleri belirliyoruz. Burada, daha önce de belirtildiği gibi IMAGE_FEATURES "dev-pkgs" paketini ekleyebilirsiniz.

Dosya, kolayca ihtiyaç duyulan paketleri eklemek için DEV-SDK, EXTRA_TOOLS gibi çeşitli bölümlere ayrılmıştır.

pigpio package

Bu paket CUSTOM_STUFF altına eklenir:

CUSTOM_STUFF = " \
    pigpio \
"

Qt packages

Qt için gereken paketler, paket gruplarına eklenir ve bu paket grupları şuraya eklenir:

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

"packagegroup-qt5.bb" dosyasında "packagegroup-qt5" paketini bulabilir ve Qt paketlerini ekleyebilir veya silebilirsiniz.

meta-interelectronix-rpi-qt üzerinden görüntüyü içeren sıkıştırılmış meta katmanı indirin.Bundan sonra görüntüye bitbake işlemi uygulayabilirsiniz:

bitbake rpi4-64-qt5-gpio-image

bitbake SDK

SDK araç zinciri oluşturun

Bu özel Linux dağıtımı için bir Qt uygulaması geliştirmek istiyorsanız QtCreator yapılandırmanıza eklemek için mutlaka çapraz derleme araç zincirine sahip olmanız gerekir.

Aşağıdaki bitbake komutu ile kolayca bir SDK oluşturabilirsiniz:

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

Görüntü yapılandırma dosyasına "packagegroup-qt5-toolchain-target packagegroup-qt5-qtcreator-debug" paket gruplarını ekledik.

Install SDK

Oluşturulan SDK'yı aşağıdaki dizinde bulabilirsiniz:

/tmp/deploy/sdk

Bizim durumumuzda "poky-glibc-x86_64-rpi4-64-qt5-gpio-image-cortexa72-raspberrypi4-64-toolchain-3.4.3.sh" olarak adlandırılır.

Bu dosya kurulum talimatlarını ve gerekli tüm dosyaları (sıkıştırılmış bir biçimde) içerir.

Bu dosyayı geliştirme bilgisayarınıza kopyalayın ve çalıştırın:

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

SDK'yı yüklemek için talimatları izleyin.

Telif Hakkı Lisansı

Telif Hakkı © 2022Interelectronix e.K.
Bu Proje kaynak kodu ** GPL-3.0**lisansı altında lisanslanmıştır.