Software Embarcado - Yocto receitas dependência, uma captura de tela de um computador

Dependências de receitas do Yocto

Como obter dependências entre variáveis de receita

Você já criou uma substituição de variáveis de receita na sua meta-camada personalizada e nada acontece?

Não duvide de você e dê uma olhada na prioridade das meta-camadas usadas.

Exemplo

Queremos construir uma distro Yocto Linux para Raspberry Pi 4 e alterar a imagem de fundo da receita psplash. Para fazer isso, criamos uma pasta "psplash" na nossa meta-camada personalizada "meta-interelectronix" e adicionamos o arquivo "psplash_%.bbappend" para substituir as variáveis de "SPLASH_IMAGES".

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

Depois de adicionar "meta-interelectronix" ao "bblayers.conf", nós fazemos bitbake da distro do Linux, colocamos em um cartão SD e inicializamos o Raspberry Pi 4 com ele.

Mas nenhuma imagem de fundo personalizada para a tela inicial foi usada. Por que isso acontece?

O que causa esse comportamento?

Depois de pesquisar o "erro", vamos dar uma olhada na variável de prioridade das meta-camadas. Meta-camadas têm uma variável para a prioridade para definir em qual rank a meta-camada é usada ao fazer bitbake da distribuição Linux.

A variável é definida no arquivo "meta-interelectronix/conf/layer.conf":

BBFILE_PRIORITY_meta-interelectronix = "6"

No nosso caso, a prioridade de "meta-interelectronix" foi definida como "6" e a prioridade de "meta-raspberrypi" é definida como "9".

Quanto maior a prioridade, mais tarde as variáveis dos arquivos bbappend foram aplicadas ao bitbake. Como "meta-raspberrypi" também é um arquivo "psplash_%.bbappend", as variáveis deste arquivo substituem as substituições na nossa camada "meta-interelectronix" novamente, e nada muda.

Observação:

Altere a prioridade da sua meta-camada personalizada para um número alto, por exemplo, 50, para aplicar suas alterações mais tarde, pois todas substituem as meta-camadas estrangeiras.

Como facilitar a classificação das variáveis?

Existe um comando fácil para obter a classificação de uma variável sobre todas as meta-camadas:

bitbake-getvar -r recipe VARIABLE

No nosso caso, o comando foi:

bitbake-getvar -r psplash SPLASH_IMAGES

O resultado após alterar a prioridade da camada "meta-interelectronix" para "50" é o seguinte:

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"

Você também pode mostrar a prioridade das camadas usadas com o seguinte comando:

bitbake-layers show-layers

Licença de direitos autorais

Copyright © 2022 Interelectronix e.K.
Este código-fonte do Projeto está licenciado sob a licença * * GPL-3.0 * *.