LINUX.ORG.RU
решено ФорумAdmin

uboot aarch64 zImage: unsupported?

 , ,


0

1

Ядро собирается в 30 мегабайт Image и порядка 6 мегабайт zImage

uboot на aarch64 не умеет грузить zImage.

Кто-нибудь видел объяснения, почему так?

Может встречал патчи для 64-битного декомпрессора?

UPD: uboot aarch64 zImage: unsupported? (комментарий) возможно

★★★★★

Последнее исправление: max_lapshin (всего исправлений: 1)

Ядро собирается в 30 мегабайт Image и порядка 6 мегабайт zImage

zImage (самораспаковывающее ядро) на aarch64?! Таких не бывает.
Нет zImage, нет встроенной dtb (на это какой-то патч я видел) и вообще для загрузки теперь необходимо спрашивать разрешение у CPU (через фирмварь ATF).
Всем этим теперь занимается u-boot, включая распаковку предварительно сжатого (обычным архиватором gz/lz4/lzo) ядра.

arson ★★★★★
()
Ответ на: комментарий от arson

а подскажи, что гуглить, что бы включить или притащить для моей платформы патчи на распаковку ядра убутом?

прям очень критично: ядро в 30 мегабайт по tftp грузится под 30 секунд.

max_lapshin ★★★★★
() автор топика
Ответ на: комментарий от max_lapshin

Включаешь в u-boot поддержу сжатых образов:

CONFIG_LZ4=y
CONFIG_LZO=y
Сжимаешь ядро lz4 -f -9 Image. У меня (с sd-card) получилось, что лучше lz4. gzip лучше сжимает, но долго распаковывается.

Создаешь fit-образ. Конфиг в формате device-tree, только описывается не оборудование, а файлы прошивки.
Например, для Allwinner-а H5, kernel.its:

/dts-v1/;

/ {
	description = "kernel with dtb";
	#address-cells = <1>;

	images {
		kernel {
			description = "Kernel";
			data = /incbin/("Image.lz4");
			type = "kernel";
			compression = "lz4";
			os = "linux";
			load = <0x40080000>;
			entry = <0x40080000>;
			arch = "arm64";
		};
		fdt_kernel {
			description = "fdt_kernel";
			data = /incbin/("kernel.dtb");
			type = "flat_dt";
			compression = "none";
			load = <0x4fa00000>;
			arch = "arm64";
		};
	};
	configurations {
		default = "config_1";
		config_1 {
			description = "config_1";
			kernel = "kernel";
			fdt = "fdt_kernel";
		};
	};
};
Собираешь mkimage -E -f kernel.its kernel.itb. Опция '-E' это для allwinner-а.

На target-е загружаешь этот образ в свободное место в RAM (не на место ядра!).
Запускаешь bootm <адрес-образа>.
Вроде все.

arson ★★★★★
()
Ответ на: комментарий от max_lapshin

для моей платформы
не, это с вендорскими патчами

Ну ты хоть напиши, что за платформа, какие версии uboot/kernel, что за патчи из нулей (ядро сжимается в 5 раз!?)

arson ★★★★★
()
Ответ на: комментарий от max_lapshin

Платформа— nvidia jetson.

Nano, Xavier, TX2?
30Мб ядро долго грузится по гигабитной сети? Может стоит посмотреть команду mii в u-boot?
Зачем вообще грузить по сети если на борту минимум 16Гб eMMC 5.1?

Jetson Nano: $99
Маленький, но мощный компьютер для задач ИИ на базе CUDA-X™ обеспечивает производительность в 472 гигафлопс в сегодняшних приложениях для ИИ при энергопотреблении всего 5 Вт.

Прикольно. Давай конфиг, может пригодится.

arson ★★★★★
()
Последнее исправление: arson (всего исправлений: 1)
Ответ на: комментарий от arson

какой конфиг давать? Ты же сам привел как раз рабочий сценарий

max_lapshin ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.