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

VisionFive - מנדר - יוקטו

חלק 3 - תצורת U-boot עבור Mender

הגדרת u-boot Mender

תצורת 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'.

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*.

תוכנה משובצת מחשב - VisionFive - Mender - Yocto צילום מסך של מחשב
חלק 1 - הגדרה בסיסית של סביבת Yocto

חלק 1 בסדרת מאמרים, כיצד להקים סביבת Yocto ליצירת Yocto Linux עם אינטגרציה של לקוח מנדר.

תוכנה משובצת מחשב - VisionFive - Mender - Yocto צילום מסך של מחשב
חלק 2 - הגדרה בסיסית שתכלול את Mender

חלק 2 בסדרת מאמרים, כיצד להקים סביבת Yocto ליצירת Yocto Linux עם אינטגרציה של לקוח מנדר.

תוכנה משובצת מחשב - VisionFive - Mender - Yocto צילום מסך של מחשב
חלק 4 - יצירת חפץ למנדר

חלק 4 בסדרת מאמרים, כיצד להקים סביבת Yocto ליצירת Yocto Linux עם אינטגרציה של לקוח מנדר.