大家好,
我在 FRWY 板和我自己的定制板上使用 FIT 图像时遇到困难;两者都有同样的问题,所以我认为是我和我在做什么而不是硬件问题。
使用 FRWY 板作为讨论主题:
我可以通过以下命令使用 LSDK 21.08 构建 FIT 图像:
flex-builder -i mkitb -r ubuntu:lite这会为我生成一个名为“itb”的文件:
lsdk2108_ubuntu_lite_LS_arm64.itb
从 uboot,我可以使用 TFTP 服务器将文件上传到 DDR4 内存,如下所示:
tftpboot 0xC0000000 lsdk2108_ubuntu_lite_LS_arm64.itb使用命令“iminfo”,我可以看到 FIT 文件已正确加载,并且包含启动 linux 所需的所有部分:
=> iminfo
## Checking Image at c0000000 ...
FIT image found
FIT descrip
tion: arm64 kernel, ramdisk and FDT blob
Image 0 (kernel)
Description: ARM64 Kernel
Type: Kernel Image
Compression: gzip compressed
Data Start: 0xc00000d0
Data Size: 15187129 Bytes = 14.5 MiB
Architecture: AArch64
OS: Linux
Load Address: 0x84080000
Entry Point: 0x84080000
Image 1 (initrd)
Description: initrd for arm64
Type: RAMDisk Image
Compression: uncompressed
Data Start: 0xc0e7be38
Data Size: 171981256 Bytes = 164 MiB
Architecture: AArch64
OS: Linux
Load Address: 0x00000000
Entry Point: 0x00000000
Image 2 (ls1012ardb-dtb)
Description: ls1012ardb-dtb
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0xcb27f8b0
Data Size: 14690 Bytes = 14.3 KiB
Architecture: AArch64
Load Address: 0x90000000
Image 3 (ls1012aqds-dtb)
Description: ls1012aqds-dtb
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0xcb2832b4
Data Size: 16669 Bytes = 16.3 KiB
Architecture: AArch64
Load Address: 0x90000000
Image 4 (ls1012afrwy-dtb)
Description: ls1012afrwy-dtb
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0xcb287474
Data Size: 16022 Bytes = 15.6 KiB
Architecture: AArch64
Load Address: 0x90000000
Image 5 (ls1028ardb-dtb)
Description: ls1028ardb-dtb
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0xcb28b3ac
Data Size: 32751 Bytes = 32 KiB
Architecture: AArch64
Load Address: 0x90000000
Image 6 (ls1028aqds-dtb)
Description: ls1028aqds-dtb
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0xcb29343c
Data Size: 34636 Bytes = 33.8 KiB
Architecture: AArch64
Load Address: 0x90000000
Image 7 (ls1043ardb-dtb)
Description: ls1043ardb-dtb
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0xcb29bc28
Data Size: 39769 Bytes = 38.8 KiB
Architecture: AArch64
Load Address: 0x90000000
Image 8 (ls1043aqds-dtb)
Description: ls1043aqds-dtb
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0xcb2a5824
Data Size: 43617 Bytes = 42.6 KiB
Architecture: AArch64
Load Address: 0x90000000
Image 9 (ls1046ardb-dtb)
Description: ls1046ardb-dtb
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0xcb2b0328
Data Size: 38979 Bytes = 38.1 KiB
Architecture: AArch64
Load Address: 0x90000000
Image 10 (ls1046aqds-dtb)
Description: ls1046aqds-dtb
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0xcb2b9c0c
Data Size: 43103 Bytes = 42.1 KiB
Architecture: AArch64
Load Address: 0x90000000
Image 11 (ls1046afrwy-dtb)
Description: ls1046afrwy-dtb
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0xcb2c450c
Data Size: 38901 Bytes = 38 KiB
Architecture: AArch64
Load Address: 0x90000000
Image 12 (ls1088ardb-dtb)
Description: ls1088ardb-dtb
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0xcb2cdda4
Data Size: 25505 Bytes = 24.9 KiB
Architecture: AArch64
Load Address: 0x90000000
Image 13 (ls1088aqds-dtb)
Description: ls1088aqds-dtb
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0xcb2d41e8
Data Size: 24876 Bytes = 24.3 KiB
Architecture: AArch64
Load Address: 0x90000000
Image 14 (ls2088ardb-dtb)
Description: ls2088ardb-dtb
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0xcb2da3b4
Data Size: 33155 Bytes = 32.4 KiB
Architecture: AArch64
Load Address: 0x90000000
Image 15 (ls2088aqds-dtb)
Description: ls2088aqds-dtb
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0xcb2e25d8
Data Size: 33556 Bytes = 32.8 KiB
Architecture: AArch64
Load Address: 0x90000000
Image 16 (lx2160ardb-dtb)
Description: lx2160ardb-dtb
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0xcb2ea98c
Data Size: 41849 Bytes = 40.9 KiB
Architecture: AArch64
Load Address: 0x90000000
Image 17 (lx2160aqds-dtb)
Description: lx2160aqds-dtb
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0xcb2f4da8
Data Size: 42506 Bytes = 41.5 KiB
Architecture: AArch64
Load Address: 0x90000000
Image 18 (lx2162aqds-dtb)
Description: lx2162aqds-dtb
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0xcb2ff454
Data Size: 43582 Bytes = 42.6 KiB
Architecture: AArch64
Load Address: 0x90000000
Configuration 0 (ls1012ardb)
Description: config for ls1012ardb
Kernel: kernel
Init Ramdisk: initrd
FDT: ls1012ardb-dtb
Configuration 1 (ls1012aqds)
Description: config for ls1012aqds
Kernel: kernel
Init Ramdisk: initrd
FDT: ls1012aqds-dtb
Configuration 2 (ls1012afrwy)
Description: config for ls1012afrwy
Kernel: kernel
Init Ramdisk: initrd
FDT: ls1012afrwy-dtb
Configuration 3 (ls1028ardb)
Description: config for ls1028ardb
Kernel: kernel
Init Ramdisk: initrd
FDT: ls1028ardb-dtb
Configuration 4 (ls1028aqds)
Description: config for ls1028aqds
Kernel: kernel
Init Ramdisk: initrd
FDT: ls1028aqds-dtb
Configuration 5 (ls1043ardb)
Description: config for ls1043ardb
Kernel: kernel
Init Ramdisk: initrd
FDT: ls1043ardb-dtb
Configuration 6 (ls1043aqds)
Description: config for ls1043aqds
Kernel: kernel
Init Ramdisk: initrd
FDT: ls1043aqds-dtb
Configuration 7 (ls1046ardb)
Description: config for ls1046ardb
Kernel: kernel
Init Ramdisk: initrd
FDT: ls1046ardb-dtb
Configuration 8 (ls1046aqds)
Description: config for ls1046aqds
Kernel: kernel
Init Ramdisk: initrd
FDT: ls1046aqds-dtb
Configuration 9 (ls1046afrwy)
Description: config for ls1046afrwy
Kernel: kernel
Init Ramdisk: initrd
FDT: ls1046afrwy-dtb
Configuration 10 (ls1088ardb)
Description: config for ls1088ardb
Kernel: kernel
Init Ramdisk: initrd
FDT: ls1088ardb-dtb
Configuration 11 (ls1088aqds)
Description: config for ls1088aqds
Kernel: kernel
Init Ramdisk: initrd
FDT: ls1088aqds-dtb
Configuration 12 (ls2088ardb)
Description: config for ls2088ardb
Kernel: kernel
Init Ramdisk: initrd
FDT: ls2088ardb-dtb
Configuration 13 (ls2088aqds)
Description: config for ls2088aqds
Kernel: kernel
Init Ramdisk: initrd
FDT: ls2088aqds-dtb
Configuration 14 (lx2160ardb)
Description: config for lx2160ardb
Kernel: kernel
Init Ramdisk: initrd
FDT: lx2160ardb-dtb
Configuration 15 (lx2160aqds)
Description: config for lx2160aqds
Kernel: kernel
Init Ramdisk: initrd
FDT: lx2160aqds-dtb
Configuration 16 (lx2162aqds)
Description: config for lx2162aqds
Kernel: kernel
Init Ramdisk: initrd
FDT: lx2162aqds-dtb
## Checking hash(es) for FIT Image at c0000000 ...
Hash(es) for Image 0 (kernel):
Hash(es) for Image 1 (initrd):
Hash(es) for Image 2 (ls1012ardb-dtb):
Hash(es) for Image 3 (ls1012aqds-dtb):
Hash(es) for Image 4 (ls1012afrwy-dtb):
Hash(es) for Image 5 (ls1028ardb-dtb):
Hash(es) for Image 6 (ls1028aqds-dtb):
Hash(es) for Image 7 (ls1043ardb-dtb):
Hash(es) for Image 8 (ls1043aqds-dtb):
Hash(es) for Image 9 (ls1046ardb-dtb):
Hash(es) for Image 10 (ls1046aqds-dtb):
Hash(es) for Image 11 (ls1046afrwy-dtb):
Hash(es) for Image 12 (ls1088ardb-dtb):
Hash(es) for Image 13 (ls1088aqds-dtb):
Hash(es) for Image 14 (ls2088ardb-dtb):
Hash(es) for Image 15 (ls2088aqds-dtb):
Hash(es) for Image 16 (lx2160ardb-dtb):
Hash(es) for Image 17 (lx2160aqds-dtb):
Hash(es) for Image 18 (lx2162aqds-dtb):
=>现在,问题来了(抱歉介绍了这么久)……
当我实际尝试执行整个操作时,我得到以下信息:
=> bootm 0xC0000000#ls1046afrwy
## Loading kernel from FIT Image at c0000000 ...
Using 'ls1046afrwy' configuration
Trying 'kernel' kernel subimage
Description: ARM64 Kernel
Type: Kernel Image
Compression: gzip compressed
Data Start: 0xc00000d0
Data Size: 15187129 Bytes = 14.5 MiB
Architecture: AArch64
OS: Linux
Load Address: 0x84080000
Entry Point: 0x84080000
Verifying Hash Integrity ... OK
## Loading ramdisk from FIT Image at c0000000 ...
Using 'ls1046afrwy' configuration
Trying 'initrd' ramdisk subimage
Description: initrd for arm64
Type: RAMDisk Image
Compression: uncompressed
Data Start: 0xc0e7be38
Data Size: 171981256 Bytes = 164 MiB
Architecture: AArch64
OS: Linux
Load Address: 0x00000000
Entry Point: 0x00000000
Verifying Hash Integrity ... OK
## Loading fdt from FIT Image at c0000000 ...
Using 'ls1046afrwy' configuration
Trying 'ls1046afrwy-dtb' fdt subimage
Description: ls1046afrwy-dtb
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0xcb2c450c
Data Size: 38901 Bytes = 38 KiB
Architecture: AArch64
Load Address: 0x90000000
Verifying Hash Integrity ... OK
Loading fdt from 0xcb2c450c to 0x90000000
Booting using the fdt blob at 0x90000000
Uncompressing Kernel Image
ERROR: Failed to allocate 0xa4039c8 bytes below 0x90000000.
ramdisk - allocation error
bootm - boot application image from memory
Usage:
bootm [addr [arg ...]]
- boot application image stored in memory
passing arguments 'arg ...'; when booting a Linux kernel,
'arg' can be the address of an initrd image
When booting a Linux kernel which requires a flat device-tree
a third argument is required which is the address of the
device-tree blob. To boot that kernel without an initrd image,
use a '-' for the second argument. If you do not pass a third
a bd_info struct will be passed instead
For the new multi component uImage format (FIT) addresses
must be extended to include component or configuration unit name:
addr:
- direct component image specification
addr# - configuration specification
Use iminfo command to get the list of existing component
images and configurations.
Sub-commands to do part of the bootm sequence. The sub-commands must be
issued in the order below (it's ok to not issue all sub-commands):
start [addr [arg ...]]
loados - load OS image
ramdisk - relocate initrd, set env initrd_start/initrd_end
fdt - relocate flat device tree
cmdline - OS specific command line processing/setup
bdt - OS specific bd_info processing
prep - OS specific prep before relocation or go
go - start OS
=>
我可以使用一些帮助来弄清楚这里发生了什么......
有什么建议么?