Embedded Software - VisionFive - Mender - Yocto - Part 3 isang screenshot ng isang computer

VisionFive - Mender - Yocto

Part 3 - u-boot configuration para sa Mender

u-boot setup Mender

u-boot configuration para Mender

Ginagamit namin ang sangay ng Yocto Kirkstone para sa pag unlad. Ipinapalagay namin na mayroon ka nang kapaligiran sa pag-unlad ng trabaho na naka-install at naka-set up ng iyong kapaligiran tulad ng inilarawan sa VisionFive - Mender - Yocto - Part 1 at sa VisionFive - Mender - Yocto - Part 2.

u-boot VisionFive board

Ang VisionFive RISC-V SBC ay gumagamit ng dalawang bootloader - isang segundoBoot at ikaw-boot. Ang mga mekanismo kung paano ito gumagana ay inilarawan sa VisionFive SBC Quick Start Guide.

Ang paghawak sa mga kinakailangang ito ay nangangahulugan na

  • Mayroon kaming upang patch u-boot mula sa https://github.com/starfive-tech/u-boot na may mga setting para sa mender
  • mayroon kaming upang bitbake u-boot sa yocto
  • mayroon kaming upang i-compile u-boot manu-manong para sa upload sa ikalawang yugto bootloader

Pagpatch ng u-boot

Una, clone u-boot derivative mula sa starfive-tech upang makakuha ng isang code base upang gumana sa.

git clone -b JH7100_upstream https://github.com/starfive-tech/u-boot.git
Mender awtomatikong naka configure na patch

meta-mender-core sa Yocto ay nagsisikap na awtomatikong mag-patch ng u-boot para sa mga pangangailangan ni Mender kung ang 'MENDER_UBOOT_AUTO_CONFIGURE = "1"' ay nakatakda. Sa karamihan ng mga kaso, ang sitwasyong ito ay hindi gumagana dahil sa mga pagsasaayos ng mga tagagawa ng board.

Ngunit ang autoconfigured patch ng Mender ay isang magandang panimulang punto upang ayusin ang u boot para sa VisionFive SOC na may Mender client.

Upang makuha ang autoconfigured patch, mayroon kang bitbake u boot na may MENDER_UBOOT_AUTO_CONFIGURE = "1" na setting:

bitbake u-boot-visionfive

Ang isang patch file na may pangalang 'mender_auto_configured.patch' ay nilikha sa direktoryo ng 'your-build-directory/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0'.

Mag apply ng patch sa cloned u-boot

Susunod, inilalapat namin ang mender_auto_configured.patch na ito sa cloned u boot repository mula sa starfive-tech.

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

u boot ay kailangang malaman ang mga variable ng Mender upang makuha ang tamang impormasyon mula sa kung aling partisyon ang SOC ay dapat mag boot pagkatapos ng pag deploy ng isang artifact sa Mender server.

Kaya kailangan naming ipasadya ang file na 'u-boot-starfive/include/configs/starfive-jh7100.h' para makuha ang mga variable ng Mender at pamahalaan mula sa partisyon upang mag-boot:

#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

Ang test na '${mender_kernel_root_name}' ang punto at pagkatapos ay magpasiya kung aling uEnv-file ang kukunin para i-load ang kernel.

Pagkatapos nito, lumikha ng isang kumpletong patch mula sa u boot para sa paggamit nito sa Yocto:

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

Isama ang patch na ito sa Yocto sa 'u-boot-visionfive_%.bbappend':

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

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

Sa 'u-boot-visionfive_%.bbappend' baguhin ang MENDER_UBOOT_AUTO_CONFIGURE = "1" sa MENDER_UBOOT_AUTO_CONFIGURE = "0".

Ngayon ay maaari mong bitbake u-boot nang walang autoconfigure function ng mender at sa mga pasadyang patch:

bitbake u-boot-visionfive
Buuin ang u-boot para i-upload sa second stage bootloader

Ngayon ay maaari mong i-compile ang u-boot sa direktoryo na 'VisionFive-build/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0/git', na naglalaman ng mga patch na idinagdag sa 'bitbake u-boot-visionfive'.

bitbake Yocto Linux

bitbake Yocto Linux na may kasamang Mender client:

bitbake vision-five-image-mender

Flash ang imahe ng Linux sa SD card at boot ang VisionFive SOC. Kung ang lahat ay gumagana nang maayos, ang aparato ay lilitaw bilang isang nakabinbing aparato sa Mender server GUI.

Sa ilalim ng 'DEVICES', maaari mong tanggapin at isama ito upang pamahalaan ang mga deployment ng mga pag update ng software sa ibang pagkakataon para sa device na ito.

Tingnan kung paano lumikha ng isang artifact para sa Mender sa VisionFive - Mender - Yocto - Part 4.</:code8:></:code7:></:code6:></:code5:></:code4:></:code3:></:code2:></:code1:>

Lisensya sa Copyright

Copyright © 2022 Interelectronix e.K.
Ang source code na ito ng Proyekto ay lisensyado sa ilalim ng GPL-3.0 lisensya.

Embedded Software - VisionFive - Mender - Yocto isang screenshot ng isang computer
Part 1 - Basic setup ng Yocto kapaligiran

Part 1 ng isang serye ng mga artikulo, kung paano mag set up ng isang Yocto kapaligiran upang lumikha ng isang Yocto Linux sa pagsasama ng isang Mender client.

Embedded Software - VisionFive - Mender - Yocto isang screenshot ng isang computer
Part 2 - Basic setup upang isama ang Mender

Part 2 ng isang serye ng mga artikulo, kung paano mag set up ng isang Yocto kapaligiran upang lumikha ng isang Yocto Linux sa pagsasama ng isang Mender client.

Embedded Software - VisionFive - Mender - Yocto isang screenshot ng isang computer
Part 4 - Lumikha ng isang artifact para sa mender

Part 4 ng isang serye ng mga artikulo, kung paano mag set up ng isang Yocto kapaligiran upang lumikha ng isang Yocto Linux sa pagsasama ng isang Mender client.