임베디드 소프트웨어 - Yocto 레시피 종속성 컴퓨터의 스크린 샷

Yocto 레시피 종속성

레시피 변수 간의 종속성을 얻는 방법

사용자 정의 메타 레이어에서 레시피 변수 재정의를 생성했는데 아무 일도 일어나지 않습니까?

자신이 무언가 잘못했다고 생각하지 말고 사용된 메타 레이어의 우선순위를 확인하세요.

저희는 Raspberry Pi 4용 Yocto Linux 배포판을 빌드하고 psplash 레시피의 배경 이미지를 변경하려고 합니다. 이를 위해, 사용자 정의 메타 레이어 'meta-interelectronix'에 'psplash' 폴더를 생성하고 'psplash_%.bbappend' 파일을 추가하여 'SPLASH_IMAGES' 변수를 재정의합니다.

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

'bblayers.conf'에 'meta-interelectronix'를 추가한 후 Linux 배포판을 비트베이크하고 SD 카드로 플래시한 다음 이를 사용하여 Raspberry Pi 4를 부팅합니다.

하지만, 시작 화면에 대한 사용자 정의 배경 이미지가 사용되지 않았습니다. 왜 그럴까요?

이 동작의 원인은 무엇입니까?

'오류'를 검색한 후 메타 레이어의 우선순위 변수를 확인합니다. 메타 레이어에는 Linux 배포판을 비트베이크할 때 메타 레이어가 사용되는 순위를 정의하는 우선순위에 대한 변수가 있습니다.

해당 변수는 'meta-interelectronix/conf/layer.conf' 파일에 설정됩니다:

BBFILE_PRIORITY_meta-interelectronix = "6"

저희의 경우에는 'meta-interelectronix'의 우선순위는 '6'으로 설정되었고 'meta-raspberrypi'의 우선순위는 '9'로 설정되었습니다.

우선순위가 높을수록 bitbake에 적용된 bbappend 파일의 변수가 나중에 적용됩니다. 'meta-raspberrypi'도 'psplash_%.bbappend' 파일인 것처럼 이 파일의 변수는 'meta-interelectronix' 레이어의 재정의를 다시 무시하지만 아무 것도 변경되지는 않습니다.

참고

외부 메타 레이어의 모든 재정의로 나중에 변경 사항을 적용하려면, 사용자 정의 메타 레이어의 우선순위를 높은 숫자(예: 50)로 변경하세요.

변수의 순위를 쉽게 얻는 방법은 무엇입니까?

모든 메타 레이어에서 변수의 순위를 얻는 쉬운 명령어가 있습니다:

bitbake-getvar -r recipe VARIABLE

저희의 경우 명령어는 다음과 같습니다:

bitbake-getvar -r psplash SPLASH_IMAGES

'meta-interelectronix' 레이어의 우선순위를 '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"

다음 명령어를 사용하여 사용된 레이어의 우선순위를 표시할 수도 있습니다:

bitbake-layers show-layers

저작권 라이선스

Copyright © 2022 Interelectronix e.K.
이 프로젝트 소스 코드는 GPL-3.0 라이선스에 따라 라이선스가 부여됩니다.