תוכנה משובצת - תלות במתכוני Yocto צילום מסך של מחשב

תלות במתכוני יוקטו

כיצד לקבל תלות בין משתני מתכון

האם אי פעם יצרתם עקיפה של משתני מתכון בשכבת המטא המותאמת אישית שלכם ושום דבר לא קורה?

אל תפקפקו בעצמכם ותסתכלו על העדיפות של שכבות המטא המשומשות.

דוגמה

אנחנו רוצים לבנות הפצה של Yocto Linux עבור Raspberry Pi 4 ולשנות את תמונת הרקע של מתכון psplash. כדי לעשות זאת, אנו יוצרים תיקייה 'psplash' בשכבת המטא-שכבה המותאמת אישית שלנו 'meta-interelectronix' ומוסיפים את הקובץ 'psplash_%.bbappend' כדי לעקוף את המשתנים של 'SPLASH_IMAGES'.

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

לאחר הוספת 'meta-interelectronix' ל 'bblayers.conf', אנחנו bitbake את לינוקס distro, פלאש אותו לכרטיס SD ואתחול Raspberry Pi 4 עם זה.

אך לא נעשה שימוש בתמונת רקע מותאמת אישית עבור מסך הפתיחה - מדוע?

מה גורם להתנהגות זו?

לאחר חיפוש ה'שגיאה', יש לנו מבט על משתנה העדיפות של שכבות העל. למטא-שכבות יש משתנה עבור העדיפות להגדיר באיזה דירוג משתמשים במטא-שכבה בעת אפיית סיביות של הפצת לינוקס.

המשתנה מוגדר בקובץ 'meta-interelectronix/conf/layer.conf':

BBFILE_PRIORITY_meta-interelectronix = "6"
במקרה שלנו, העדיפות של 'מטא-אינטראלקטרוניקס' נקבעה ל-'6' והעדיפות של 'מטא-פטל' נקבעה ל-'9'.

ככל שהעדיפות גבוהה יותר, כך המשתנים של קבצי bbappend שהוחלו על bitbake. כמו '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

רישיון זכויות יוצרים

זכויות יוצרים © 2022 Interelectronix e.K.
קוד המקור של פרויקט זה מורשה תחת רישיון GPL-3.0*.