Vdelana programska oprema - VisionFive - Mender - Yocto - 3. del: posnetek zaslona računalnika

VisionFive - Mender - Yocto

3. del - konfiguracija zagona za Mender

u-boot nastavitev Mender

konfiguracija zagona za Mender

Za razvoj uporabljamo podružnico Yocto Kirkstone. Predvidevamo, da imate že nameščeno delovno razvojno okolje in nastavite svoje okolje, kot je opisano v VisionFive - Mender - Yocto - Part 1 in v VisionFive - Mender - Yocto - Part 2.

u-boot Vision5ve board

VisionFive RISC-V SBC uporablja dva bootloaderja - drugiBoot in you-boot. Mehanizmi, kako to deluje, so opisani v vodniku za hitri začetek VisionFive SBC.

Ravnanje s temi zahtevami pomeni, da

Krpariranje u-boot

Najprej, klon u-boot derivat iz starfive-tech dobiti kodno bazo za delo.

git clone -b JH7100_upstream https://github.com/starfive-tech/u-boot.git
Mender samodejno konfiguriran obliž

meta-mender-core v Yocto poskuša obliž u-boot samodejno za Mender potrebe, če je nastavljena "MENDER_UBOOT_AUTO_CONFIGURE = "1"". V večini primerov ta scenarij ne deluje zaradi prilagoditev proizvajalcev table.

Ampak samokonfigurirani obliž Mender je dobro izhodišče za prilagoditev u-boot za VisionFive SOC z Mender odjemalcem.

Da bi dobili samokonfigurirani obliž, morate bitbake u-boot z MENDER_UBOOT_AUTO_CONFIGURE = "1" nastavitev:

bitbake u-boot-visionfive

Datoteka obliža z imenom "mender_auto_configured.patch" je ustvarjena v imeniku "your-build-directory/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0".

Uporabi obliž za klonirali u-boot

Nato uporabimo ta mender_auto_configured.patch v klonirali u-boot repozitorij iz starfive-tech.

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

Prilagodi u-boot-starfive

u-boot mora vedeti Mender spremenljivke, da bi dobili pravilne informacije, iz katere particije bi moral soc zagnati po uvedbi artefakt s strežnikom Mender.

Zato moramo prilagoditi datoteko "u-boot-starfive/include/configs/starfive-jh7100.h" da bi dobili Mender spremenljivke in upravljati, iz katere particije za zagon:

#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

Preskus »${mender_kernel_root_name}« je točka in se nato odločite, katera datoteka uEnv se vzame za nalaganje jedra.

Po tem ustvarite celoten obliž iz u-boot za uporabo v Yocto:

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

Vključite ta obliž v 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" spremenite MENDER_UBOOT_AUTO_CONFIGURE = "1" v MENDER_UBOOT_AUTO_CONFIGURE = "0".

Zdaj lahko bitbake u-boot brez funkcije samodejne konfiguracije mender in z obliži po meri:

bitbake u-boot-visionfive
Compile u-boot za nalaganje z drugo stopnjo bootloader

Zdaj lahko sestavite u-boot v imeniku "VisionFive-build/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0/git", ki vsebuje obliže dodane z "bitbake u-boot-visionfive".

bitbake Yocto Linux

bitbake Yocto Linux z vključenim Mender odjemalcem:

bitbake vision-five-image-mender

Flash Linux sliko na SD kartico in zagnati VisionFive SOC. Če vse deluje dobro, se naprava prikaže kot naprava na čakanju v gui strežnika Mender.

V razdelku "NAPRAVE" jo lahko sprejmete in vključite za upravljanje uvajanj kasnejših posodobitev programske opreme za to napravo.

Oglejte si, kako ustvariti artefakt za Mender v Vision5ve - Mender - Yocto - Part 4.</:code8:></:code7:></:code6:></:code5:></:code4:></:code3:></:code2:></:code1:>

Licenca za avtorske pravice

Copyright © 2022 Interelectronix e.K.
Izvorna koda projekta je licencirana pod licenco GPL-3.0.

Vdelana programska oprema - VisionFive - Mender - Yocto: posnetek zaslona računalnika
1. del - Osnovna nastavitev okolja Yocto
  1. del serije člankov, kako nastaviti Yocto okolje za ustvarjanje Yocto Linuxa z integracijo mender odjemalca.
Vdelana programska oprema - VisionFive - Mender - Yocto: posnetek zaslona računalnika
2. del – Osnovna nastavitev za vključitev menderja
  1. del serije člankov, kako nastaviti Yocto okolje za ustvarjanje Yocto Linux z integracijo mender odjemalca.
Vdelana programska oprema - VisionFive - Mender - Yocto: posnetek zaslona računalnika
4. del - Ustvarjanje artefakta za mender
  1. del serije člankov, kako nastaviti Yocto okolje za ustvarjanje Yocto Linuxa z integracijo mender odjemalca.