Software embedded - VisionFive - Mender - Yocto - Parte 3 uno screenshot di un computer

VisionFive - Mender - Yocto

Parte 3 - Configurazione di u-boot per Mender

u-boot configurazione Mender

configurazione di u-boot per Mender

Stiamo usando il ramo Yocto Kirkstone per lo sviluppo. Supponiamo che tu abbia già un ambiente di sviluppo operativo installato e configuri il tuo ambiente come descritto in VisionFive - Mender - Yocto - Parte 1 e in VisionFive - Mender - Yocto - Parte 2.

u-boot VisionFive board

Il VisionFive RISC-V SBC utilizza due bootloader: un secondoBoot e un u-boot. I meccanismi di funzionamento sono descritti nella Guida rapida di VisionFive SBC.La gestione di questi requisiti significa che

  • dobbiamo patchare u-boot da https://github.com/starfive-tech/u-boot con le impostazioni per mender
  • dobbiamo eseguire il bitbake di u-boot con yocto
  • dobbiamo compilare manualmente u-boot per il caricamento con bootloader di secondo stadio

Applicazione di patch a u-boot

Innanzitutto, clona la derivata di u-boot da starfive-tech per ottenere una base di codice con cui lavorare.

git clone -b JH7100_upstream https://github.com/starfive-tech/u-boot.git
Patch configurata automaticamente da Mender

meta-mender-core in Yocto cerca di patchare automaticamente u-boot per le esigenze Mender se 'MENDER_UBOOT_auto_CONFIGURE = "1"' è impostato. Nella maggior parte dei casi, questo scenario non funziona a causa delle regolazioni dei produttori di schede.

Ma la patch autoconfigurata di Mender è un buon punto di partenza per regolare l'u-boot per VisionFive SOC con il client Mender.

Per ottenere la patch autoconfigurata, è necessario eseguire il bitbake u-boot con l'impostazione MENDER_UBOOT_auto_CONFIGURE = "1":

bitbake u-boot-visionfive

Un file di patch denominato 'mender_auto_configured.patch' viene creato nella directory 'your-build-directory/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0'.

Applica patch all'u-boot clonato

Successivamente, applichiamo questo mender_auto_configured.patch al repository di u-boot clonato da starfive-tech.

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

u-boot deve conoscere le variabili Mender per ottenere le informazioni corrette da quale partizione il SOC deve avviarsi dopo aver distribuito un artefatto con il server Mender.

Quindi dobbiamo personalizzare il file 'u-boot-starfive/include/configs/starfive-jh7100.h' per ottenere le variabili Mender e gestire da quale partizione avviare:

#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

Il test '${mender_kernel_root_name}' è il punto e poi decidi quale file uEnv viene preso per caricare il kernel.

Dopo di che, crea una patch completa da u-boot per usarla in Yocto:

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

Includi questa patch in Yocto in 'u-boot-visionfive_%.bbappend':

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

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

In 'u-boot-visionfive_%.bbappend' cambiare MENDER_UBOOT_auto_CONFIGURE = "1" a MENDER_UBOOT_auto_CONFIGURE = "0".

Ora puoi eseguire il bitbake di u-boot senza la funzione di configurazione automatica di mender e con le patch personalizzate:

bitbake u-boot-visionfive
Compila u-boot per il caricamento con il bootloader del secondo stadio

Ora puoi compilare u-boot nella directory 'VisionFive-build/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0/git', che contiene le patch aggiunte con 'bitbake u-boot-visionfive'.

bitbake Yocto Linux

bitbake Yocto Linux con client Mender incluso:

bitbake vision-five-image-mender

Trasmetti l'immagine Linux sulla scheda SD e avvia VISIONFIVE SOC. Se tutto funziona bene, il dispositivo appare come un dispositivo in sospeso nella GUI del server Mender.

In "DEVICES", è possibile accettarlo e includerlo per gestire le distribuzioni di aggiornamenti software successivi per questo dispositivo.

Scopri come creare un artefatto per Mender in VisionFive - Mender - Yocto - Parte 4.

Licenza sul diritto d'autore

Copyright © 2022 Interelectronix e.K.
Questo codice sorgente del Progetto è concesso in licenza sotto la licenza **GPL-3.0 * *.

Software Embedded - VisionFive - Mender - Yocto uno screenshot di un computer
Parte 1 - Configurazione di base dell'ambiente Yocto

Parte 1 di una serie di articoli, come impostare un ambiente Yocto per creare un Yocto Linux con l'integrazione di un client Mender.

Software Embedded - VisionFive - Mender - Yocto uno screenshot di un computer
Parte 2 - Configurazione di base per includere Mender

Parte 2 di una serie di articoli, come impostare un ambiente Yocto per creare un Yocto Linux con l'integrazione di un client Mender.

Software Embedded - VisionFive - Mender - Yocto uno screenshot di un computer
Parte 4 - Crea un artefatto per mender

Parte 4 di una serie di articoli, come impostare un ambiente Yocto per creare un Yocto Linux con l'integrazione di un client Mender.