Oprogramowanie wbudowane - VisionFive - Mender - Yocto - Część 3 zrzut ekranu komputera

VisionFive – Mender – Yocto

Część 3 – konfiguracja u-boot dla Mender

konfiguracja u-boot Mender

konfiguracja u-boot dla Mender

Do programowania wykorzystujemy Yocto w wersji Kirkstone. Zakładamy, że masz już zainstalowane działające środowisko programistyczne i skonfigurowałeś je zgodnie z opisem w VisionFive – Mender – Yocto – Część 1 oraz w VisionFive – Mender – Yocto – Część 2.

u-boot płyty VisionFive

VisionFive RISC-V SBC korzysta z dwóch bootloaderów - secondBot i u-boot. Mechanizmy działania są opisane w skróconej instrukcji obsługi SBC VisionFive.Postępowanie z tymi wymaganiami oznacza, że

– należy zainstalować poprawki u-boot z https://github.com/starfive-tech/u-boot z ustawieniami dla mender – należy utworzyć za pomocą bitbake obraz u-boot z yocto – należy skompilować u-boot ręcznie do przesyłania, używając bootloadera drugiego stopnia

Instalacja łatek u-boot

Po pierwsze, sklonuj pochodną U-boota z technologii Starfive, aby uzyskać bazę kodów do pracy.

git clone -b JH7100_upstream https://github.com/starfive-tech/u-boot.git
Automatycznie konfigurowana łatka Mender

meta-mender-core w Yocto próbuje automatycznie zainstalować poprawkę u-boot dla potrzeb Mendera, o ile ustawiono „MENDER_UBOOT_AUTO_CONFIGURE = "1"”. W większości przypadków scenariusz ten nie działa ze względu na modyfikacje wdrożone przez producentów płyt.

Jednak automatycznie skonfigurowana łatka Mender jest dobrym punktem wyjścia do modyfikacji u-boot dla VisionFive SOC z klientem Mender.

Aby uzyskać automatycznie skonfigurowaną poprawkę, musisz, używając bitbake, stworzyć obraz u-boot z ustawieniem MENDER_UBOOT_AUTO_CONFIGURE = "1":

bitbake u-boot-visionfive

Plik poprawki o nazwie „mender_auto_configured.patch” jest tworzony w katalogu „your-build-directory/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0”.

Instalacja łatki na sklonowanym u-boot

Następnie stosujemy tę poprawkę mender_auto_configured.patch do sklonowanego repozytorium u-boot ze starfive-tech.

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

u-boot musi znać zmienne Mender, aby uzyskać prawidłowe informacje, z której partycji powinien uruchomić się SOC po wdrożeniu artefaktu na serwerze Mender.

Musimy więc dostosować plik „u-boot-starfive/include/configs/starfive-jh7100.h”, aby uzyskać zmienne Mender i zarządzać z której partycji do rozruchu:

#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

Punktem jest test „${mender_kernel_root_name}”, a następnie zdecyduj, który plik uEnv zostanie pobrany do załadowania jądra systemu operacyjnego.

Następnie utwórz kompletną łatkę z u-boot, aby używać go w Yocto:

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

Dołącz tę łatkę do Yocto w „u-boot-visionfive_%.bbappend”:

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

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

W „u-boot-visionfive_%.bbappend” zmień MENDER_UBOOT_AUTO_CONFIGURE = "1" na MENDER_UBOOT_AUTO_CONFIGURE = "0".

Teraz możesz utworzyć z pomocą bitbake obraz u-boot bez funkcji autokonfiguracji programu Mender i z niestandardowymi poprawkami:

bitbake u-boot-visionfive
Skompiluj u-boot do przesyłania za pomocą bootloadera drugiego stopnia

Teraz możesz skompilować u-boot w katalogu „VisionFive-build/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0/git”, który zawiera poprawki dodane za pomocą „bitbake u-boot-visionfive”.

– Jak skompilować u-boot dla VisionFive SOC opisano w rozdziale „Kompilacja u-boot i Kernel”– Jak przesłać u-boot dla VisionFive SOC jest opisany w <Załączniku B: „Aktualizacja oprogramowania sprzętowego i u-boot”<

Bitbake Yocto Linux

Z pomocą BitBake twórz obraz Yocto Linux z dołączonym klientem Mender:

bitbake vision-five-image-mender

Utwórz obraz Linuksa na karcie SD i uruchom VisionFive SOC. Jeśli wszystko działa poprawnie, urządzenie pojawi się jako urządzenie oczekujące w interfejsie GUI serwera Mender.

W sekcji „DEVICES” (URZĄDZENIA) możesz ją zaakceptować i dołączyć, aby zarządzać wdrożeniami późniejszych aktualizacji oprogramowania dla tego urządzenia.

Zobacz jak stworzyć artefakt dla Mender w VisionFive – Mender – Yocto – Część 4.

Licencja na prawa autorskie

Copyright © 2022 Interelectronix e.K.
Ten kod źródłowy projektu jest udostępniany na licencji **GPL-3.0 * *.

Oprogramowanie wbudowane - VisionFive - Mender - Yocto zrzut ekranu komputera
Część 1 – Podstawowa konfiguracja środowiska Yocto

Część 1 serii artykułów, jak skonfigurować środowisko Yocto, aby utworzyć Yocto Linux z integracją klienta Mender.

Oprogramowanie wbudowane - VisionFive - Mender - Yocto zrzut ekranu komputera
Część 2 – Podstawowa konfiguracja obejmująca program Mender

Część 2 serii artykułów, jak skonfigurować środowisko Yocto, aby utworzyć Yocto Linux z integracją klienta Mender.

Oprogramowanie wbudowane - VisionFive - Mender - Yocto zrzut ekranu komputera
Część 4 - Stwórz artefakt dla mendera

Część 4 serii artykułów, jak skonfigurować środowisko Yocto, aby utworzyć Yocto Linux z integracją klienta Mender.