Logiciel embarqué - VisionFive - Mender - Yocto - Partie 3 Une capture d’écran d’un ordinateur

VisionFive - Mender - Yocto

Partie 3 : configuration DU u-boot pour Mender

configuration u-boot Mender

configuration DU u-boot pour Mender

Nous utilisons la branche Yocto Kirkstone pour le développement. Nous supposons que vous avez déjà un environnement de développement de travail installé et configuré votre environnement comme décrit dans VisionFive - Mender - Yocto - Partie 1 et dans VisionFive - Mender - Yocto - Partie 2.

u-boot Carte VisionFive

La VisionFive RISC-V SBC utilise deux bootloaders - un second boot et u-boot. Les mécanismes de fonctionnement sont décrits dans le Guide de démarrage rapide VisionFive SBC.La prise en charge de ces exigences signifie que

  • nous devons corriger u-boot à partir de https://github.com/starfive-tech/u-boot avec les paramètres pour mender
  • on doit faire du bitbake u-boot avec du yocto
  • nous devons compiler u-boot manuellement pour le téléchargement avec le chargeur de démarrage de deuxième étape

Corriger u-boot

Tout d'abord, clonez un dérivé de u-boot à partir de starfive-tech pour obtenir une base de code avec laquelle travailler.

git clone -b JH7100_upstream https://github.com/starfive-tech/u-boot.git
Correctif auto-configuré Mender

meta-mender-core dans Yocto tente de patch u-boot automatiquement pour les besoins de Mender si 'MENDER_UBOOT_AUTO_CONFIGURE = "1"' est défini. Dans la plupart des cas, ce scénario ne fonctionne pas en raison des ajustements des fabricants de cartes.

Mais le patch autoconfiguré de Mender est un bon point de départ pour ajuster u-boot pour VisionFive SOC avec le client Mender.

Pour obtenir le correctif auto-configuré, vous devez bitbake u-boot avec le paramètre MENDER_UBOOT_AUTO_CONFIGURE = "1" :

bitbake u-boot-visionfive

Un fichier de patch nommé 'mender_auto_configured.patch' est créé dans le répertoire 'your-build-directory/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0'.

Appliquer le patch au u-boot cloné

Ensuite, nous appliquons ce mender_auto_configured.patch au dépôt u-boot cloné de starfive-tech.

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

u-boot doit connaître les variables Mender pour obtenir les informations correctes à partir de quelle partition le SOC doit démarrer après avoir déployé un artefact avec le serveur Mender.

Nous devons donc personnaliser le fichier 'u-boot-starfive/include/configs/starfive-jh7100.h' pour obtenir les variables Mender et gérer à partir de quelle partition démarrer :

#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

Le test '${mender_kernel_root_name}' est le point, puis décidez quel fichier uEnv est pris pour charger le noyau.

Après cela, créez un patch complet à partir de u-boot pour l'utiliser dans Yocto :

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

Inclure ce patch dans Yocto dans 'u-boot-visionfive_%.bbappend' :

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

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

Dans 'u-boot-visionfive_%.bbappend', changez MENDER_UBOOT_AUTO_CONFIGURE = "1" en MENDER_UBOOT_AUTO_CONFIGURE = "0".

Maintenant, vous pouvez bitbake u-boot sans la fonction d'autoconfiguration de mender et avec les correctifs personnalisés :

bitbake u-boot-visionfive

Compile u-boot pour le téléchargement avec le chargeur de démarrage de deuxième étape

Vous pouvez maintenant compiler u-boot dans le répertoire 'VisionFive-build/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0/git', qui contient les patchs ajoutés avec 'bitbake u-boot-visionfive'.

bitbake Yocto Linux

bitbake Yocto Linux avec client Mender inclus°:

bitbake vision-five-image-mender

Éclatez l'image Linux sur la carte SD et démarrez le VisionFive SOC. Si tout fonctionne bien, le périphérique apparaît comme un périphérique en attente dans l'interface graphique du serveur Mender.

Sous « APPAREILS », vous pouvez l'accepter et l'inclure pour gérer les déploiements de mises à jour logicielles ultérieures pour cet appareil.

Découvrez comment créer un artefact pour Mender dans VisionFive - Mender - Yocto - Partie 4.

Licence de copyright

Copyright © 2022 Interelectronix e.K.
Le code source de ce projet est sous licence GPL-3.0.

Logiciel embarqué - VisionFive - Mender - Yocto une capture d’écran d’un ordinateur
Partie 1 : Configuration de base de l'environnement Yocto

Partie 1 d'une série d'articles, comment configurer un environnement Yocto pour créer un Yocto Linux avec l'intégration d'un client Mender.

Logiciel embarqué - VisionFive - Mender - Yocto une capture d’écran d’un ordinateur
Partie 2 : Configuration de base pour inclure Mender

Partie 2 d'une série d'articles, comment configurer un environnement Yocto pour créer un Yocto Linux avec l'intégration d'un client Mender.

Logiciel embarqué - VisionFive - Mender - Yocto une capture d’écran d’un ordinateur
Partie 4 : Créer un artefact pour Mender

Partie 4 d'une série d'articles, comment configurer un environnement Yocto pour créer un Yocto Linux avec l'intégration d'un client Mender.