NXP MCU 技术论坛
直播中

百合子

8年用户 915经验值
擅长:控制/MCU
私信 关注
[问答]

如何在LS1046a上使用FIT图像?

大家好,
我在 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 description: 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
=>
我可以使用一些帮助来弄清楚这里发生了什么......
有什么建议么?

更多回帖

发帖
×
20
完善资料,
赚取积分