This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM6442:eMMC 引导:加载/boot/fitImage 失败

Guru**** 2393725 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1488066/am6442-emmc-boot-failed-to-load-boot-fitimage

器件型号:AM6442

工具与软件:

我已经通过 dd 命令将 am64xx-a5.rootfs.wic 映像从 SD 卡复制到 eMMC、并检查了 MMC 分区、它正在正确显示所有分区。

之后按照 https://software-dl.ti.com/processor-sdk-sitara/esd/am64x/latest/exports/docs/linux/中的步骤 Foundational_Components U302-Boot/UG-Memory.html ,下面的命令

setenv mmcdv 0
=> setenv bootpart 0 =>
引导 

执行上述命令后、显示以下错误

无法加载"/boot/fitImage "
bootm 命令的映像格式错误
错误:无法获取内核映像!

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    如果您刷写了 WIC 映像、则 Linux Rootfs 位于第二个分区中、因此您必须刷写以下命令:

    => setenv mmcdev 0
    => setenv bootpart 0:2
    => boot

    BR、Prashant

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Prashant:

    感谢您提供解决方案。 它用于加载内核映像、dtb 和 rootfs。

    在下一步中、我需要了解使用相同的  am64xx-a5.rootfs.wic 映像从 eMMC 引导的步骤。

    需要在引导参数或引导命令中更改哪些内容才能从 eMMC 引导、因为如果我们移除 SD 卡、它将无法引导。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    从 eMMC 引导时需要对引导参数或引导命令中的哪些内容进行更改、因为如果移除 SD 卡、则无法引导。

    请分享日志以更好地了解问题。

    谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!  

    请按以下方式查找日志:  

    我想了解 为什么它没有显示在尝试从 eMMC 和使用引导参数的日志中

     CONFIG_BOOTCOMMAND="run args_mmc;run get_fit_mmc;bootm ${addr_fit}"

    文件中  

    引导=MMC
    mmcdev=0
    bootpart=0:2
    bootdir=/boot
    RD_SPEC=-

     

    fdt_addr_r=0x8a000000
    fdtaddr=0x8a000000
    fdtoverlay _addr_r=0x8b000000

    电路板启动日志

    SoC:AM64X SR2.0 HS-AM64X FS
    模型:德州仪器(TI) AM642 EVM
    EEPROM 在0x56处不可用、尝试在0x57处读取
    在0x57读取板载 EEPROM 失败-1
    DRAM:1GiB
    内核:67个器件、29个 uClasses、devicetre:单独
    MMC:MMC@fa10000:0、MMC@fa00000:1
    正在从 FAT 加载环境... 好的
    输入:串行@2810000
    输出:串行@2810000
    ERR:串行@2810000
    EEPROM 在0x56处不可用、尝试在0x57处读取
    在0x57读取板载 EEPROM 失败-1
    net:eth0:以太网@8000000port@1
    按任意键以停止自动引导:0
    =>
    =>
    =>
    =>引导
    在328ms (21MiB/s)内读取7238273字节
    ##从 FIT Image 载入内核90000000 ...
    使用'conf-abb_k3-am642-a5-a.dtb'配置
    正在验证散列完整性... SHA512,rsa4096:custMpk+确定
    正在尝试"kernel-1"内核子映像
    描述:Linux 内核
    键入:Kernel Image
    压缩:gzip 压缩
    数据启动:0x900000bc
    数据大小:7175542字节= 6.8 MIB
    架构:AArch64
    操作系统:Linux
    载入地址:0x81000000
    入口点:0x81000000
    散列算法:SHA512
    哈希值:c76b629f5cc860c888ca34316f442e7a9f491a81d9e26214da6d21420004c5de444fa5033eb31876bde3fd3924950c3a7a3b75e0d11a87d38de05605d529f954
    正在验证散列完整性... SHA512+确定
    ##在90000000 ....
    使用'conf-abb_k3-am642-a5-a.dtb'配置
    正在验证散列完整性... SHA512,rsa4096:custMpk+确定
    正在尝试"FDT-ABB_K3-am642-A5-a.dtb" FDT 子映像
    说明:平展设备树状块
    类型:扁平设备树
    压缩:未压缩
    数据启动:0x906d7f6c
    数据大小:60476字节= 59.1 KiB
    架构:AArch64
    载入地址:0x83000000
    散列算法:SHA512
    散列值:e401b09922152990fa36d088b758d2495d7f36326e8ff74e8f8cccb159aa683043a5e0aeb70d24bacb17c55a7d3f3bc39e34d654a0a84b0db01d00a474cfe
    正在验证散列完整性... SHA512+确定
    将 FDT 从0x906d7f6c 加载到0x83000000
    使用0x83000000处的 FDT blob 进行引导
    工作 FDT 设置为83000000
    取消压缩内核映像
    正在将设备树加载到000000008ffee000,结束000000008ffc3b ...确定
    工作 FDT 设置为8ffee000

    正在启动内核...

    [ 0.000000]在物理 CPU 上引导 Linux 0x0000000000 [0x410fd034]
    [ 0.000000] Linux 版本6.1.69-rt21-g-g (OE-user@OE-host)(AArch64-poky-linux-gcc (GCC) 13.2.0、GNU ld (GNU binutils) 2.42.0.20240202)#1 2月1日 preempt_RT MON SMP 5 21:46:19 UTC 2024年2月
    [ 0.000000]机器模型: ABB A5设备
    [ 0.000000] EFI:找不到 UEFI。
    [ 0.000000]保留内存:在0x00000000a0000000处创建了 DMA 内存池、大小为1 MiB
    [ 0.000000] of:reserved mem:initialized node r5f-dma-memory@a0000000、compatible id shared-dma-pool
    [ 0.000000]保留内存:在0x00000000a0100000处创建了 DMA 内存池、大小为15MiB
    [ 0.000000] of:reserved mem:initialized node r5f-memory@a0100000、compatible id shared-dma-pool
    [ 0.000000]保留内存:在0x00000000a1000000创建了 DMA 内存池、大小为1MiB
    [ 0.000000] of:reserved mem:initialized node r5f-dma-memory@a1000000、compatible id shared-dma-pool
    [ 0.000000]保留内存:在0x00000000a1100000处创建了 DMA 内存池、大小为15MiB
    [ 0.000000] of:reserved mem:initialized node r5f-memory@a1100000、compatible id shared-dma-pool
    [ 0.000000]保留内存:在0x00000000a2000000创建了 DMA 内存池、大小为1MiB
    [ 0.000000] of:reserved mem:initialized node r5f-dma-memory@a2000000、compatible id shared-dma-pool
    [ 0.000000]保留内存:在0x00000000a2100000处创建了 DMA 内存池、大小为15MiB
    [ 0.000000] of:reserved mem:initialized node r5f-memory@a2100000、compatible id shared-dma-pool
    [ 0.000000]保留内存:在0x00000000a3000000创建了 DMA 内存池、大小为1MiB
    [ 0.000000] of:reserved mem:initialized node r5f-dma-memory@a3000000、compatible id shared-dma-pool
    [ 0.000000]保留内存:在0x00000000a3100000创建 DMA 内存池、大小为15MiB
    [ 0.000000] of:reserved mem:initialized node r5f-memory@a3100000、compatible id shared-dma-pool
    [ 0.000000]保留内存:在0x00000000a4000000创建了 DMA 内存池、大小为1MiB
    [ 0.000000] of:reserved mem:initialized node m4F-dma-memory@a4000000、compatible id shared-dma-pool
    [ 0.000000]保留内存:在0x00000000a4100000处创建了 DMA 内存池、大小为15MiB
    [ 0.000000] of:reserved mem:initialized node m4f-memory@a4100000、compatible id shared-dma-pool
    [ 0.000000]区域范围:
    [ 0.000000] DMA [mem 0x0000000080000000-0x00000000bfffff]
    [ 0.000000] dma32空
    [ 0.000000]正常为空
    [ 0.000000]每个节点的可移动区域开始
    [ 0.000000]早期内存节点范围
    [ 0.000000]节点0:[MEM 0x0000000080000000-0x000000009e7fffff]
    [ 0.000000]节点0:[MEM 0x000000009e800000-0x00000000a57fff]
    [ 0.000000]节点0:[MEM 0x00000000a5800000-0x00000000bfffff]
    [ 0.000000] Initmem 设置节点0 [mem 0x00000000800000-0x00000000bfffff]
    [ 0.000000] CMA:在0x00000000bce00000处保留32个 MIB
    [ 0.000000] psci:从 DT 探测导管方法。
    [ 0.000000] psci:在固件中检测到 PSCIv1.1。
    [ 0.000000] psci:使用标准 PSCI v0.2功能 ID
    [ 0.000000] psci:不需要受信任的操作系统迁移
    [ 0.00] psci:SMC 调用约定 v1.4

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我认为这不是与 SD 卡相关的问题。 如果您能够在插入 SD 卡的情况下引导 Linux、请分享这些成功的日志以进行比较。

    请使用"插入->代码"功能附加任何日志。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Prashant:  

    正如您所说的、这不是 SD 卡问题、我的问题是无法从 EMMC (无论是从 UDA 分区还是从 EMMC 引导分区 mmcblk0boot0)引导。

    SoC:   AM64X SR2.0 HS-FS
    Model: Texas Instruments AM642 EVM
    EEPROM not available at 0x56, trying to read at 0x57
    Reading on-board EEPROM at 0x57 failed -1
    DRAM:  1 GiB
    Core:  67 devices, 29 uclasses, devicetree: separate
    MMC:   mmc@fa10000: 0, mmc@fa00000: 1
    Loading Environment from FAT... OK
    In:    serial@2810000
    Out:   serial@2810000
    Err:   serial@2810000
    EEPROM not available at 0x56, trying to read at 0x57
    Reading on-board EEPROM at 0x57 failed -1
    Net:   eth0: ethernet@8000000port@1
    Hit any key to stop autoboot:  0
    =>
    =>
    =>
    => boot
    7238273 bytes read in 328 ms (21 MiB/s)
    ## Loading kernel from FIT Image at 90000000 ...
       Using 'conf-abb_k3-am642-a5-a.dtb' configuration
       Verifying Hash Integrity ... sha512,rsa4096:custMpk+ OK
       Trying 'kernel-1' kernel subimage
         Description:  Linux kernel
         Type:         Kernel Image
         Compression:  gzip compressed
         Data Start:   0x900000bc
         Data Size:    7175542 Bytes = 6.8 MiB
         Architecture: AArch64
         OS:           Linux
         Load Address: 0x81000000
         Entry Point:  0x81000000
         Hash algo:    sha512
         Hash value:   c76b629f5cc860c888ca34316f442e7a9f491a81d9e26214da6d21420004c5de444fa5033eb31876bde3fd3924950c3a7a3b75e0d11a87d38de05605d529f954
       Verifying Hash Integrity ... sha512+ OK
    ## Loading fdt from FIT Image at 90000000 ...
       Using 'conf-abb_k3-am642-a5-a.dtb' configuration
       Verifying Hash Integrity ... sha512,rsa4096:custMpk+ OK
       Trying 'fdt-abb_k3-am642-a5-a.dtb' fdt subimage
         Description:  Flattened Device Tree blob
         Type:         Flat Device Tree
         Compression:  uncompressed
         Data Start:   0x906d7f6c
         Data Size:    60476 Bytes = 59.1 KiB
         Architecture: AArch64
         Load Address: 0x83000000
         Hash algo:    sha512
         Hash value:   e401b09922152990fa36d088b758d2495d7f36326e8ff74e8f8cccb159aa683043a5e0aeb70d24613b17c55a7d3f3bc39e34d654a0a84b0dbbac01d00a474cfe
       Verifying Hash Integrity ... sha512+ OK
       Loading fdt from 0x906d7f6c to 0x83000000
       Booting using the fdt blob at 0x83000000
    Working FDT set to 83000000
       Uncompressing Kernel Image
       Loading Device Tree to 000000008ffee000, end 000000008ffffc3b ... OK
    Working FDT set to 8ffee000
    
    Starting kernel ...
    
    [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    [    0.000000] Linux version 6.1.69-rt21-g-g (oe-user@oe-host) (aarch64-poky-linux-gcc (GCC) 13.2.0, GNU ld (GNU Binutils) 2.42.0.20240202) #1 SMP PREEMPT_RT Mon Feb  5 21:46:19 UTC 2024
    [    0.000000] Machine model: ABB A5 device
    [    0.000000] efi: UEFI not found.
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a0000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a0100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a1000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a1100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a2000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a2100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a3000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a3100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node m4f-dma-memory@a4000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node m4f-memory@a4100000, compatible id shared-dma-pool
    [    0.000000] Zone ranges:
    [    0.000000]   DMA      [mem 0x0000000080000000-0x00000000bfffffff]
    [    0.000000]   DMA32    empty
    [    0.000000]   Normal   empty
    [    0.000000] Movable zone start for each node
    [    0.000000] Early memory node ranges
    [    0.000000]   node   0: [mem 0x0000000080000000-0x000000009e7fffff]
    [    0.000000]   node   0: [mem 0x000000009e800000-0x00000000a57fffff]
    [    0.000000]   node   0: [mem 0x00000000a5800000-0x00000000bfffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000bfffffff]
    [    0.000000] cma: Reserved 32 MiB at 0x00000000bce00000
    [    0.000000] psci: probing for conduit method from DT.
    [    0.000000] psci: PSCIv1.1 detected in firmware.
    [    0.000000] psci: Using standard PSCI v0.2 function IDs
    [    0.000000] psci: Trusted OS migration not required
    [    0.000000] psci: SMC Calling Convention v1.4
    

    一旦我将 bootpins 更改为从 EMMC 引导、然后在没有 SD 卡的情况下重新上电、就 无法引导。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您在 U-Boot 中进行了哪些更改来从 eMMC 自动引导 Linux?

    谢谢!