u-boot setup 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'.
- Paano upang bumuo ng u-boot para sa VisionFive SOC ay inilarawan sa ilalim ng Pagbubuo u-boot at Kernel
- Paano mag-upload ng u-boot para sa VisionFive SOC ay inilarawan sa ilalim ng Appendix B: Pag-update ng Firmware at ikaw-boot
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.
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.
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.
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.