Software încorporat - VisionFive - Mender - Yocto - Partea 3 o captură de ecran a unui computer

VisionFive - Mender - Yocto

Partea 3 - configurație u-boot pentru Mender

Configurare u-boot Mender

Configurație u-boot pentru Mender

Folosim ramura Yocto Kirkstone pentru dezvoltare. Presupunem că aveți deja un mediu de dezvoltare funcțional instalat și configurat mediul așa cum este descris în VisionFive - Mender - Yocto - Partea 1 și în VisionFive - Mender - Yocto - Partea 2.

u-boot VisionFive placă

VisionFive RISC-V SBC utilizează două bootloadere - un al doileaBoot și you-boot. Mecanismele cum funcționează acest lucru sunt descrise în VisionFive SBC Quick Start Guide.

Tratarea acestor cerințe înseamnă că:

  • Trebuie să patch-uri U-boot de la https://github.com/starfive-tech/u-boot cu setări pentru Mender
  • Trebuie să bitbake U-boot cu Yocto
  • Trebuie să compilăm manual U-boot pentru încărcare cu bootloader-ul din a doua etapă

Patching u-boot

În primul rând, clonați derivatul u-boot de la starfive-tech pentru a obține o bază de cod cu care să lucrați.

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

meta-mender-core din Yocto încearcă să corecteze automat u-boot pentru nevoile Mender dacă este setat "MENDER_UBOOT_AUTO_CONFIGURE = "1". În majoritatea cazurilor, acest scenariu nu funcționează din cauza ajustărilor producătorilor de plăci.

Dar patch-ul autoconfigurat al Mender este un bun punct de plecare pentru a regla u-boot pentru VisionFive SOC cu clientul Minder.

Pentru a obține patch-ul autoconfigurat, trebuie să bitbake u-boot cu setarea MENDER_UBOOT_AUTO_CONFIGURE = "1":

bitbake u-boot-visionfive

Un fișier patch numit "mender_auto_configured.patch" este creat în directorul "your-build-directory/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0".

Aplicați patch-uri la u-boot clonat

Apoi, aplicăm acest mender_auto_configured.patch la depozitul u-boot clonat de la starfive-tech.

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

u-boot trebuie să cunoască variabilele Mender pentru a obține informațiile corecte de pe ce partiție ar trebui să pornească SOC după implementarea unui artefact cu serverul Minder.

Deci, trebuie să personalizăm fișierul 'u-boot-starfive / include / configs / starfive-jh7100.h'pentru a obține variabilele Mender și pentru a gestiona din ce partiție să porniți:

#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

Testați '${mender_kernel_root_name}' este punctul și apoi decideți ce fișier uEnv este luat pentru a încărca nucleul.

După aceasta, creați un patch complet de la u-boot pentru utilizarea acestuia în Yocto:

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

Includeți acest patch în Yocto în 'u-boot-visionfive_%.bbappend':

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

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

În 'u-boot-visionfive_%.bbappend' schimbați MENDER_UBOOT_AUTO_CONFIGURE = "1" la MENDER_UBOOT_AUTO_CONFIGURE = "0".

Acum puteți bitbake u-boot fără funcția de autoconfigurare a mender și cu patch-urile personalizate:

bitbake u-boot-visionfive
Compilați u-boot pentru încărcare cu bootloader-ul din a doua etapă

Acum puteți compila u-boot în directorul "VisionFive-build/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0/git", care conține patch-urile adăugate cu "bitbake u-boot-visionfive".

bitbake Yocto Linux

bitbake Yocto Linux cu clientul Mender inclus:

bitbake vision-five-image-mender

Flash imaginea Linux pe cardul SD și porniți VisionFive SOC. Dacă totul funcționează bine, dispozitivul apare ca dispozitiv în așteptare în interfața grafică a serverului Mender.

Sub "DISPOZITIVE", îl puteți accepta și include pentru a gestiona implementările actualizărilor software ulterioare pentru acest dispozitiv.

Vedeți cum să creați un artefact pentru Mender în VisionFive - Mender - Yocto - Partea 4.</:code8:></:code7:></:code6:></:code5:></:code4:></:code3:></:code2:></:code1:>

Licență pentru drepturi de autor

Copyright © 2022 Interelectronix e.K.
Acest cod sursă al Proiectului este licențiat sub licența GPL-3.0.

Software încorporat - VisionFive - Mender - Yocto o captură de ecran a unui computer
Partea 1 - Configurarea de bază a mediului Yocto

Partea 1 dintr-o serie de articole, cum să configurați un mediu Yocto pentru a crea un Yocto Linux cu integrarea unui client Minder.

Software încorporat - VisionFive - Mender - Yocto o captură de ecran a unui computer
Partea 2 - Configurare de bază pentru a include Mender

Partea 2 dintr-o serie de articole, cum să configurați un mediu Yocto pentru a crea un Yocto Linux cu integrarea unui client Minder.

Software încorporat - VisionFive - Mender - Yocto o captură de ecran a unui computer
Partea 4 - Creați un artefact pentru mender

Partea 4 dintr-o serie de articole, cum să configurați un mediu Yocto pentru a crea un Yocto Linux cu integrarea unui client Minder.