הגדרת u-boot Mender
אנו משתמשים בסניף יוקטו קירקסטון לפיתוח. אנו מניחים שכבר התקנת סביבת פיתוח עבודה והגדרת את הסביבה שלך כמתואר ב- VisionFive - Mender - Yocto - חלק 1 וב- VisionFive - Mender - Yocto - חלק 2.
u-boot לוח VisionFive
VisionFive RISC-V SBC להשתמש בשני bootloader - secondBoot ו you-boot. המנגנונים שבהם זה עובד מתוארים במדריך ההתחלה המהירה של VisionFive SBC.
טיפול בדרישות אלה פירושו ש
- אנחנו צריכים לתקן U-boot מ https://github.com/starfive-tech/u-boot עם הגדרות עבור mender
- אנחנו צריכים Bitbake U-boot עם Yocto
- עלינו לקמפל U-boot באופן ידני להעלאה עם Bootloader בשלב השני
תיקון U-boot
ראשית, שכפל U-boot נגזרת מ starfive-tech כדי לקבל בסיס קוד לעבוד איתו.
git clone -b JH7100_upstream https://github.com/starfive-tech/u-boot.git
תיקון מוגדר אוטומטית של Mender
meta-mender-core ב Yocto מנסה לתקן u-boot באופן אוטומטי עבור הצרכים Mender אם 'MENDER_UBOOT_AUTO_CONFIGURE = "1" מוגדר. ברוב המקרים, תרחיש זה אינו פועל עקב התאמות של יצרני הלוח.
אבל התיקון האוטומטי של Mender הוא נקודת התחלה טובה להתאמת u-boot עבור VisionFive SOC עם לקוח מנדר.
כדי לקבל את התיקון המוגדר אוטומטית, עליך bitbake u-boot עם הגדרת MENDER_UBOOT_AUTO_CONFIGURE = "1":
bitbake u-boot-visionfive
קובץ תיקון בשם 'mender_auto_configured.patch' נוצר בספרייה 'your-build-directory/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0'.
החלת תיקון על U-boot משוכפל
לאחר מכן, אנו מיישמים תיקון mender_auto_configured. זה על מאגר האתחול המשובט של Starfive-tech.
cd u-boot-starfive
git apply path-to-patch/mender_auto_configured.patch
התאמה אישית של u-boot-starfive
u-boot צריך לדעת את משתני Mender כדי לקבל את המידע הנכון מאיזו מחיצה SOC צריך לאתחל לאחר פריסת artifact עם שרת Mender.
אז אנחנו צריכים להתאים אישית את הקובץ 'u-boot-starfive/include/configs/starfive-jh7100.h' כדי לקבל את משתני Mender ולנהל מאיזו מחיצה לאתחל:
#define STARLIGHT_FEDORA_BOOTENV \
"bootdir=/boot\0" \
"bootenv2=uEnv.txt\0" \
"bootenv3=uEnv3.txt\0" \
"mmcdev=0\0" \
"mmcpart=2\0"
#define CONFIG_EXTRA_ENV_SETTINGS \
MENDER_ENV_SETTINGS \
STARLIGHT_FEDORA_BOOTENV \
"loadaddr=0xa0000000\0" \
"loadbootenv=fatload ${mender_uboot_boot} ${loadaddr} ${bootenv}\0" \
"ext4bootenv2=ext4load ${mender_uboot_root} ${loadaddr} ${bootdir}/${bootenv2}\0" \
"ext4bootenv3=ext4load ${mender_uboot_root} ${loadaddr} ${bootdir}/${bootenv3}\0" \
"importbootenv=echo Importing environment from mmc mender_uboot_dev ${mender_uboot_boot} ...; " \
"env import -t ${loadaddr} ${filesize}\0" \
"mmcbootenv=run mender_setup; " \
"echo mender_kernel_root_name ${mender_kernel_root_name} ...; " \
"echo mender_boot_part_name ${mender_boot_part_name} ...; " \
"setenv bootpart ${mender_uboot_root}; " \
"mmc dev ${mender_uboot_dev}; " \
"if mmc rescan; then " \
"run loadbootenv && run importbootenv; " \
"if test ${mender_kernel_root_name} = /dev/mmcblk0p2; then " \
"run ext4bootenv2 && run importbootenv; " \
"fi; " \
"if test ${mender_kernel_root_name} = /dev/mmcblk0p3; then " \
"run ext4bootenv3 && run importbootenv; " \
"fi; " \
"if test -n $uenvcmd; then " \
"echo Running uenvcmd ...; " \
"run uenvcmd; " \
"fi; " \
"fi\0" \
"fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \
BOOTENV \
BOOTENV_SF
בדוק '${mender_kernel_root_name}' היא הנקודה ולאחר מכן החלט איזה קובץ uEnv נלקח כדי לטעון את הליבה.
לאחר מכן, צור תיקון מלא מ u-boot לשימוש בו Yocto:
git diff --patch > ~/Documents/Yocto/meta-interelectronix-visionfive/recipes-bsp/u-boot/files/0004-u-boot.patch
כלול תיקון זה ב- Yocto ב- 'u-boot-visionfive_%.bbappend':
FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
SRC_URI:append = " \
file://0004-u-boot.patch \
"
Bitbake U-boot
ב- 'u-boot-visionfive_%.bbappend' שנה MENDER_UBOOT_AUTO_CONFIGURE = "1" ל- MENDER_UBOOT_AUTO_CONFIGURE = "0".
עכשיו אתה יכול bitbake u-boot ללא הפונקציה autoconfigure של mender ועם תיקונים מותאמים אישית:
bitbake u-boot-visionfive
הידור u-boot להעלאה עם bootloader בשלב השני
עכשיו אתה יכול לקמפל u-boot בספרייה 'VisionFive-build/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0/git', אשר מכיל את התיקונים שנוספו עם 'bitbake u-boot-visionfive'.
- כיצד לקמפל u-boot עבור VisionFive SOC מתואר תחת קומפילציה u-boot וליבה
- כיצד להעלות u-boot עבור VisionFive SOC מתואר תחת נספח ב': עדכון קושחה ואתחול-you-boot
bitbake Yocto Linux
bitbake Yocto Linux עם לקוח Mender כלול:
bitbake vision-five-image-mender
פלאש את תמונת לינוקס לכרטיס SD ואתחל את VisionFive SOC. אם הכל פועל כשורה, ההתקן מופיע כהתקן ממתין בממשק המשתמש הגרפי של שרת Mender.
תחת 'התקנים', תוכל לקבל ולכלול אותו כדי לנהל פריסות של עדכוני תוכנה מאוחרים יותר עבור התקן זה.
ראה כיצד ליצור חפץ עבור מנדר בחזון חמש - מנדר - יוקטו - חלק 4.</:code8:></:code7:></:code6:></:code5:></:code4:></:code3:></:code2:></:code1:>
רישיון זכויות יוצרים
זכויות יוצרים © 2022 Interelectronix e.K.
קוד המקור של פרויקט זה מורשה תחת רישיון GPL-3.0*.
חלק 1 בסדרת מאמרים, כיצד להקים סביבת Yocto ליצירת Yocto Linux עם אינטגרציה של לקוח מנדר.
חלק 2 בסדרת מאמרים, כיצד להקים סביבת Yocto ליצירת Yocto Linux עם אינטגרציה של לקוח מנדר.
חלק 4 בסדרת מאמרים, כיצד להקים סביבת Yocto ליצירת Yocto Linux עם אינטגרציה של לקוח מנדר.