إعداد 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'.
- يتم وصف كيفية تجميع u-boot لـ VisionFive SOC تحت تجميع u-boot وKernel
- يتم وصف كيفية تحميل u-boot لـ VisionFive SOC في الملحق ب: تحديث البرنامج الثابت وu-boot
#### تكوين 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 **.
الجزء 1 من سلسلة مقالات، كيفية إعداد بيئة Yocto لإنشاء Yocto Linux مع دمج عميل Mender.
الجزء 2 من سلسلة من المقالات، كيفية إعداد بيئة Yocto لإنشاء Yocto Linux مع دمج عميل Mender.
الجزء 4 من سلسلة من المقالات، كيفية إعداد بيئة Yocto لإنشاء Yocto Linux مع دمج عميل Mender.