راهاندازی 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 با تنظیمات مربوط به mender پچ کنیم
- باید 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
اگر 'MENDER_UBOOT_AUTO_CONFIGURE = "1"'" تنظیم شده باشد، meta-mender-core در Yocto سعی میکند بهطور خودکار u-boot را برای نیازهای Mender پچ کند. در اغلب موارد، این سناریو به دلیل تغییرات سازندگان برد کار نمیکند.
اما پچ پیکربندیشده خودکار 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" ایجاد میشود.
پچ را روی u-boot کلونشده اعمال کنید
در مرحله بعد، این 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 را بشناسد تا اطلاعات صحیح را در مورد اینکه پس از استقرار آرتیفکت در سرور Mender، SOC باید از کدام پارتیشن بوت شود، بدست آورد.
بنابراین ما باید فایل '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' عبارت MMENDER_UBOOT_AUTO_CONFIGURE = "1""' "1" را به MENDER_UBOOT_AUTO_CONFIGURE = "0" تغییر دهید.
اکنون میتوانید u-boot را بدون عملکرد پیکربندی خودکار mender و با پچهای سفارشی بیتبیک کنید:
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' است، کامپایل کنید.
- نحوه کامپایل u-boot برای VisionFive SOC در کامپایل u-boot و Kernel توضیح داده شده است
- نحوه آپلود u-boot برای VisionFive SOC در پیوست B: بهروزرسانی فریمور و u-boot توضیح داده شده است
بیتبیک کردن Yocto Linux
Yocto Linux را با کلاینت Mender گنجانده شده، بیتبیک کنید:
bitbake vision-five-image-mender
ایمیج Linux را روی کارت SD فلش کرده و VisionFive SOC را بوت کنید. اگر همه چیز به خوبی کار کند، دستگاه به عنوان یک دستگاه در حال انتظار در رابط کاربری گرافیکی سرور Mender ظاهر میشود.
در بخش «DEVICES (دستگاهها)»، میتوانید آن را بپذیرید و استقرار بهروزرسانیهای نرمافزاری بعدی برای این دستگاه را مدیریت کنید.
نحوه ایجاد آرتیفکت برای Mender را در VisionFive - Mender - Yocto - بخش 4 مشاهده کنید.
مجوز کپی رایت
کپیرایت © 2022 Interelectronix e.K.این کد منبع پروژه دارای مجوز GPL-3.0 است.
بخش 1 از مجموعه مقالات، نحوه راهاندازی یک محیط Yocto برای ایجاد یک Yocto Linux با ادغام یک کلاینت Mender.
بخش 2 از مجموعه مقالات، نحوه راهاندازی یک محیط Yocto برای ایجاد یک Yocto Linux با ادغام یک کلاینت Mender.
بخش 4 از مجموعه مقالات، نحوه راهاندازی یک محیط Yocto برای ایجاد یک Yocto Linux با ادغام یک کلاینت Mender.