Mender pengaturan u-boot
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'.
- Cara mengompilasi u-boot untuk VisionFive SOC dijelaskan di dalam Mengompilasi u-boot dan Kernel
- Cara mengunggah u-boot untuk VisionFive SOC dijelaskan di dalam Lampiran B: Memperbarui Firmware dan u-boot
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.
Bagian 1 dari seri artikel, cara menyetel lingkungan Yocto untuk membuat Yocto Linux dengan integrasi klien Mender.
Bagian 2 dari seri artikel, cara menyetel lingkungan Yocto untuk membuat Yocto Linux dengan integrasi klien Mender.
Bagian 4 dari seri artikel, cara menyetel lingkungan Yocto untuk membuat Yocto Linux dengan integrasi klien Mender.