Встроенное программное обеспечение - VisionFive - Mender - Yocto - Часть 3 скриншот компьютера

VisionFive — Mender — Yocto

Часть 3. Настройка u-boot для Mender

Настройка u-boot Mender

настройка u-boot для Mender

Мы используем ветвь Yocto Kirkstone для разработки. Предполагается, что у вас уже установлена и настроена рабочая среда разработки (см. статьи VisionFive — Mender — Yocto — часть 1 и VisionFive — Mender — Yocto — часть 2).

u-boot и плата VisionFive

Одноплатный компьютер VisionFive RISC-V SBC использует два загрузчика: secondBoot and u-boot. Принципы работы описаны в кратком руководстве по одноплатному компьютеру VisionFive.

Согласно требованиям:

— для u-boot необходимо установить патч с настройками для mender, загруженный по ссылке https://github.com/starfive-tech/u-boot; — необходимо выполнить bitbake u-boot с yocto; — необходимо скомпилировать u-boot вручную для отправки с загрузчиком второго этапа.

Установка патча для u-boot

Сначала клонируйте производную u-boot из starfive-tech, чтобы получить базу кода для работы.

git clone -b JH7100_upstream https://github.com/starfive-tech/u-boot.git
Автоматически настроенный патч Mender

meta-mender-core в Yocto пытается автоматически пропатчить u-boot для нужд Mender, если установлено значение MENDER_UBOOT_AUTO_CONFIGURE = "1". В большинстве случаев этот сценарий не работает из-за настроек производителей плат.

Но автоматически настроенный патч Mender — хорошая отправная точка, чтобы настроить u-boot для системы на кристалле VisionFive SOC с клиентом Mender.

Чтобы получить автоматически настроенный патч, выполните bitbake u-boot с параметром MENDER_UBOOT_AUTO_CONFIGURE = "1":

bitbake u-boot-visionfive

Файл патча "mender_auto_configured.patch" создается в каталоге "your-build-directory/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0".

Применение патча для клонированного u-boot

Затем мы применяем патч mender_auto_configured.patch к клонированному репозиторию u-boot из starfive-tech.

cd u-boot-starfive
git apply path-to-patch/mender_auto_configured.patch
Настройка u-boot-starfive

u-boot должен знать переменные Mender, чтобы получать правильную информацию о том, из какого раздела система на кристалле должна выполнять загрузку после развертывания артефакта на сервере Mender.

Поэтому необходимо настроить файл "u-boot-starfive/include/configs/starfive-jh7100.h", чтобы получать переменные Mender и управлять тем, из какого раздела выполняется загрузка:

#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

Тест '${mender_kernel_root_name}' является точкой. После этого решается, какой uEnv-файл будет использоваться для загрузки ядра.

Затем создайте полный патч из u-boot для использования в Yocto:

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

Включите этот патч в "u-boot-visionfive_%.bbappend" в Yocto:

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

SRC_URI:append = " \
    file://0004-u-boot.patch \
"
Выполнение bitbake u-boot

В "u-boot-visionfive_%.bbappend" измените значение MENDER_UBOOT_AUTO_CONFIGURE = "1" на MENDER_UBOOT_AUTO_CONFIGURE = "0".

Теперь можно выполнить bitbake u-boot без функции автоматической настройки mender и с пользовательскими патчами:

bitbake u-boot-visionfive
Компиляция u-boot для отправки с загрузчиком второго этапа

Теперь вы можете скомпилировать u-boot в каталоге "VisionFive-build/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0/git", который содержит патчи, добавленные с помощью "bitbake u-boot-visionfive".

— Компиляция u-boot для системы на кристалле VisionFive описана в статье Компиляция u-boot и ядра. — Отправка u-boot для системы на кристалле VisionFive SOC описана в статье Приложение Б. Обновление прошивки и u-boot.

Выполнение bitbake Yocto Linux

Выполнение bitbake Yocto Linux с внедренным клиентом Mender:

bitbake vision-five-image-mender

Установите образ Linux на SD-карту и загрузите систему на кристалле VisionFive SOC. Если всё работает, устройство появляется в качестве ожидающего в графическом интерфейсе сервера Mender.

В разделе "DEVICES" (УСТРОЙСТВА) можно одобрить его и разрешить управление развертыванием последующих обновлений ПО для этого устройства.

Как создать артефакт для Mender: VisionFive — Mender — Yocto — часть 4.

Лицензия на авторские права

Авторское право © 2022 Interelectronix e.K.
Данный исходный код проекта лицензирован под лицензией GPL-3.0.

Встроенное программное обеспечение - VisionFive - Mender - Yocto скриншот компьютера
Часть 1. Базовая настройка среды Yocto

Часть 1 серии статей о настройке среды Yocto для создания Yocto Linux с интеграцией клиента Mender.

Встроенное программное обеспечение - VisionFive - Mender - Yocto скриншот компьютера
Часть 2. Базовая настройка для внедрения Mender

Часть 2 серии статей о настройке среды Yocto для создания Yocto Linux с интеграцией клиента Mender.

Встроенное программное обеспечение - VisionFive - Mender - Yocto скриншот компьютера
Часть 4. Создание артефакта для mender

Часть 4 посвящена настройке среды Yocto для создания Yocto Linux с интеграцией клиента Mender.