ایمبیڈڈ سافٹ ویئر - وژن فائیو - مینڈر - یوکٹو - حصہ 3 ایک کمپیوٹر کا اسکرین شاٹ

VisionFive - Mender - Yocto

حصہ 3 - Mender کے لیے u-boot کنفیگریشن

u-boot سیٹ اپ Mender

Mender کے لیے u-boot کنفیگریشن

ہم پیش رفت کے لیے 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 سے Mender کی ترتیبات کے ساتھ پیچ کرنا ہو گا
  • ہمیں Yocto کے ساتھ u-boot بٹ بیک کرنا ہو گا
  • ہمیں دوسرے مرحلے کے بوٹ لوڈر کے ساتھ اپ لوڈ کرنے کے لیے u-boot کو خود سے کمپائل کرنا ہو گ۔

u-boot کو پیچ کرنا

سب سے پہلے، کام کرنے کے لیے کوڈ بیس حاصل کرنے کے لیے starfive-tech سے u-boot ڈیریویٹیو کو کلون کریں۔

git clone -b JH7100_upstream https://github.com/starfive-tech/u-boot.git
Mender کا خود کار کنفیگر کردہ پیچ

Yocto میں meta-mender-core Mender کی ضروریات کے لیے u-boot کو خودبخود پیچ کرنے کی کوشش کرتا ہے اگر 'MENDER_UBOOT_AUTO_CONFIGURE = "1" سیٹ ہو۔ زیادہ تر معاملات میں، یہ منظر نامہ بورڈ مینوفیکچررز کی ایڈجسٹمنٹ کی وجہ سے کام نہیں کرتا۔

لیکن Mender کا خود کار کنفیگر شدہ پیچ Mender کلائنٹ کے ساتھ VisionFive SOC کے لیے u-boot کو ایڈجسٹ کرنے کے لیے ایک اچھا نکتہ آغاز ہے۔

خود کار کنفیگر شدہ پیچ حاصل کرنے کے لیے، آپ کو MENDER_UBOOT_AUTO_CONFIGURE = "1" ترتیب کے ساتھ u-boot بٹ بیک کرنا ہو گا:

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.patch کو starfive-tech سے کلون شدہ u-boot ریپوزٹری پر لاگو کرتے ہیں۔

cd u-boot-starfive
git apply path-to-patch/mender_auto_configured.patch
u-boot-starfive کو حسب ضرورت بنائیں

u-boot کو درست معلومات حاصل کرنے کے لیے Mender کے متغیرات کو جاننے کی ضرورت ہے جس سے SOC کو Mender سرور کے ساتھ نمونے کو نصب کرنے کے بعد بوٹ کرنا چاہیے۔

اس لیے ہمیں Mender متغیرات حاصل کرنے کے لیے 'u-boot-starfive/include/configs/starfive-jh7100.h' فائل کو اپنی مرضی کے مطابق بنانا ہو گا اور یہ نظم کرنا ہو گا کہ کس پارٹیشن سے بوٹ کیا جائے:

#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}' پوائنٹ ہے اور پھر فیصلہ کریں کہ kernel لوڈ کرنے کے لیے کون سی uEnv-فائل لی جاتی ہے۔

اس کے بعد Yocto میں استعمال کرنے کے لیے u-boot سے ایک مکمل پیچ بنائیں:

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" میں تبدیل کریں۔

اب آپ Mender کے خود کار کنفیگر کریں فنکشن کے بغیر اور اپنی مرضی کے پیچ کے ساتھ 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

شامل کردہ Mender کلائنٹ کے ساتھ bitbake Yocto Linux:

bitbake vision-five-image-mender

Linux امیج کو SD کارڈ پر فلیش کریں اور VisionFive SOC کو بوٹ کریں۔ اگر سب کچھ ٹھیک کام کرتا ہے، تو ڈیوائس Mender سرور GUI میں زیر التواء ڈیوائس کے طور پر ظاہر ہوتی ہے۔

'DEVICES' میں، آپ اس ڈیوائس کے لیے بعد میں سافٹ ویئر اپ ڈیٹس لگانے کا نظم کرنے کے لیے اسے قبول اور شامل کر سکتے ہیں۔

Mender کے لیے نمونہ بنانے کا طریقہ VisionFive - Mender - Yocto - حصہ 4 میں دیکھیں۔

کاپی رائٹ لائسنس

کاپی رائٹ © 2022 Interelectronix eKاس پروجیکٹ کا سورس کوڈ GPL-3.0 لائسنس کے تحت لائسنس یافتہ ہے۔

ایمبیڈڈ سافٹ ویئر - وژن فائیو - مینڈر - یوکٹو ایک کمپیوٹر کا اسکرین شاٹ
حصہ 1 - Yocto ماحول کا بنیادی سیٹ اپ

مضامین کے سلسلے کا حصہ 1، Mender کلائنٹ انضمام کے ساتھ Yocto Linux بنانے کے لیے Yocto ماحول کیسے سیٹ اپ کیا جائے۔

ایمبیڈڈ سافٹ ویئر - وژن فائیو - مینڈر - یوکٹو ایک کمپیوٹر کا اسکرین شاٹ
حصہ 2 - Mender کو شامل کرنے کے لیے بنیادی سیٹ اپ

مضامین کے سلسلے کا حصہ 2، Mender کلائنٹ انضمام کے ساتھ Yocto Linux بنانے کے لیے Yocto ماحول کیسے سیٹ اپ کیا جائے۔

ایمبیڈڈ سافٹ ویئر - وژن فائیو - مینڈر - یوکٹو ایک کمپیوٹر کا اسکرین شاٹ
حصہ 4 - Mender کے لیے ایک نمونہ بنائیں

مضامین کے سلسلے کا حصہ 4، Mender کلائنٹ انضمام کے ساتھ Yocto Linux بنانے کے لیے Yocto ماحول کیسے سیٹ اپ کیا جائے۔