Perisian Terbenam - VisionFive - Mender - Yocto - Bahagian 3 tangkapan skrin komputer

VisionFive - Mender - Yocto

Bahagian 3 - konfigurasi u-boot untuk Mender

persediaan u-boot Mender

konfigurasi u-boot untuk 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'.

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.

Perisian Terbenam - VisionFive - Mender - Yocto tangkapan skrin komputer
Bahagian 1 - Persediaan asas persekitaran Yocto

Bahagian 1 daripada satu siri artikel, cara menyediakan persekitaran Yocto untuk mencipta Yocto Linux dengan penyepaduan klien Mender.

Perisian Terbenam - VisionFive - Mender - Yocto tangkapan skrin komputer
Bahagian 2 - Persediaan asas untuk memasukkan Mender

Bahagian 2 daripada satu siri artikel, cara menyediakan persekitaran Yocto untuk mencipta Yocto Linux dengan penyepaduan klien Mender.

Perisian Terbenam - VisionFive - Mender - Yocto tangkapan skrin komputer
Bahagian 4 - Buat artifak untuk mender

Bahagian 4 dari satu siri artikel, bagaimana untuk menyediakan persekitaran Yocto untuk mencipta Yocto Linux dengan penyepaduan pelanggan Mender.