Ingeboude sagteware - VisionFive - Mender - Yocto - Deel 3 'n skermkiekie van 'n rekenaar

VisionFive - Mender - Yocto

Deel 3 - u-bootkonfigurasie vir Mender

u-boot setup Mender

u-boot-konfigurasie vir Mender

Ons gebruik die Yocto Kirkstone-tak vir ontwikkeling. Ons neem aan dat u reeds 'n werksontwikkelingsomgewing geïnstalleer het en u omgewing opstel soos beskryf in VisionFive - Mender - Yocto - Deel 1 en in VisionFive - Mender - Yocto - Deel 2.

u-boot VisionFive-bord

Die VisionFive RISC-V SBC gebruik twee selflaaier - 'n secondBoot en you-boot. Die meganismes hoe dit werk, word beskryf in VisionFive SBC Quick Start Guide.

Die hantering van hierdie vereistes beteken dat

  • Ons moet U-boot vanaf https://github.com/starfive-tech/u-boot pleister met instellings vir Mender
  • Ons moet U-boot met Yocto bitbake
  • ons moet u-boot handmatig saamstel vir oplaai met tweede fase selflaaier

Pleister u-boot

Eerstens, kloon u-boot afgeleide van starfive-tech om 'n kodebasis te kry om mee te werk.

git clone -b JH7100_upstream https://github.com/starfive-tech/u-boot.git
Mender outomaties gekonfigureerde pleister

meta-mender-core in Yocto probeer u-boot outomaties pleister vir Mender-behoeftes as 'MENDER_UBOOT_AUTO_CONFIGURE = '1'' ingestel is. In die meeste gevalle werk hierdie scenario nie as gevolg van aanpassings van die bordvervaardigers nie.

Maar die outokonfigureerde pleister van Mender is 'n goeie beginpunt om u-boot vir VisionFive SOC met Mender-kliënt aan te pas.

Om die outokonfigureerde pleister te kry, moet u u-boot bitbak met MENDER_UBOOT_AUTO_CONFIGURE = "1" -instelling:

bitbake u-boot-visionfive

'N Pleisterlêer met die naam' mender_auto_configured.patch 'word geskep in die gids' your-build-directory / tmp / work / starfive_visionfive_jh7100-poky-linux / u-boot-visionfive / 1_v2022.03-r0 '.

Wend pleister aan op gekloonde u-boot

Vervolgens pas ons hierdie mender_auto_configured.patch toe op die gekloonde u-boot-bewaarplek van starfive-tech.

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

u-boot moet die Mender-veranderlikes ken om die korrekte inligting te kry vanaf watter partisie die SOC moet begin nadat 'n artefak met die Mender-bediener ontplooi is.

Ons moet dus die lêer 'u-boot-starfive/include/configs/starfive-jh7100.h' aanpas om die Mender-veranderlikes te kry en te bestuur vanaf watter partisie om te begin:

#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

Toets '${mender_kernel_root_name}' is die punt en besluit dan watter uEnv-lêer geneem word om die kern te laai.

Skep hierna 'n volledige pleister uit u-boot om dit in Yocto te gebruik:

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

Sluit hierdie pleister 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' verander MENDER_UBOOT_AUTO_CONFIGURE = "1" na MENDER_UBOOT_AUTO_CONFIGURE = "0".

Nou kan u u-boot bitbake sonder die outokonfigureerfunksie van mender en met die pasgemaakte kolle:

bitbake u-boot-visionfive
Stel u-boot saam vir oplaai met tweede fase selflaaier

Nou kan u u-boot saamstel in die gids 'VisionFive-build/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0/git', wat die kolle bevat wat bygevoeg is met 'bitbake u-boot-visionfive'.

bitbake Yocto Linux

bitbake Yocto Linux met ingesluit Mender kliënt:

bitbake vision-five-image-mender

Flits die Linux-prent na die SD-kaart en begin die VisionFive SOC. As alles goed werk, verskyn die toestel as 'n hangende toestel in die Mender-bediener GUI.

Onder 'TOESTELLE' kan u dit aanvaar en insluit om die implementering van latere sagteware-opdaterings vir hierdie toestel te bestuur.

Kyk hoe u 'n artefak vir Mender in VisionFive - Mender - Yocto - Deel 4 kan skep.</:code8:></:code7:></:code6:></:code5:></:code4:></:code3:></:code2:></:code1:>

Kopiereg lisensie

Kopiereg © 2022 Interelectronix e.K.
Hierdie projekbronkode is gelisensieer onder die GPL-3.0 lisensie.

Ingeboude sagteware - VisionFive - Mender - Yocto 'n skermkiekie van 'n rekenaar
Deel 1 - Basiese opstelling van die Yocto -omgewing

Deel 1 van 'n reeks artikels, hoe om 'n Yocto-omgewing op te stel om 'n Yocto Linux te skep met die integrasie van 'n Mender-kliënt.

Ingeboude sagteware - VisionFive - Mender - Yocto 'n skermkiekie van 'n rekenaar
Deel 2 - Basiese opstelling om Mender in te sluit

Deel 2 van 'n reeks artikels, hoe om 'n Yocto-omgewing op te stel om 'n Yocto Linux te skep met die integrasie van 'n Mender-kliënt.

Ingeboude sagteware - VisionFive - Mender - Yocto 'n skermkiekie van 'n rekenaar
Deel 4 - Skep 'n artefak vir mender

Deel 4 van 'n reeks artikels, hoe om 'n Yocto-omgewing op te stel om 'n Yocto Linux te skep met die integrasie van 'n Mender-kliënt.