Phần mềm nhúng - Yocto recipes dependency ảnh chụp màn hình của máy tính

Phụ thuộc công thức nấu ăn Yocto

Làm thế nào để có được sự phụ thuộc giữa các biến công thức

Bạn đã bao giờ tạo ghi đè các biến công thức trong lớp meta tùy chỉnh của mình và không có gì xảy ra không?

Đừng nghi ngờ bản thân và hãy xem mức độ ưu tiên của các lớp meta được sử dụng.

Ví dụ

Chúng tôi muốn xây dựng một bản phân phối Yocto Linux cho Raspberry Pi 4 và thay đổi hình nền của công thức psplash. Để làm điều đó, chúng tôi tạo một thư mục 'psplash' trong lớp meta tùy chỉnh của chúng tôi 'meta-interelectronix' và thêm tệp 'psplash_%.bbappend' để ghi đè lên các biến của 'SPLASH_IMAGES'.

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

Sau khi thêm 'meta-interelectronix' vào 'bblayers.conf', chúng tôi bitbake bản phân phối Linux, flash nó vào thẻ SD và khởi động Raspberry Pi 4 với nó.

Nhưng không có hình nền tùy chỉnh nào cho màn hình giật gân được sử dụng - tại sao vậy?

Điều gì gây ra hành vi này?

Sau khi tìm kiếm 'lỗi', chúng ta sẽ xem xét biến ưu tiên của các lớp meta. Các lớp meta có một biến cho mức độ ưu tiên để xác định thứ hạng mà lớp meta được sử dụng khi bitbaking bản phân phối Linux.

Biến được đặt trong tệp 'meta-interelectronix/conf/layer.conf':

BBFILE_PRIORITY_meta-interelectronix = "6"
Trong trường hợp của chúng tôi, mức độ ưu tiên của 'meta-interelectronix' được đặt thành '6' và mức độ ưu tiên của 'meta-raspberrypi' được đặt thành '9'.

Mức độ ưu tiên càng cao, càng muộn là các biến của tệp bbappend được áp dụng cho bitbake. Như trong 'meta-raspberrypi' cũng là tệp 'psplash_%.bbappend', các biến của tệp này ghi đè lên các ghi đè trong lớp 'meta-interelectronix' của chúng tôi một lần nữa, không có gì thay đổi.

Ghi

Thay đổi mức độ ưu tiên của lớp meta tùy chỉnh của bạn thành một số cao, ví dụ: 50, để áp dụng các thay đổi của bạn sau này dưới dạng tất cả các ghi đè của các lớp meta nước ngoài.

### Làm thế nào để dễ dàng xếp hạng các biến?

Có một lệnh dễ dàng để có được thứ hạng của một biến trên tất cả các lớp meta:

bitbake-getvar -r recipe VARIABLE

Trong trường hợp của chúng tôi, lệnh là:

bitbake-getvar -r psplash SPLASH_IMAGES

Kết quả sau khi thay đổi mức độ ưu tiên của layer 'meta-interelectronix' thành '50' trông như thế này:

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"

Bạn cũng có thể hiển thị mức độ ưu tiên của các lớp được sử dụng bằng lệnh sau:

bitbake-layers show-layers

Giấy phép bản quyền

**Bản quyền © 2022 Interelectronix ví dụ: **
Mã nguồn Project này được cấp phép theo giấy phép GPL-3.0.