persediaan u-boot Mender
Kami menggunakan cawangan Yocto Kirkstone untuk pembangunan. Kami menganggap bahawa anda sudah mempunyai persekitaran pembangunan kerja yang dipasang dan menyediakan persekitaran anda seperti yang diterangkan dalam VisionFive - Mender - Yocto - Bahagian 1 dan dalam VisionFive - Mender - Yocto - Bahagian 2.
u-boot Papan VisionFive
VisionFive RISC-V SBC menggunakan dua bootloader - secondBoot dan you-boot. Mekanisme bagaimana ini berfungsi diterangkan dalam Panduan Permulaan Pantas VisionFive SBC.
Mengendalikan keperluan ini bermakna bahawa
- kita perlu tampal u-boot dari https://github.com/starfive-tech/u-boot dengan tetapan untuk mender
- kita perlu bitbake u-boot dengan yocto
- Kami perlu menyusun U-boot secara manual untuk dimuat naik dengan pemuat but peringkat kedua
Menampal u-boot
Pertama, klon derivatif u-boot daripada starfive-tech untuk mendapatkan asas kod untuk bekerjasama.
git clone -b JH7100_upstream https://github.com/starfive-tech/u-boot.git
Mender tampalan yang dikonfigurasi secara automatik
meta-mender-core di Yocto cuba menampal u-boot secara automatik untuk keperluan Mender jika 'MENDER_UBOOT_AUTO_CONFIGURE = "1"' ditetapkan. Dalam kebanyakan kes, senario ini tidak berfungsi kerana pelarasan pengeluar papan.
Tetapi tampalan Mender yang dikonfigurasi secara automatik adalah titik permulaan yang baik untuk menyesuaikan u-boot untuk VisionFive SOC dengan pelanggan Mender.
Untuk mendapatkan tampalan yang dikonfigurasikan secara automatik, anda perlu menggigit u-boot dengan tetapan MENDER_UBOOT_AUTO_CONFIGURE = "1":
bitbake u-boot-visionfive
Fail tampalan bernama 'mender_auto_configured.patch' dicipta dalam direktori 'your-build-directory/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0'.
Sapukan tampalan pada u-boot yang diklon
Seterusnya, kami menggunakan mender_auto_configured.patch ini pada repositori u-boot yang diklon dari starfive-tech.
cd u-boot-starfive
git apply path-to-patch/mender_auto_configured.patch
Sesuaikan u-boot-starfive
u-boot perlu mengetahui pemboleh ubah Mender untuk mendapatkan maklumat yang betul dari mana partition SOC harus boot selepas menggunakan artifak dengan pelayan Mender.
Oleh itu, kita perlu menyesuaikan fail 'u-boot-starfive/include/configs/starfive-jh7100.h' untuk mendapatkan pemboleh ubah Mender dan mengurus daripada partition mana untuk boot:
#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
Uji '${mender_kernel_root_name}' adalah titik dan kemudian memutuskan fail uEnv mana yang diambil untuk memuatkan kernel.
Selepas ini, buat tampalan lengkap daripada u-boot untuk menggunakannya di Yocto:
git diff --patch > ~/Documents/Yocto/meta-interelectronix-visionfive/recipes-bsp/u-boot/files/0004-u-boot.patch
Sertakan tampalan ini di Yocto dalam 'u-boot-visionfive_%.bbappend':
FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
SRC_URI:append = " \
file://0004-u-boot.patch \
"
bitbake u-boot
Dalam 'u-boot-visionfive_%.bbappend' tukar MENDER_UBOOT_AUTO_CONFIGURE = "1" kepada MENDER_UBOOT_AUTO_CONFIGURE = "0".
Kini anda boleh menggigit u-boot tanpa fungsi autoconfigure mender dan dengan patch tersuai:
bitbake u-boot-visionfive
Susun u-boot untuk muat naik dengan pemuat but peringkat kedua
Kini anda boleh menyusun u-boot dalam direktori 'VisionFive-build/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0/git', yang mengandungi tampalan yang ditambah dengan 'bitbake u-boot-visionfive'.
- Cara menyusun u-boot untuk VisionFive SOC diterangkan di bawah Menyusun u-boot dan Kernel
- Cara memuat naik u-boot untuk VisionFive SOC diterangkan di bawah Lampiran B: Mengemas kini Perisian Tegar dan but anda
bitbake Yocto Linux
bitbake Yocto Linux dengan klien Mender yang disertakan:
bitbake vision-five-image-mender
Flash imej Linux ke kad SD dan but VisionFive SOC. Jika semuanya berfungsi dengan baik, peranti muncul sebagai peranti belum selesai dalam GUI pelayan Mender.
Di bawah 'PERANTI', anda boleh menerima dan memasukkannya untuk menguruskan penggunaan kemas kini perisian kemudian untuk peranti ini.
Lihat cara mencipta artifak untuk Mender di VisionFive - Mender - Yocto - Bahagian 4.</:code8:></:code7:></:code6:></:code5:></:code4:></:code3:></:code2:></:code1:>
Lesen Hak Cipta
Hakcipta Terpelihara © 2022 Interelectronix e.K.
Kod sumber Projek ini dilesenkan di bawah lesen GPL-3.0.
Bahagian 1 daripada satu siri artikel, cara menyediakan persekitaran Yocto untuk mencipta Yocto Linux dengan penyepaduan klien Mender.
Bahagian 2 daripada satu siri artikel, cara menyediakan persekitaran Yocto untuk mencipta Yocto Linux dengan penyepaduan klien Mender.
Bahagian 4 dari satu siri artikel, bagaimana untuk menyediakan persekitaran Yocto untuk mencipta Yocto Linux dengan penyepaduan pelanggan Mender.