Gömülü Yazılım - Yocto tarifleri bağımlılığı bir bilgisayarın ekran görüntüsü

Yocto tarifleri bağımlılıkları

Tarif değişkenleri arasındaki bağımlılıkları elde etme

Hiç özel meta katmanınızda tarif değişkenlerinin geçersiz kılınmasını oluşturduğunuzda hiçbir şey olmadığı oluyor mu?

Kendinizden şüphe etmeyin ve kullanılan meta katmanların önceliğine göz atın.

Örnek

Raspberry Pi 4 için bir Yocto Linux dağıtımı oluşturmak ve psplash tarifinin arka plan görüntüsünü değiştirmek istiyoruz. . Bunu yapmak için, özel meta-katmanımız "meta-interelectronix" içinde bir "psplash" klasörü oluşturuyoruz ve "SPLASH_IMAGES" değişkenlerini geçersiz kılmak için "psplash_%.bbappend" dosyasını ekliyoruz.

SPLASH_IMAGES:rpi = "file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"

"bblayers.conf" dosyasına "meta-interelectronix" ekledikten sonra Linux dağıtımına bitbake işlemi uygulayarak SD karta yüklüyor ve Raspberry Pi 4'ü bununla başlatıyoruz.

Ancak açılış ekranı için özel bir arka plan görüntüsü kullanılmadı, bu neden olabilir?

Bu davranışa ne sebep oluyor?

"Hata"yı aradıktan sonra, meta katmanların öncelik değişkenine bir göz atalım. Meta katmanlar, Linux dağıtımına bitbake işlemi uygularken meta katmanın hangi sırada kullanılacağını tanımlamak için bir öncelik değişkenine sahiptirDeğişken "meta-interelectronix/conf/layer.conf" dosyasında ayarlanır:

BBFILE_PRIORITY_meta-interelectronix = "6"

Bizim durumumuzda, "meta-interelectronix" önceliği "6" olarak ve "meta-raspberrypi" önceliği "9" olarak ayarlanmıştır.

Öncelik ne kadar yüksek olursa bbappend dosyalarının değişkenleri bitbake işlemine o kadar geç uygulanır. "meta-raspberrypi" de bir "psplash_%.bbappend" dosyası olduğundan bu dosyanın değişkenleri "meta-interelectronix" katmanımızdaki geçersiz kılmaları tekrar geçersiz kılar, dolayısıyla hiçbir şey değişmez.

Not

Değişikliklerinizi daha sonra yabancı meta katmanların tüm geçersiz kılmaları olarak uygulamak için özel meta katmanınızın önceliğini yüksek bir sayıya (ör. 50) değiştirin.

Değişkenlerin sıralaması nasıl kolaylaştırılır?

Bir değişkenin tüm meta katmanlar üzerindeki sıralamasını elde etmenin kolay bir komutu bulunur:

bitbake-getvar -r recipe VARIABLE

Bizim durumumuzda bu komut:

bitbake-getvar -r psplash SPLASH_IMAGES

"meta-interelectronix" katmanının önceliğini "50" olarak değiştirildikten sonra sonuç şöyle görünür:

bitbake-getvar -r psplash SPLASH_IMAGES
#
# $SPLASH_IMAGES [4 operations]
#   set /workdir/poky-kirkstone/meta/recipes-core/psplash/psplash_git.bb:19
#     "file://psplash-poky-img.h;outsuffix=default"
#   set /workdir/poky-kirkstone/meta-interelectronix/recipes-core/psplash/psplash_%.bbappend:10
#     "file://psplash-ixlogo-white-img.h;outsuffix=interelectronix"
#   override[rpi]:set /workdir/poky-kirkstone/meta-raspberrypi/recipes-core/psplash/psplash_%.bbappend:2
#     "file://psplash-raspberrypi-img.h;outsuffix=raspberrypi"
#   override[rpi]:set /workdir/poky-kirkstone/meta-interelectronix/recipes-core/psplash/psplash_%.bbappend:9
#     "file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"
# pre-expansion value:
#   "file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"
SPLASH_IMAGES="file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"

Kullanılan katmanların önceliğini aşağıdaki komutla da gösterebilirsiniz:

bitbake-layers show-layers

Telif Hakkı Lisansı

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