Inbäddad programvara - Yocto recept beroende en skärmdump av en dator

Beroenden för Yocto-recept

Hur man får beroenden mellan receptvariabler

Skapar du någonsin en åsidosättning av receptvariabler i ditt anpassade metalager utan att något händer?

Tvivla inte på dig själv – ta en titt på prioriteringen av använda metalager.

Exempel

Vi vill bygga en Yocto Linux-distribution för Raspberry Pi 4 och ändra bakgrundsbilden i psplash-receptet. För att göra det skapar vi mappen "psplash" i vårt anpassade metalager "meta-interelectronix" och lägger till filen "psplash_%.bbappend" för att åsidosätta variablerna för "SPLASH_IMAGES".

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

Efter att ha lagt till "meta-interelectronix" till "bblayers.conf" kommer vi att bitbake Linux-distributionen, flasha den till ett SD-kort och starta Raspberry Pi 4 med det.

Men ingen anpassad bakgrundsbild för startskärmen användes – varför det?

Vad orsakar detta beteende?

Efter att ha sökt efter "felet" har vi tittat på den prioriterade variabeln för metalagren. Metalager har en variabel för prioriteten för att definiera i vilken rang metalagret används vid bitbaking av Linux-distributionen.

Variabeln ställs in i filen "meta-interelectronix/conf/layer.conf":

BBFILE_PRIORITY_meta-interelectronix = "6"

I vårt fall var prioriteten för "meta-interelectronix" konfigurerats till "6", och prioriteten för "meta-raspberrypi" är konfigurerad till "9".

Ju högre prioritet, desto senare var variablerna för bbappend-filer som tillämpades på bitbake. Som i "meta-raspberrypi" är också en "psplash_%.bbappend"-fil, variablerna i denna fil åsidosätter åsidosättningar i vårt lager "meta-interelectronix", ingenting förändras.

Obs

Ändra prioriteten för din anpassade metalager till ett högt nummer, t.ex. 50, för att tillämpa dina ändringar senare vid alla åsidosättningar av utländska metalager.

Hur får man enkel rangordning av variabler?

Det finns ett enkelt kommando för att få rangordningen av en variabel över alla metalager:

bitbake-getvar -r recipe VARIABLE

I vårt fall var kommandot:

bitbake-getvar -r psplash SPLASH_IMAGES

Resultatet efter att ha ändrat prioriteten för lagret "meta-interelectronix" till "50" ser ut så hä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"

Du kan också visa prioriteten för de använda lagren med följande kommando:

bitbake-layers show-layers

Upphovsrättslicens

Copyright © 2022 Interelectronix e.K.
Detta projekts källkod är licensierad under licensen GPL-3.0.