Vestavěný software - VisionFive - Mender - Yocto - Část 3: snímek obrazovky počítače

VisionFive - Mender - Yocto

Část 3 - Konfigurace u-bootu pro Mender

u-boot nastavení Mender

Konfigurace u-bootu pro Mender

Pro vývoj používáme pobočku Yocto Kirkstone. Předpokládáme, že již máte nainstalované funkční vývojové prostředí a nastavte prostředí, jak je popsáno v VisionFive - Mender - Yocto - část 1 a v VisionFive - Mender - Yocto - část 2.

u-boot deska VisionFive

VisionFive RISC-V SBC používá dva bootloadery - secondBoot a you-boot. Mechanismy, jak to funguje, jsou popsány v VisionFive SBC Quick Start Guide.

Splnění těchto požadavků znamená, že

Oprava u-bootu

Nejprve naklonujte derivát u-bootu od starfive-tech, abyste získali kódovou základnu, se kterou můžete pracovat.

git clone -b JH7100_upstream https://github.com/starfive-tech/u-boot.git
Mender auto-konfigurovaná oprava

meta-mender-core v Yocto se pokouší automaticky opravit u-boot pro potřeby Mender, pokud je nastaven 'MENDER_UBOOT_AUTO_CONFIGURE = "1"'. Ve většině případů tento scénář nefunguje kvůli úpravám výrobců desek.

Ale automaticky nakonfigurovaný patch Mender je dobrým výchozím bodem pro úpravu u-bootu pro VisionFive SOC s Mender klientem.

Pro získání automaticky konfigurovaného patche musíte bitbake u-boot s nastavením MENDER_UBOOT_AUTO_CONFIGURE = "1":

bitbake u-boot-visionfive

V adresáři 'your-build-directory/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0' je vytvořen opravný soubor 'mender_auto_configured.patch'.

Aplikujte patch na klonovaný u-boot

Dále aplikujeme tento mender_auto_configured.patch na klonovaný u-boot repozitář od starfive-tech.

cd u-boot-starfive
git apply path-to-patch/mender_auto_configured.patch
Přizpůsobte u-boot-starfive

u-boot potřebuje znát proměnné Mender, aby získal správné informace, ze které oblasti má SOC zavést po nasazení artefaktu na Mender server.

Takže musíme přizpůsobit soubor 'u-boot-starfive/include/configs/starfive-jh7100.h', abychom získali proměnné Mender a spravovali, ze které oblasti se má zavést:

#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 '${mender_kernel_root_name}' je bod a pak se rozhodne, který uEnv-soubor se vezme pro zavedení jádra.

Poté vytvořte kompletní patch z u-bootu pro použití v Yocto:

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

Zahrňte tento patch do Yocto v 'u-boot-visionfive_%.bbappend':

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

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

V 'u-boot-visionfive_%.bbappend' změňte MENDER_UBOOT_AUTO_CONFIGURE = "1" na MENDER_UBOOT_AUTO_CONFIGURE = "0".

Nyní můžete bitbake u-boot bez funkce automatické konfigurace mender as vlastními patchi:

bitbake u-boot-visionfive
Zkompilujte u-boot pro nahrání s zavaděčem druhé fáze

Nyní můžete zkompilovat u-boot v adresáři 'VisionFive-build/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0/git', který obsahuje patche přidané pomocí 'bitbake u-boot-visionfive'.

bitbake Yocto Linux

bitbake Yocto Linux s přiloženým klientem Mender:

bitbake vision-five-image-mender

Flash obraz Linuxu na SD kartu a spusťte VisionFive SOC. Pokud vše funguje dobře, zařízení se zobrazí jako čekající zařízení v grafickém uživatelském rozhraní serveru Mender.

V části "ZAŘÍZENÍ" ji můžete přijmout a zahrnout do správy nasazení pozdějších aktualizací softwaru pro toto zařízení.

Podívejte se, jak vytvořit artefakt pro Mender v VisionFive - Mender - Yocto - Part 4.</:code8:></:code7:></:code6:></:code5:></:code4:></:code3:></:code2:></:code1:>

Licence na autorská práva

Autorská práva © 2022 Interelectronix e.K.
Tento zdrojový kód projektu je licencován pod licencí GPL-3.0.

Embedded Software - VisionFive - Mender - Yocto snímek obrazovky počítače
Část 1 - Základní nastavení prostředí Yocto

Část 1 ze série článků, jak nastavit prostředí Yocto pro vytvoření Yocto Linuxu s integrací klienta Mender.

Embedded Software - VisionFive - Mender - Yocto snímek obrazovky počítače
Část 2 - Základní nastavení pro zahrnutí Mendera

Část 2 ze série článků, jak nastavit prostředí Yocto pro vytvoření Yocto Linuxu s integrací klienta Mender.

Embedded Software - VisionFive - Mender - Yocto snímek obrazovky počítače
Část 4 - Vytvoření artefaktu pro mender

Část 4 ze série článků, jak nastavit prostředí Yocto pro vytvoření Yocto Linuxu s integrací klienta Mender.