Zabudovaný softvér - VisionFive - Mender - Yocto - časť 3 snímka obrazovky počítača

VisionFive - Mender - Yocto

Časť 3 - konfigurácia u-boot pre Mender

u-boot setup Mender

konfigurácia u-boot pre Mender

Na rozvoj využívame pobočku Yocto Kirkstone. Predpokladáme, že už máte nainštalované pracovné vývojové prostredie a nastavíte svoje prostredie tak, ako je popísané v VisionFive - Mender - Yocto - časť 1 a v VisionFive - Mender - Yocto - časť 2.

u-boot doska VisionFive

VisionFive RISC-V SBC používa dva bootloadery - secondBoot a you-boot. Mechanizmy, ako to funguje, sú popísané v VisionFive SBC Quick Start Guide.

Riešenie týchto požiadaviek znamená, že:

  • Musíme opraviť U-boot z https://github.com/starfive-tech/u-boot s nastaveniami pre Mender
  • Musíme Bitbake U-boot s Yocto
  • Musíme skompilovať U-boot manuálne pre nahrávanie pomocou bootloadera druhej fázy

Oprava u-boot

Po prvé, klonujte derivát u-boot z technológie starfive, aby ste získali základňu kódu, s ktorou môžete pracovať.

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

meta-mender-core v Yocto sa pokúša automaticky opraviť u-boot pre potreby Mendera, ak je nastavené 'MENDER_UBOOT_AUTO_CONFIGURE = "1". Vo väčšine prípadov tento scenár nefunguje z dôvodu úprav výrobcov dosiek.

Ale automaticky nakonfigurovaná oprava Mender je dobrým východiskovým bodom pre úpravu u-boot pre VisionFive SOC s klientom Mender.

Ak chcete získať automaticky nakonfigurovanú opravu, musíte bitbake u-boot s nastavením MENDER_UBOOT_AUTO_CONFIGURE = "1":

bitbake u-boot-visionfive

Súbor opravy s názvom 'mender_auto_configured.patch' je vytvorený v adresári 'your-build-directory/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0'.

Naneste opravu na klonovaný u-boot

Ďalej aplikujeme túto mender_auto_configured.patch na klonované úložisko u-boot od starfive-tech.

cd u-boot-starfive
git apply path-to-patch/mender_auto_configured.patch
Prispôsobte si u-boot-starfive

u-boot potrebuje poznať premenné Mender, aby získal správne informácie, z ktorého oddielu by sa mal SOC zaviesť po nasadení artefaktu so serverom Mender.

Takže musíme prispôsobiť súbor 'u-boot-starffive / include/configs/starfive-jh7100.h', aby sme získali premenné Mender a spravovali, z ktorého oddielu sa má zaviesť:

#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 potom sa rozhodnite, ktorý súbor uEnv sa použije na načítanie jadra.

Potom vytvorte kompletnú opravu z u-boot na použitie v Yocto:

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

Zahrňte túto opravu 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' zmeňte MENDER_UBOOT_AUTO_CONFIGURE = "1" na MENDER_UBOOT_AUTO_CONFIGURE = "0".

Teraz môžete bitbake u-boot bez funkcie automatickej konfigurácie mendera as vlastnými opravami:

bitbake u-boot-visionfive
Kompilujte u-boot na odovzdanie pomocou zavádzača druhej fázy

Teraz môžete skompilovať u-boot v adresári 'VisionFive-build/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0/git', ktorý obsahuje opravy pridané s 'bitbake u-boot-visionfive'.

bitbake Yocto Linux

bitbake Yocto Linux so zahrnutým klientom Mender:

bitbake vision-five-image-mender

Flash obraz Linuxu na SD kartu a bootovanie VisionFive SOC. Ak všetko funguje správne, zariadenie sa zobrazí ako čakajúce zariadenie v grafickom používateľskom rozhraní servera Mender.

V časti ZARIADENIA ju môžete prijať a zahrnúť do nej na správu nasadení novších aktualizácií softvéru pre toto zariadenie.

Pozrite sa, ako vytvoriť artefakt pre Mendera v VisionFive - Mender - Yocto - časť 4.</:code8:></:code7:></:code6:></:code5:></:code4:></:code3:></:code2:></:code1:>

Licencia na autorské práva

Copyright © 2022 Interelectronix e.K.
Tento zdrojový kód Projectu je licencovaný pod licenciou GPL-3.0.

Zabudovaný softvér - VisionFive - Mender - Yocto Snímka obrazovky počítača
Časť 1 - Základné nastavenie prostredia Yocto

Časť 1 série článkov, ako nastaviť prostredie Yocto na vytvorenie Yocto Linux s integráciou klienta Mender.

Zabudovaný softvér - VisionFive - Mender - Yocto Snímka obrazovky počítača
Časť 2 - Základné nastavenie na zahrnutie Mender

Časť 2 série článkov, ako nastaviť prostredie Yocto na vytvorenie Yocto Linux s integráciou klienta Mender.

Zabudovaný softvér - VisionFive - Mender - Yocto Snímka obrazovky počítača
Časť 4 - Vytvorte artefakt pre mendera

Časť 4 série článkov, ako nastaviť prostredie Yocto na vytvorenie Yocto Linuxu s integráciou klienta Mender.