u önyüklemesi kurulumu Mender
Geliştirme için Yocto Kirkstone dalını kullanıyoruz. VisionFive - Mender - Yocto - Bölüm 1 ve VisionFive - Mender - Yocto - Bölüm 2'de açıklandığı üzere halihazırda çalışan kurulu bir geliştirme ortamınız olduğunu ve bu ortamı ayarladığınızı varsayıyoruz.
u önyüklemesi VisionFive kartı
VisionFive RISC-V SBC iki önyükleyici kullanır: secondBoot ve u önyüklemesi. VisionFive SBC Hızlı Başlangıç Kılavuzu'nda bunun nasıl işlediğine dair mekanizmalar açıklanmıştır.Bu gereksinimlerin karşılanması şu anlama gelir:
- u önyüklemesini https://github.com/starfive-tech/u-boot adresinden mender ayarlarıyla yamalamalıyız
- yocto ile u önyüklemesine bitbake işlemi uygulamalıyız
- ikinci aşama önyükleyici ile yüklemek için u önyüklemesini manuel olarak derlememiz gerekiyor
u önyükleme yaması
İlk olarak, çalışabileceğiniz bir kod tabanı elde etmek için starfive-tech'ten u önyüklemesi türevini kopyalayın.
git clone -b JH7100_upstream https://github.com/starfive-tech/u-boot.git
Mender otomatik yapılandırılmış yama
Yocto'daki meta-mender-core, "MENDER_UBOOT_AUTO_CONFIGURE = "1"" ayarlanmışsa Mender gereksinimleri için u önyüklemesini otomatik olarak yamalamaya çalışır. Çoğu durumda, bu senaryo pano üreticilerinin düzenlemeleri nedeniyle gerçeğe dönüşmez.
Ancak Mender'in otomatik yapılandırılmış yaması, Mender istemcisi ile VisionFive SOC için u önyüklemesini ayarlamak için iyi bir başlangıç noktasıdır. Otomatik yapılandırılmış yamayı almak için, MENDER_UBOOT_AUTO_CONFIGURE = "1" ayarı ile u önyüklemesine bitbake işlemi uygulamanız gerekir:
bitbake u-boot-visionfive
"mender_auto_configured.patch" adlı bir yama dosyası "your-build-directory/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0" dizininde oluşturulur.
Klonlanmış u önyüklemesine yama uygulama
Daha sonra, bu mender_auto_configured.patch dosyasını starfive-tech'ten kopyalanmış u önyükleme deposuna uyguluyoruz..
cd u-boot-starfive
git apply path-to-patch/mender_auto_configured.patch
u-boot-starfive özelleştirme
u önyüklemesinin, Mender sunucusuyla bir yapıt dağıttıktan sonra SOC'nin hangi bölümden önyükleme yapması gerektiği konusunda doğru bilgileri almak için Mender değişkenlerini bilmesi gerekir.
Bu nedenle, Mender değişkenlerini almak ve hangi bölümden önyükleme yapılacağını yönetmek için "u-boot-starfive/include/configs/starfive-jh7100.h" dosyasını özelleştirmemiz gerekir:
#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
Amaç '${mender_kernel_root_name}' testidir ve ardından çekirdeği yüklemek için hangi uEnv dosyasının alınacağına karar verir.
Bundan sonra, Yocto'da kullanmak için u önyüklemesinden tam bir yama oluşturun:
git diff --patch > ~/Documents/Yocto/meta-interelectronix-visionfive/recipes-bsp/u-boot/files/0004-u-boot.patch
Bu yamayı Yocto'da "u-boot-visionfive_%.bbappend" içine ekleyin:
FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
SRC_URI:append = " \
file://0004-u-boot.patch \
"
u önyüklemesine bitbake işlemi uygulama
"u-boot-visionfive_%.bbappend" içinde MENDER_UBOOT_AUTO_CONFIGURE = "1" değerini MENDER_UBOOT_AUTO_CONFIGURE = "0" olarak değiştirin.
Artık u önyüklemesine mender'in otomatik yapılandırma işlevi olmadan özel yamalar ile bitbake işlemi uygulayabilirsiniz:
bitbake u-boot-visionfive
İkinci aşama önyükleyici ile yükleme için u önyüklemesi derleme
Artık u önyüklemesini "bitbake u-boot-visionfive" ile eklenen yamaları içeren "VisionFive-build/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0/git" dizininde derleyebilirsiniz.
- VisionFive SOC için u önyüklemesinin nasıl derleneceği u önyüklemesi ve Çekirdeğin Derlenmesi başlığı altında açıklanmıştır
- VisionFive SOC için u önyüklemesinin nasıl yükleneceği Ek B: Ürün Yazılımının ve u önyüklemesinin Güncellenmesi başlığı altında açıklanmıştır
Yocto Linux'e bitbake işlemi uygulama
Mender istemcisi ile birlikte Yocto Linux'e bitbake işlemi uygulama:
bitbake vision-five-image-mender
Linux görüntüsünü SD karta aktarın ve VisionFive Soc'u önyükleyin. Her şey yolunda giderse cihaz Mender sunucu arayüzünde bekleyen bir cihaz olarak görünür.
"CİHAZLAR" altında, bu cihazı daha sonraki yazılım güncellemelerinin dağıtımlarını yönetmek amacıyla kabul edebilir ve ekleyebilirsiniz.VisionFive - Mender - Yocto - Bölüm 4'te Mender için nasıl bir yapıt oluşturacağınızı öğrenin.
Telif Hakkı Lisansı
Telif Hakkı © 2022Interelectronix e.K.
Bu Proje kaynak kodu ** GPL-3.0**lisansı altında lisanslanmıştır.
Bu makale dizisinin 1. Bölümü, bir Mender istemcisi entegrasyonu ile bir Yocto Linux oluşturmak amacıyla bir Yocto ortamının nasıl kurulacağını açıklamaktadır.
Bu makale dizisinin 2. Bölümü, bir Mender istemcisi entegrasyonu ile bir Yocto Linux oluşturmak amacıyla bir Yocto ortamının nasıl kurulacağını açıklamaktadır.
Bu makale dizisinin 4. Bölümü, bir Mender istemcisi entegrasyonu ile bir Yocto Linux oluşturmak amacıyla bir Yocto ortamının nasıl kurulacağını açıklamaktadır.