U-boot setup Mender
Tunatumia tawi la Yocto Kirkstone kwa maendeleo. Tunadhani kuwa tayari una mazingira ya maendeleo ya kazi yaliyowekwa na kuanzisha mazingira yako kama ilivyoelezwa katika VisionFive - Mender - Yocto - Sehemu ya 1 na katika VisionFive - Mender - Yocto - Sehemu ya 2.
u-boot VisionFive bodi
VisionFive RISC-V SBC hutumia bootloader mbili - ya piliBoot na wewe-boot. Utaratibu jinsi hii inavyofanya kazi umeelezewa katika Mwongozo wa Kuanza Haraka wa VisionFive SBC.
Kushughulikia mahitaji haya inamaanisha kuwa
- Tunapaswa kuweka U-boot kutoka https://github.com/starfive-tech/u-boot na mipangilio ya mender
- Tunapaswa kuwa na Bitbake U-Boot na Yocto
- Lazima tukusanye U-boot kwa mikono kwa kupakia na bootloader ya hatua ya pili
Kutia alama u-boot
Kwanza, clone u-boot derivative kutoka starfive-tech kupata msingi wa msimbo kufanya kazi nao.
git clone -b JH7100_upstream https://github.com/starfive-tech/u-boot.git
Mender kiraka kilichosanidiwa kiotomatiki
meta-mender-core katika Yocto inajaribu kuweka u-boot moja kwa moja kwa mahitaji ya Mender ikiwa 'MENDER_UBOOT_AUTO_CONFIGURE = "1"' imewekwa. Katika hali nyingi, hali hii haifanyi kazi kwa sababu ya marekebisho ya wazalishaji wa bodi.
Lakini kiraka kilichosanidiwa kiotomatiki cha Mender ni hatua nzuri ya kuanzia kurekebisha u-boot kwa VisionFive SOC na mteja wa Mender.
Ili kupata kiraka kilichosanidiwa kiotomatiki, lazima u-boot na MENDER_UBOOT_AUTO_CONFIGURE = "1" mpangilio:
bitbake u-boot-visionfive
Faili ya kiraka inayoitwa 'mender_auto_configured.patch' imeundwa kwenye saraka 'your-build-directory/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0'.
Tumia kiraka kwa u-boot ya cloned
Ifuatayo, tunatumia mender_auto_configured.patch hii kwenye hazina ya u-boot ya cloned kutoka kwa teknolojia ya nyota ya nyota.
cd u-boot-starfive
git apply path-to-patch/mender_auto_configured.patch
Customize u-boot-starfive
u-boot inahitaji kujua vigezo vya Mender ili kupata habari sahihi kutoka kwa kizigeu ambacho SOC inapaswa kuwasha baada ya kupeleka artifact na seva ya Mender.
Kwa hivyo tunapaswa kubadilisha faili 'u-boot-starfive/include/configs/starfive-jh7100.h' ili kupata vigezo vya Mender na kusimamia kutoka kwa kizigeu gani cha kuwasha:
#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
Jaribu '${mender_kernel_root_name}' ni hatua na kisha uamue ni faili gani ya uEnv inachukuliwa kupakia kernel.
Baada ya hii, tengeneza kiraka kamili kutoka kwa u-boot kwa kuitumia katika Yocto:
git diff --patch > ~/Documents/Yocto/meta-interelectronix-visionfive/recipes-bsp/u-boot/files/0004-u-boot.patch
Jumuisha kiraka hiki katika Yocto katika 'u-boot-visionfive_%.bbappend':
FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
SRC_URI:append = " \
file://0004-u-boot.patch \
"
bitbake u-boot
Katika 'u-boot-visionfive_%.bbappend' mabadiliko MENDER_UBOOT_AUTO_CONFIGURE = "1" kwa MENDER_UBOOT_AUTO_CONFIGURE = "0".
Sasa unaweza bitbake u-boot bila kazi autoconfigure ya mender na kwa viraka desturi:
bitbake u-boot-visionfive
Kusanya u-boot kwa kupakia na bootloader ya hatua ya pili
Sasa unaweza kukusanya u-boot kwenye saraka 'VisionFive-build/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0/git', ambayo ina viraka vilivyoongezwa na 'bitbake u-boot-visionfive'.
- Jinsi ya kukusanya u-boot kwa VisionFive SOC imeelezewa chini ya Kukusanya u-boot na Kernel
- Jinsi ya kupakia u-boot kwa VisionFive SOC imeelezewa chini ya Kiambatisho B: Kusasisha firmware na wewe-boot
bitbake Yocto Linux
bitbake Yocto Linux na mteja wa Mender aliyejumuishwa:
bitbake vision-five-image-mender
Kiwango cha picha ya Linux kwenye kadi ya SD na uwashe VisionFive SOC. Ikiwa yote inafanya kazi vizuri, kifaa kinaonekana kama kifaa kinachosubiri katika GUI ya seva ya Mender.
Chini ya 'DEVICES', unaweza kukubali na kuijumuisha ili kudhibiti upelekaji wa sasisho za programu za baadaye za kifaa hiki.
Angalia jinsi ya kuunda artifact kwa Mender katika VisionFive - Mender - Yocto - Sehemu ya 4.</:code8:></:code7:></:code6:></:code5:></:code4:></:code3:></:code2:></:code1:>
Leseni ya Hakimiliki
Copyright © 2022 Interelectronix e.K.
Msimbo huu wa chanzo cha Mradi una leseni chini ya leseni ya GPL-3.0.
Sehemu ya 1 ya mfululizo wa makala, jinsi ya kusanidi mazingira ya Yocto kuunda Yocto Linux na ujumuishaji wa mteja wa Mender.
Sehemu ya 2 ya mfululizo wa makala, jinsi ya kuanzisha mazingira ya Yocto kuunda Yocto Linux na ujumuishaji wa mteja wa Mender.
Sehemu ya 4 ya mfululizo wa makala, jinsi ya kusanidi mazingira ya Yocto kuunda Yocto Linux na ujumuishaji wa mteja wa Mender.