Embedded Software - Yocto recipes dependency isang screenshot ng isang computer

Mga recipe ng Yocto dependencies

Paano makakuha ng mga dependency sa pagitan ng mga variable ng recipe

Lumilikha ka ba ng isang override ng mga variable ng recipe sa iyong pasadyang meta layer at walang nangyayari?

Huwag mag alinlangan sa iyong sarili at magkaroon ng isang pagtingin sa prayoridad ng mga ginamit na meta layer.

Halimbawa

Nais naming bumuo ng isang Yocto Linux distro para sa Raspberry Pi 4 at baguhin ang imahe ng background ng psplash recipe. Upang gawin iyon, lumikha kami ng isang folder na 'psplash' sa aming pasadyang meta layer na 'meta interelectronix' at idagdag ang file na 'psplash_%.bbappend' upang i override ang mga variable ng 'SPLASH_IMAGES'.

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

Pagkatapos ng pagdaragdag ng 'meta interelectronix' sa 'bblayers.conf', bitbake namin ang Linux distro, flash ito sa isang SD card at boot ang Raspberry Pi 4 na may ito.

Ngunit walang pasadyang background image para sa splash screen ang ginamit - bakit ganoon?

Ano ang dahilan ng ganitong pag uugali

Pagkatapos maghanap para sa 'error', mayroon kaming isang pagtingin sa priority variable ng mga meta layer. Ang mga meta layer ay may variable para sa prayoridad na tukuyin kung saan ang ranggo ng meta layer ay ginagamit kapag bitbaking ang Linux distro.

Ang variable ay nakatakda sa file na 'meta interelectronix/conf/layer.conf':

BBFILE_PRIORITY_meta-interelectronix = "6"
Sa aming kaso, ang prayoridad ng 'meta interelectronix' ay itinakda sa '6' at ang prayoridad ng 'meta raspberrypi' ay nakatakda sa '9'.

Ang mas mataas na prayoridad, ang mamaya ay ang mga variable ng bbappend file na inilapat sa bitbake. Tulad ng sa 'meta raspberrypi' din ay isang 'psplash_%.bbappend' file, ang mga variable ng file na ito ay i override ang mga override sa aming 'meta interelectronix' layer muli, isang walang nagbabago.

Tala

Baguhin ang prayoridad ng iyong pasadyang meta layer sa isang mataas na bilang, halimbawa 50, upang ilapat ang iyong mga pagbabago sa ibang pagkakataon bilang lahat ng mga overrides ng mga banyagang meta layer.

### Paano mapapadali ang pagraranggo ng mga variable?

Mayroong isang madaling utos upang makuha ang ranggo ng isang variable sa lahat ng mga meta layer:

bitbake-getvar -r recipe VARIABLE

Sa aming kaso, ang utos ay:

bitbake-getvar -r psplash SPLASH_IMAGES

Ganito ang hitsura ng resulta matapos baguhin ang prayoridad ng 'meta interelectronix' layer sa '50':

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"

Maaari mo ring ipakita ang prayoridad ng mga ginamit na layer na may sumusunod na utos:

bitbake-layers show-layers

Lisensya sa Copyright

Copyright © 2022 Interelectronix e.K.
Ang source code na ito ng Proyekto ay lisensyado sa ilalim ng GPL-3.0 lisensya.