u-boot nastavení Mender
Pro vývoj používáme pobočku Yocto Kirkstone. Předpokládáme, že již máte nainstalované funkční vývojové prostředí a nastavte prostředí, jak je popsáno v VisionFive - Mender - Yocto - část 1 a v VisionFive - Mender - Yocto - část 2.
u-boot deska VisionFive
VisionFive RISC-V SBC používá dva bootloadery - secondBoot a you-boot. Mechanismy, jak to funguje, jsou popsány v VisionFive SBC Quick Start Guide.
Splnění těchto požadavků znamená, že
- Musíme opravit U-boot z https://github.com/starfive-tech/u-boot s nastavením pro Mender
- Musíme Bitbake U-boot s Yoctem
- Musíme zkompilovat U-boot ručně pro upload s druhou fází bootloaderu
Oprava u-bootu
Nejprve naklonujte derivát u-bootu od starfive-tech, abyste získali kódovou základnu, se kterou můžete pracovat.
git clone -b JH7100_upstream https://github.com/starfive-tech/u-boot.git
Mender auto-konfigurovaná oprava
meta-mender-core v Yocto se pokouší automaticky opravit u-boot pro potřeby Mender, pokud je nastaven 'MENDER_UBOOT_AUTO_CONFIGURE = "1"'. Ve většině případů tento scénář nefunguje kvůli úpravám výrobců desek.
Ale automaticky nakonfigurovaný patch Mender je dobrým výchozím bodem pro úpravu u-bootu pro VisionFive SOC s Mender klientem.
Pro získání automaticky konfigurovaného patche musíte bitbake u-boot s nastavením MENDER_UBOOT_AUTO_CONFIGURE = "1":
bitbake u-boot-visionfive
V adresáři 'your-build-directory/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0' je vytvořen opravný soubor 'mender_auto_configured.patch'.
Aplikujte patch na klonovaný u-boot
Dále aplikujeme tento mender_auto_configured.patch na klonovaný u-boot repozitář od starfive-tech.
cd u-boot-starfive
git apply path-to-patch/mender_auto_configured.patch
Přizpůsobte u-boot-starfive
u-boot potřebuje znát proměnné Mender, aby získal správné informace, ze které oblasti má SOC zavést po nasazení artefaktu na Mender server.
Takže musíme přizpůsobit soubor 'u-boot-starfive/include/configs/starfive-jh7100.h', abychom získali proměnné Mender a spravovali, ze které oblasti se má zavést:
#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
Test '${mender_kernel_root_name}' je bod a pak se rozhodne, který uEnv-soubor se vezme pro zavedení jádra.
Poté vytvořte kompletní patch z u-bootu pro použití v Yocto:
git diff --patch > ~/Documents/Yocto/meta-interelectronix-visionfive/recipes-bsp/u-boot/files/0004-u-boot.patch
Zahrňte tento patch do Yocto v 'u-boot-visionfive_%.bbappend':
FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
SRC_URI:append = " \
file://0004-u-boot.patch \
"
Bitbake U-boot
V 'u-boot-visionfive_%.bbappend' změňte MENDER_UBOOT_AUTO_CONFIGURE = "1" na MENDER_UBOOT_AUTO_CONFIGURE = "0".
Nyní můžete bitbake u-boot bez funkce automatické konfigurace mender as vlastními patchi:
bitbake u-boot-visionfive
Zkompilujte u-boot pro nahrání s zavaděčem druhé fáze
Nyní můžete zkompilovat u-boot v adresáři 'VisionFive-build/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0/git', který obsahuje patche přidané pomocí 'bitbake u-boot-visionfive'.
- Jak zkompilovat u-boot pro VisionFive SOC je popsáno v Kompilace u-bootu a jádra
- Jak nahrát u-boot pro VisionFive SOC je popsáno v Dodatku B: Aktualizace firmwaru a you-boot
bitbake Yocto Linux
bitbake Yocto Linux s přiloženým klientem Mender:
bitbake vision-five-image-mender
Flash obraz Linuxu na SD kartu a spusťte VisionFive SOC. Pokud vše funguje dobře, zařízení se zobrazí jako čekající zařízení v grafickém uživatelském rozhraní serveru Mender.
V části "ZAŘÍZENÍ" ji můžete přijmout a zahrnout do správy nasazení pozdějších aktualizací softwaru pro toto zařízení.
Podívejte se, jak vytvořit artefakt pro Mender v VisionFive - Mender - Yocto - Part 4.</:code8:></:code7:></:code6:></:code5:></:code4:></:code3:></:code2:></:code1:>
Licence na autorská práva
Autorská práva © 2022 Interelectronix e.K.
Tento zdrojový kód projektu je licencován pod licencí GPL-3.0.
Část 1 ze série článků, jak nastavit prostředí Yocto pro vytvoření Yocto Linuxu s integrací klienta Mender.
Část 2 ze série článků, jak nastavit prostředí Yocto pro vytvoření Yocto Linuxu s integrací klienta Mender.
Část 4 ze série článků, jak nastavit prostředí Yocto pro vytvoření Yocto Linuxu s integrací klienta Mender.