البرامج المضمنة - VisionFive - Mender - Yocto - الجزء 3 لقطة شاشة لجهاز كمبيوتر

VisionFive - Mender - Yocto

الجزء 3 - تكوين u-boot لـ Mender

إعداد u-boot لـ Mender

تكوين u-boot لـ Mender

نحن نستخدم فرع Yocto Kirkstone من أجل التنمية. نفترض أن لديك بالفعل بيئة تطوير عمل مثبتة وقمت بإعداد بيئتك كما هو موضح في VisionFive - Mender - Yocto - الجزء 1 وفي VisionFive - Mender - Yocto - الجزء 2.

لوحة u-boot VisionFive

تستخدم VisionFive RISC-V SBC محملين للتمهيد - secondBoot وu-boot. يتم وصف الآليات التي يعمل بها هذا في دليل البدء السريع VisionFive SBC.

التعامل مع هذه المتطلبات يعني أنه

  • يجب علينا تصحيح u-boot من https://github.com/starfive-tech/u-boot مع إعدادات للمقوّم -علينا تكوين u-boot مع الـ yocto
  • يجب علينا تجميع u-boot يدويًا للتحميل باستخدام برنامج التحميل في المرحلة الثانية

توصيل 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 مع عميل Mender.

للحصول على التصحيح الذي تم تكوينه تلقائيًا، يجب تكوين 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'.

تطبيق التصحيح على التمهيد المستنسخ

بعد ذلك، نطبق Mender_auto_configured.patch على مستودع u-boot المستنسخ من starfive-tech.

cd u-boot-starfive
git apply path-to-patch/mender_auto_configured.patch
تخصيص u-boot-starfive

يحتاج u-boot إلى معرفة متغيرات Mender للحصول على المعلومات الصحيحة من أي قسم يجب تمهيد SOC بعد نشر الأداة مع خادم 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 \
"
تكوين u-boot

في 'u-boot-visionfive_%.bbappend' غيّر MENDER_UBOOT_AUTO_CONFIGURE = "1" إلى MENDER_UBOOT_AUTO_CONFIGURE = "0".

الآن يمكنك تكوين u-boot دون وظيفة التكوين التلقائي للمصلح ومع التصحيحات المخصصة:

bitbake u-boot-visionfive

قم بتجميع u-boot للتحميل باستخدام برنامج التحميل في المرحلة الثانية

يمكنك الآن تجميع u-boot في الدليل 'VisionFive-build/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0/git' والذي يحتوي على التصحيحات المضافة باستخدام 'bitbake u-boot-visionfive'.

#### تكوين Yocto Linux

تكوين Yocto Linux مع عميل Mender المضمن:

bitbake vision-five-image-mender

أرسل صورة Linux إلى بطاقة SD وتمهيد VisionFive SOC. إذا كان كل شيء يعمل بشكل جيد، سيظهر الجهاز كجهاز معلق في واجهة المستخدم الرسومية لخادم Mender.

ضمن "الأجهزة"، يمكنك قبوله وإدراجه لإدارة عمليات نشر تحديثات البرامج اللاحقة لهذا الجهاز.

تعرف على كيفية إنشاء أداة لـ Mender في VisionFive - Mender - Yocto - الجزء 4.

ترخيص حقوق الطبع والنشر

حقوق الطبع والنشر © 2022 Interelectronixe.K.
رمز مصدر المشروع هذا مرخص بموجب ترخيص** GPL-3.0 **.

البرامج المضمنة - VisionFive - Mender - Yocto لقطة شاشة لجهاز كمبيوتر
الجزء 1 - الإعداد الأساسي لبيئة Yocto

الجزء 1 من سلسلة مقالات، كيفية إعداد بيئة Yocto لإنشاء Yocto Linux مع دمج عميل Mender.

البرامج المضمنة - VisionFive - Mender - Yocto لقطة شاشة لجهاز كمبيوتر
الجزء 2 - الإعداد الأساسي ليشمل Mender

الجزء 2 من سلسلة من المقالات، كيفية إعداد بيئة Yocto لإنشاء Yocto Linux مع دمج عميل Mender.

البرامج المضمنة - VisionFive - Mender - Yocto لقطة شاشة لجهاز كمبيوتر
الجزء 4 - إنشاء أداة لـ mender

الجزء 4 من سلسلة من المقالات، كيفية إعداد بيئة Yocto لإنشاء Yocto Linux مع دمج عميل Mender.