Embedded Software - VisionFive - Mender - Yocto - Del 3 et skjermbilde av en datamaskin

VisionFive – Mender – Yocto

Del 3 – u-boot-konfigurasjon for Mender

u-boot-oppsett Mender

u-boot-konfigurasjon for Mender

Vi bruker Yocto Kirkstone-grenen til utvikling. Vi antar at du allerede har et fungerende utviklingsmiljø installert, og har konfigurert miljøet ditt som beskrevet i VisionFive – Mender – Yocto – Del 1 og i VisionFive – Mender – Yocto – Del 2.

u-boot VisionFive-kort

VisionFive RISC-V SBC bruker to bootloadere – en secondBoot og en u-boot. Mekanismene for hvordan dette fungerer er beskrevet i hurtigveiledningen til VisionFive SBC.Håndtering av disse kravene betyr at

– vi må patche u-boot fra https://github.com/starfive-tech/u-boot med innstillinger for mender – må vi bitbake u-boot med yocto. – vi må kompilere u-boot manuelt for opplasting med bootloader i trinn to

Patche u-boot

Først kloner du u-boot-derivatet fra starfive-tech for å få en kodebase å jobbe med.

git clone -b JH7100_upstream https://github.com/starfive-tech/u-boot.git
Mender autokonfigurert patch

meta-mender-core i Yocto prøver å patche u-boot automatisk for Mender-behov hvis «MENDER_UBOOT_AUTO_CONFIGURE = "1"» er angitt. I de fleste tilfeller fungerer ikke dette scenariet på grunn av brettprodusentenes justeringer.

Likevel er den autokonfigurerte oppdateringen av Mender et godt utgangspunkt for å justere u-boot for VisionFive SOC med Mender-tjener.

For å få tak i den autokonfigurerte patchen må du bitbake u-boot med innstillingen «MENDER_UBOOT_AUTO_CONFIGURE = "1"»:

bitbake u-boot-visionfive

En oppdateringsfil med navnet mender_auto_configured.patch opprettes i katalogen «your-build-directory/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0».

Bruk patchen på klonet u-boot

Deretter bruker vi mender_auto_configured.patch på det klonede u-boot-repositoriet fra starfive-tech.

cd u-boot-starfive
git apply path-to-patch/mender_auto_configured.patch
Egendefiner u-boot-starfive

u-boot må kjenne Mender-variablene for å motta riktig informasjon om hvilken partisjon SOC skal boote fra etter å ha distribuert en artefakt med Mender-serveren.

Dermed må vi tilpasse filen «u-boot-starfive/include/configs/starfive-jh7100.h» for å få tak i Mender-variablene og administrere fra hvilken partisjon du skal boote:

#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

Test at '${mender_kernel_root_name}' er punktet og bestem deretter hvilken uEnv-fil som skal brukes til å laste kjernen.

Etter dette oppretter du en komplett patch fra u-boot til å bruke i Yocto:

git diff --patch > ~/Documents/Yocto/meta-interelectronix-visionfive/recipes-bsp/u-boot/files/0004-u-boot.patch

Inkluder denne patchen i Yocto i «u-boot-visionfive_%.bbappend»:

FILESEXTRAPATHS:prepend := "${THISDIR}/files:"

SRC_URI:append = " \
    file://0004-u-boot.patch \
"
bitbake u-boot

I «u-boot-visionfive_%.bbappend» endrer du «MENDER_UBOOT_AUTO_CONFIGURE = "1"» til «MENDER_UBOOT_AUTO_CONFIGURE = "0"».

Nå kan du bitbake u-boot uten autoconfigure-funksjonen til mender og med de egendefinerte patchene:

bitbake u-boot-visionfive
Kompiler u-boot for opplasting med bootloader i trinn to

Nå kan du kompilere u-boot i katalogen «VisionFive-build/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0/git», som inneholder patchene som er lagt til med «bitbake u-boot-visionfive».

– Hvordan man kompilerer u-boot for VisionFive SOC er beskrevet under Kompilering av u-boot og kjerne– Hvordan man laster opp u-boot for VisionFive SOC er beskrevet under Vedlegg B: Oppdatering av fastvare og u-boot

bitbake Yocto Linux

bitbake Yocto Linux med inkludert Mender-tjener:

bitbake vision-five-image-mender

Flash Linux-bildet til SD-kortet og boot VisionFive SOC. Hvis alt fungerer bra, vises enheten som en ventende enhet i Mender-serverens GUI.

Under «ENHETER» kan du akseptere og inkludere dette for å administrere distribusjoner av senere programvareoppdateringer for denne enheten.

Se hvordan du lager en artefakt for Mender I VisionFive – Mender – Yocto – Del 4.

Opphavsrettslisens

Copyright © 2022 Interelectronix e.K.
Denne Project-kildekoden er lisensiert under GPL-3.0 -lisensen.

Embedded Software - VisionFive - Mender - Yocto et skjermbilde av en datamaskin
Del 1 – Grunnleggende oppsett av Yocto-miljøet

Del 1 av en serie artikler om hvordan man konfigurerer et Yocto-miljø for å opprette Yocto Linux med integrasjon av en Mender-tjener.

Embedded Software - VisionFive - Mender - Yocto et skjermbilde av en datamaskin
Del 2 – Grunnleggende oppsett for å inkludere Mender

Del 2 av en serie artikler om hvordan man konfigurerer et Yocto-miljø for å opprette Yocto Linux med integrasjon av en Mender-tjener.

Embedded Software - VisionFive - Mender - Yocto et skjermbilde av en datamaskin
Del 4 – Opprett en artefakt for mender

Del 4 av en serie artikler om hvordan man konfigurerer et Yocto-miljø for å opprette Yocto Linux med integrasjon av en Mender-tjener.