u-boot beállítás Mender
A Yocto Kirkstone ágat használjuk a fejlesztéshez. Feltételezzük, hogy már telepített egy működő fejlesztőkörnyezetet, és beállítja a környezetet a VisionFive - Mender - Yocto - 1. rész és a VisionFive - Mender - Yocto - 2. rész leírásában leírtak szerint.
u-boot VisionFive kártya
A VisionFive RISC-V SBC két rendszerbetöltőt használ - egy secondBoot és you-boot. Ennek működését a VisionFive SBC gyors üzembe helyezési útmutatója ismerteti.
Ezeknek a követelményeknek a kezelése azt jelenti, hogy
- Javítanunk kell az u-bootot https://github.com/starfive-tech/u-boot-ből a Mender beállításaival
- Meg kell sütni U-Boot Yocto-val
- manuálisan kell lefordítanunk az u-bootot a feltöltéshez a második fokozatú bootloaderrel
Az u-boot javítása
Először is, klónozd az u-boot származékot a starfive-tech-ből, hogy kódbázist kapj, amivel dolgozhatsz.
git clone -b JH7100_upstream https://github.com/starfive-tech/u-boot.git
Mender automatikusan konfigurált javítás
A Yocto meta-mender-core megpróbálja automatikusan javítani az u-bootot Mender igényeihez, ha 'MENDER_UBOOT_AUTO_CONFIGURE = "1"' van beállítva. A legtöbb esetben ez a forgatókönyv nem működik a táblagyártók módosításai miatt.
De a Mender automatikusan konfigurált javítása jó kiindulópont a VisionFive SOC u-boot beállításához a Mender klienssel.
Az automatikusan konfigurált javítás megszerzéséhez bitbake u-bootot kell készítenie MENDER_UBOOT_AUTO_CONFIGURE = "1" beállítással:
bitbake u-boot-visionfive
A "mender_auto_configured.patch" nevű javítófájl a "your-build-directory/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0" könyvtárban jön létre.
Javítás alkalmazása klónozott u-bootra
Ezután ezt a mender_auto_configured.patch-et alkalmazzuk a starfive-tech klónozott u-boot tárolójára.
cd u-boot-starfive
git apply path-to-patch/mender_auto_configured.patch
Az u-boot-starfive testreszabása
Az u-boot ismernie kell a Mender változókat, hogy megkapja a helyes információkat, hogy az SOC-nak melyik partícióról kell elindulnia, miután üzembe helyezett egy összetevőt a Mender-kiszolgálóval.
Tehát testre kell szabnunk az 'u-boot-starfive/include/configs/starfive-jh7100.h' fájlt, hogy megkapjuk a Mender változókat és kezeljük, hogy melyik partícióról induljunk:
#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
Tesztelje a '${mender_kernel_root_name}' parancsot, majd döntse el, hogy melyik uEnv-fájlt használja a rendszermag betöltéséhez.
Ezután hozzon létre egy teljes javítást az u-boot-ból a Yocto-ban való használatához:
git diff --patch > ~/Documents/Yocto/meta-interelectronix-visionfive/recipes-bsp/u-boot/files/0004-u-boot.patch
Foglalja bele ezt a javítást a Yocto-ba az 'u-boot-visionfive_%.bbappend' fájlba:
FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
SRC_URI:append = " \
file://0004-u-boot.patch \
"
Bitbake U-boot
Az 'u-boot-visionfive_%.bbappend' beállításnál módosítsa a MENDER_UBOOT_AUTO_CONFIGURE = "1" értéket MENDER_UBOOT_AUTO_CONFIGURE = "0" értékre.
Most már bitbake u-boot a mender automatikus configure funkciója nélkül és az egyéni javításokkal:
bitbake u-boot-visionfive
U-boot fordítása feltöltésre második fokozatú rendszerbetöltővel
Most már lefordíthatja az u-bootot a 'VisionFive-build/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0/git' könyvtárban, amely tartalmazza a 'bitbake u-boot-visionfive' által hozzáadott javításokat.
- Az u-boot fordítása a VisionFive SOC-hoz az u-boot és a kernel fordítása alatt található
- Az u-boot feltöltése a VisionFive SOC-hoz a B függelék: A firmware frissítése és a rendszerindítás alatt található
bitbake Yocto Linux
bitbake Yocto Linux mellékelt Mender klienssel:
bitbake vision-five-image-mender
Flash a Linux képet az SD kártyára, és indítsa el a VisionFive SOC-t. Ha minden jól működik, az eszköz függőben lévő eszközként jelenik meg a Mender szerver grafikus felhasználói felületén.
Az "ESZKÖZÖK" alatt elfogadhatja és felveheti az eszköz későbbi szoftverfrissítéseinek központi telepítésének kezeléséhez.
Nézze meg, hogyan hozhat létre műterméket Mender számára a VisionFive - Mender - Yocto - 4. részben.</:code8:></:code7:></:code6:></:code5:></:code4:></:code3:></:code2:></:code1:>
Szerzői jogi licenc
Copyright © 2022 Interelectronix e.K.
Ez a Project forráskód a GPL-3.0 licenc alatt van licencelve.
Egy cikksorozat 1. része, hogyan állítsunk be egy Yocto környezetet egy Yocto Linux létrehozásához egy Mender kliens integrálásával.
Egy cikksorozat 2. része, hogyan állítsunk be egy Yocto környezetet egy Yocto Linux létrehozásához egy Mender kliens integrálásával.
Egy cikksorozat 4. része, hogyan állítsunk be egy Yocto környezetet egy Yocto Linux létrehozásához egy Mender kliens integrálásával.