Gömülü Yazılım - VisionFive - Mender - Yocto - Bölüm 3: bir bilgisayarın ekran görüntüsü

VisionFive - Mender - Yocto

Bölüm 3 - Mender için u önyüklemesi yapılandırması

u önyüklemesi kurulumu Mender

Mender için u önyüklemesi yapılandırması

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.

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.

Gömülü Yazılım - VisionFive - Mender - Yocto bir bilgisayarın ekran görüntüsü
Bölüm 1 - Yocto ortamının temel kurulumu

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.

Gömülü Yazılım - VisionFive - Mender - Yocto bir bilgisayarın ekran görüntüsü
Bölüm 2 - Mender'i içerecek şekilde temel kurulum

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.

Gömülü Yazılım - VisionFive - Mender - Yocto bir bilgisayarın ekran görüntüsü
Bölüm 4 - Mender için bir yapıt oluşturma

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.