Perangkat Lunak Tertanam - VisionFive - Mender - Yocto - Bagian 3 Tangkapan layar komputer

VisionFive - Mender - Yocto

Bagian 3 - Konfigurasi u-boot untuk Mender

Mender pengaturan u-boot

Konfigurasi u-boot untuk Mender

Kami menggunakan cabang Yocto Kirkstone untuk pengembangan. Kami anggap Anda sudah memiliki lingkungan pengembangan kerja yang terpasang dan menyetel lingkungan Anda seperti yang dijelaskan dalam VisionFive - Mender - Yocto - Bagian 1 dan dalam VisionFive - Mender - Yocto - Bagian 2.

Papan u-boot VisionFive

VisionFive RISC-V SBC menggunakan dua bootloader - secondBoot dan u-boot. Mekanisme cara kerjanya dijelaskan dalam Panduan Mulai Cepat VisionFive SBC.

Menangani persyaratan ini berarti bahwa

  • Kita harus menambal (patch) u-boot dari https://github.com/starfive-tech/u-boot dengan pengaturan untuk mender
  • Kita harus membangun u-boot di BitBake dengan Yocto
  • Kita harus mengompilasi u-boot secara manual untuk mengunggah dengan bootloader tahap kedua

Menambal (patching) u-boot

Pertama, kloning turunan (derivative) u-boot dari starfive-tech untuk mendapatkan basis kode untuk digunakan.

git clone -b JH7100_upstream https://github.com/starfive-tech/u-boot.git
Tambalan (patch) terkonfigurasi otomatis Mender

meta-mender-core di Yocto akan mencoba menambal u-boot secara otomatis untuk kebutuhan Mender jika 'MENDER_UBOOT_AUTO_CONFIGURE ="1"' telah ditetapkan. Dalam kebanyakan kasus, skenario ini tidak dapat bekerja karena penyesuaian dari produsen papan.

Tetapi tambalan (patch) terkonfigurasi otomatis Mender adalah titik awal yang baik untuk menyesuaikan u-boot untuk VisionFive SOC dengan klien Mender.

Untuk mendapatkan tambalan (patch) yang terkonfigurasi otomatis, Anda harus membangun u-boot di BitBake dengan setelan MENDER_UBOOT_AUTO_CONFIGURE = "1":

bitbake u-boot-visionfive

File tambalan (patch) bernama 'mender_auto_configured.patch' dibuat di dalam direktori 'your-build-directory/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0'.

Mengaplikasikan tambalan (patch) ke u-boot yang dikloning

Selanjutnya, kami menerapkan mender_auto_configured.patch ini ke repositori u-boot yang dikloning dari starfive- ech.

cd u-boot-starfive
git apply path-to-patch/mender_auto_configured.patch
Mengkustom u-boot-starfive

u-boot perlu mengetahui variabel Mender untuk mendapatkan informasi yang benar mengenai lokasi partisi SOC mana yang harus booting setelah menyebarkan artefak dengan server Mender.

Jadi, kita harus mengkustom file 'u-boot-starfive/include/configs/starfive-jh7100.h' untuk mendapatkan variabel Mender dan mengelola lokasi partisi untuk booting:

#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

Uji '${mender_kernel_root_name}' adalah poinnya dan kemudian tentukan uEnv-file mana yang diambil untuk memuat kernel.

Setelah ini, buat tambalan (patch) lengkap dari u-boot untuk menggunakannya di Yocto:

git diff --patch > ~/Documents/Yocto/meta-interelectronix-visionfive/recipes-bsp/u-boot/files/0004-u-boot.patch

Sertakan patch ini di Yocto dalam 'u-boot-visionfive_%.bbappend':

FILESEXTRAPATHS:prepend := "${THISDIR}/files:"

SRC_URI:append = " \
    file://0004-u-boot.patch \
"
Membangun u-boot di BitBake

Dalam 'u-boot-visionfive_%.bbappend' ubah MENDER_UBOOT_AUTO_CONFIGURE = "1" menjadi MENDER_UBOOT_AUTO_CONFIGURE = "0".

Sekarang Anda dapat membangun u-boot di BitBake tanpa fungsi konfigurasi otomatis dari Mender dan dengan tambalan (patch) kustom:

bitbake u-boot-visionfive
Kompilasi u-boot untuk mengunggah dengan bootloader tahap kedua

Sekarang Anda dapat mengompilasi u-boot di direktori 'VisionFive-build/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0/git', yang berisi tambalan (patch) yang ditambahkan dengan 'bitbake u-boot-visionfive'.

Membangun Yocto Linux di BitBake

Membangun Yocto Linux dengan klien Mender yang disertakan:

bitbake vision-five-image-mender

Flash image Linux ke kartu SD dan booting VisionFive SOC. Jika semua berjalan dengan baik, perangkat akan muncul sebagai perangkat tertunda di GUI server Mender.

Di bawah 'PERANGKAT', Anda dapat menerima dan menyertakannya untuk mengelola penyebaran pembaruan perangkat lunak yang lebih baru untuk perangkat ini.

Lihat cara membuat artefak untuk Mender di VisionFive - Mender - Yocto - Bagian 4.

Lisensi Hak Cipta

Hak Cipta © 2022 Interelectronix e.K.
Kode sumber proyek ini dilisensikan di bawah lisensiGPL-3.0.

Perangkat Lunak Tertanam - VisionFive - Mender - Yocto Tangkapan layar komputer
Bagian 1 - Setup dasar lingkungan Yocto

Bagian 1 dari seri artikel, cara menyetel lingkungan Yocto untuk membuat Yocto Linux dengan integrasi klien Mender.

Perangkat Lunak Tertanam - VisionFive - Mender - Yocto Tangkapan layar komputer
Bagian 2 - Setup dasar untuk menyertakan Mender

Bagian 2 dari seri artikel, cara menyetel lingkungan Yocto untuk membuat Yocto Linux dengan integrasi klien Mender.

Perangkat Lunak Tertanam - VisionFive - Mender - Yocto Tangkapan layar komputer
Bagian 4 - Membuat artefak untuk Mender

Bagian 4 dari seri artikel, cara menyetel lingkungan Yocto untuk membuat Yocto Linux dengan integrasi klien Mender.