Всем привет. Не знаю куда правильно адресовать такого рода посты. Но попробую сюда.
В общем проблема такая: Ядро не грузится дальше Starting kernel ...
Система: Orange Pi Zero Plus2 H5
Собираю образ на базе OpenWRT. По итогу имею 2 варианта развития событий:
1. Классический uImage сжатый lzma и отдельно dtb файл. Всё это грузит U-Boot командой booti <addr> - <addr>
2. Новомодный FIT образ того же ядра с тем же dtb но уже два в одном. Грузит тот же U-Boot но уже командой bootm <addr>
В первом варианте всё грузится без каких-то проблем. Всё хорошо.
Во втором варианте дело доходит до Starting kernel и система зависает колом.
Образ собираю следующей командой:
mkimage -E -f Image.its Image.new
Где в Image.its следующее содержание:
/dts-v1/;
/ {
description = "ARM64 OpenWrt FIT (Flattened Image Tree)";
#address-cells = <1>;
images {
kernel@1 {
description = "ARM64 OpenWrt Linux-5.4.60";
data = /incbin/("arch/arm64/boot/Image.lzma");
type = "kernel";
arch = "arm64";
os = "linux";
compression = "lzma";
load = <0x40008000>;
entry = <0x40008000>;
hash@1 {
algo = "crc32";
};
hash@2 {
algo = "sha1";
};
};
fdt@1 {
description = "ARM64 OpenWrt xunlong_orangepi-zero-plus2 device tree blob";
data = /incbin/("sun50i-h5-orangepi-zero-plus2.dtb");
type = "flat_dt";
arch = "arm64";
compression = "none";
load = <0x4FA00000>;
hash@1 {
algo = "crc32";
};
hash@2 {
algo = "sha1";
};
};
};
configurations {
default = "config@1";
config@1 {
description = "OpenWRT";
kernel = "kernel@1";
fdt = "fdt@1";
};
};
};
По итогу происходит вот такая загрузка:
U-Boot 2020.04 (Aug 28 2020 - 09:44:29 +0000) Allwinner Technology
CPU: Allwinner H5 (SUN50I)
Model: OrangePi Zero Plus2
DRAM: 512 MiB
MMC: Device 'mmc@1c11000': seq 1 is in use by 'mmc@1c10000'
mmc@1c0f000: 0, mmc@1c10000: 2, mmc@1c11000: 1
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 0
=> fatload mmc 0 53E00000 Image.new
3561732 bytes read in 513 ms (6.6 MiB/s)
=> setenv bootargs console=ttyS0,115200 earlyprintk root=PARTUUID=5452574f-02 rootwait earlycon=uart,mmio32,0x01c28000
=> bootm 53E00000
## Loading kernel from FIT Image at 53e00000 ...
Using 'config@1' configuration
Trying 'kernel@1' kernel subimage
Description: ARM64 OpenWrt Linux-5.4.60
Type: Kernel Image
Compression: lzma compressed
Data Start: 0x53e0043c
Data Size: 3537003 Bytes = 3.4 MiB
Architecture: AArch64
OS: Linux
Load Address: 0x40008000
Entry Point: 0x40008000
Hash algo: crc32
Hash value: 1003b68e
Hash algo: sha1
Hash value: 94d9ea6a0f543649d294b50bd2a7bba1857cf538
Verifying Hash Integrity ... crc32+ sha1+ OK
## Loading fdt from FIT Image at 53e00000 ...
Using 'config@1' configuration
Trying 'fdt@1' fdt subimage
Description: ARM64 OpenWrt xunlong_orangepi-zero-plus2 device tree blob
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x5415fca8
Data Size: 23641 Bytes = 23.1 KiB
Architecture: AArch64
Load Address: 0x4fa00000
Hash algo: crc32
Hash value: fc8daabb
Hash algo: sha1
Hash value: 6c18b66e1c9bb6dfb289701e1a478e294cb3568c
Verifying Hash Integrity ... crc32+ sha1+ OK
Loading fdt from 0x5415fca8 to 0x4fa00000
Booting using the fdt blob at 0x4fa00000
Uncompressing Kernel Image
Loading Device Tree to 0000000049ff7000, end 0000000049fffc58 ... OK
Starting kernel ...
Если взять те же образы но ВНЕ FIT упаковки, то всё грузится вот так:
U-Boot 2020.04 (Aug 28 2020 - 09:44:29 +0000) Allwinner Technology
CPU: Allwinner H5 (SUN50I)
Model: OrangePi Zero Plus2
DRAM: 512 MiB
MMC: Device 'mmc@1c11000': seq 1 is in use by 'mmc@1c10000'
mmc@1c0f000: 0, mmc@1c10000: 2, mmc@1c11000: 1
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 0
=> load mmc 0 53E00000 Image.lzma
3537067 bytes read in 506 ms (6.7 MiB/s)
=> fatload mmc 0 0x4FA00000 sun50i-h5-orangepi-zero-plus2.dtb
23641 bytes read in 5 ms (4.5 MiB/s)
=> setenv bootargs console=ttyS0,115200 earlyprintk root=PARTUUID=5452574f-02 rootwait earlycon=uart,mmio32,0x01c28000
=bootm 0x53E00000 - 0x4FA00000
## Booting kernel from Legacy Image at 53e00000 ...
Image Name: Linux
Image Type: AArch64 Linux Kernel Image (lzma compressed)
Data Size: 3537003 Bytes = 3.4 MiB
Load Address: 40080000
Entry Point: 40080000
Verifying Checksum ... OK
## Flattened Device Tree blob at 4fa00000
Booting using the fdt blob at 0x4fa00000
Uncompressing Kernel Image
Loading Device Tree to 0000000049ff7000, end 0000000049fffc58 ... OK
Starting kernel ...
[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[ 0.000000] Linux version 5.4.60 (spider@horoshiki.ru) (gcc version 8.4.0 (OpenWrt GCC 8.4.0 r14283-42d14ace3e)) #0 SMP Fri Aug 28 09:44:29 2020
[ 0.000000] Machine model: OrangePi Zero Plus2
Я что-то делаю не так? Или оно само не живое?