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.

[参考译文] AM6421:eMMC 引导失败

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1661917/am6421-emmc-boot-failure

器件型号: AM6421

您好、

 

     我们已将器件配置为 eMMC 引导模式。

       已按如下方式在 am64x_evm.h 中完成更改

#define CONFIG_EXTRA_ENV_SETTINGS \
  “bootenvfile=uEnv.txt\0“\
  “importbootenv=load mmc 0:1 ${loadaddr}${bootenvfile};env import -t ${loadaddr}${filesize}\0“\
  “kernel_addr_r=0x82000000\0“\
  “FDT_addr_r=0x83000000\0“\
  “bootargs=console=ttyS2115200n8 root=/dev/mmcblk0p2 rw rootwait\0“\
  “bootcmd_ti_mc=mmc dev 0;“\
    “fatload mmc 1 ${kernel_addr_r}映像;“\
    “fatload mmc 1 ${fdt_addr_r}am64xx-evm.dtb;“\
    “booti ${kernel_addr_r}-${FDT_addr_r}\0“\
  “envboot=run bootcmd_ti_mc\0“

 

完成 am64x.env 中的 chages、如下所示

BOOT=MMC
mmcdev=0
Bootpart=0:1
bootdir=/boot

 

构建 tiboot3.bin、tispl.bin 和 ubot.img.并加载到 eMMC 引导 0 分区。

我们得到了 belwo 错误。 且 电路板无法启动。

emmc_bootlog.txt 

 

如果需要进行任何其他更改、请告知。

 

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

    发出“boot“@u-boot 提示符时、输出是什么?
    此致、
    - Hong

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

    Hong Hong:

          感谢您的回答。

    以下是 u-boot 提示符下发出“boot“命令时的日志。

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

    我将在 AM64x EVM 上连接一个正常运行的 eMMC 引导日志和 AM64x Linux SDK 12.0.0.7.4。
    - u-boot 二进制文件刷写到 eMMC 引导分区
    - ROOT_FS 刷写到 eMMC UDA 分区
    -使用 SDK 的默认引导参数
    -“setenv mmcdev 0“和“setenv bootpart 0“需要在发出“boot“@u-boot 提示符之前运行

    此致、
    - Hong

    e2e.ti.com/.../5775.am64_5F00_12.0.0.7.4_5F00_emmc_5F00_boot_5F00_full.log

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

    Hong Hong:

         感谢您的回答。

       我们将使用 Processor SDK RT-Linux for AM64x 版本:11.01.05.03。

         

       我们如何在 uboot 源代码中永久生成 eMMC env。

        我们做了如下更改

    已 按如下方式在 am64x_evm.h 中完成更改

    #define CONFIG_EXTRA_ENV_SETTINGS \
      “bootenvfile=uEnv.txt\0“\
      “importbootenv=load mmc 0:1 ${loadaddr}${bootenvfile};env import -t ${loadaddr}${filesize}\0“\
      “kernel_addr_r=0x82000000\0“\
      “FDT_addr_r=0x83000000\0“\
      “bootargs=console=ttyS2115200n8 root=/dev/mmcblk0p2 rw rootwait\0“\
      “bootcmd_ti_mc=mmc dev 0;“\
        “fatload mmc 1 ${kernel_addr_r}映像;“\
        “fatload mmc 1 ${fdt_addr_r}am64xx-evm.dtb;“\
        “booti ${kernel_addr_r}-${FDT_addr_r}\0“\
      “envboot=run bootcmd_ti_mc\0“

     

    完成 am64x.env 中的 chages 、如下所示

    BOOT=MMC
    mmcdev=0
    Bootpart=0:1
    bootdir=/boot

     这是在 sdk11 中使永久从 eMMC.without 每次在 uboot 中给出命令的正确方式吗?

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

    我将连接 u-boot 补丁以从 eMMC UDA 加载内核/rootfs。
    -使用补丁重新编译 u-boot、并将 u-boot 二进制文件刷写到 eMMC 引导分区。

    此致、
    - Hong

    e2e.ti.com/.../am64_5F00_emmc_5F00_boot.patch

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

    Hong Hong:

      我们已应用如下所示的 am64x.env 文件中给出的补丁

     boot_targets=mmc1 mmc0 USB PXE DHCP
     BOOT=MMC
    -mmcdev=1
    -bootpart=1:2
    +mmcdev=0
    +bootpart=0
     bootdir=/boot
     Rd_spec =-
     

    还在 am64x_evm.h 中添加了以下内容

    #define CONFIG_EXTRA_ENV_SETTINGS \
    “bootcmd_ti_mc=mmc dev 0;fatload mmc 0 ${kernel_addr_r}Image;“\
    “fatload mmc 0 ${fdt_addr_r}k3-am64x-evm.dtb;“\
    “booti ${kernel_addr_r}-${FDT_addr_r}\0“\
    “envboot=run bootcmd_ti_mc\0“

    还 在 am64x_evm_a53_defconfig 中添加了 belwo

    CONFIG_BOOTCOMMAND =“运行 envboot“

    和已经编译了 Uboot 并将 tispl.bin、tiboot3.bin.u-boot.img 复制到 mm0 boot0 分区。

    下面是我们获得的日志。

    [20650.06h.53m.01S.258] U-Boot SPL 2025.01-gd2a72467939e-Dirty (Jul 16 2026 - 12:01:12 +0530)
    [20650.06h.53m.01S.283]在冷启动时重置以解决错误 ErrataID:i2331
    [20650.06h.53m.01S.283]如果是 UART/DFU 引导、请重新发送 tiboot3.bin
    [20650.06h.53m.01S.283]正在重置...
    [20650.06h.53m.01S.479]  
    [20650.06h.53m.01S.479] U-Boot SPL 2025.01-gd2a72467939e-Dirty (Jul 16 2026 - 12:01:12 +0530)
    [20650.06h.53m.01S.503] SYSFW ABI:4.0(固件版本 0x000b '11.1.2--v11.01.02(花哨 RAT)')
    [20650.06h.53m.01S.503] EEPROM 在 0x50 时不可用、尝试在 0x51 读取
    [20650.06h.53m.01S.503]在 0x51 处读取板载 EEPROM 失败–19
    [20650.06h.53m.01S.544] SPL 初始堆栈使用量:13440 字节
    [20650.06h.53m.01S.576]尝试从 MMC1 引导
    [20650.06h.53m.01S.669]已通过身份验证
    [20650.06h.53m.01S.684]已通过身份验证
    [20650.06h.53m.01S.753]从无处装载环境... 好的
    [20650.06h.53m.01S.753]不支持来自器件 9 的 init_env!
    [20650.06h.53m.01S.766]已通过身份验证
    [20650.06h.53m.01S.784]已通过身份验证
    [20650.06h.53m.01S.784]在 ARM64 内核上启动 ATF……
    [20650.06h.53m.01S.784]  
    [20650.06h.53m.01S.794]注意 :BL31:v2.13.0(发行版):v2.13.0-240-gd90bb650fe-dirty
    [20650.06h.53m.01S.794]注意 : BL31:建造:21:37:18, 2025 年 6 月 23 日
    [20650.06h.53m.01S.848] I/O TC:  
    [20650.06h.53m.01S.872] I/UTC:OP-TEE 版本:4.6.0-DEV (gcc 版本 13.4.0 (GCC))#1 周五 4 月 25 日 11:17:53 TC 2025 Aarch64
    [20650.06h.53m.01S.872] I/OP-TEE:警告:此 TC 配置可能不安全!
    [20650.06h.53m.01S.872] I/O:TC:警告:请查看 optee.readthedocs.io/.../ porting_guidelines.html
    [20650.06h.53m.01S.884] I/O:主 TC 初始化
    [20650.06h.53m.01S.884] I/GIC:未提供 TC 再分配器基地址
    [20650.06h.53m.01S.884] I/GIC:假定 TC 组状态和修饰符为默认值
    [20650.06h.53m.01S.891] I/SYSFW:TC ABI:4.0(固件版本 0x000b '11.1.2--v11.01.02(花哨 RAT)')
    [20650.06h.53m.01S.894] I/O:已激活 TC 设备
    [20650.06h.53m.01S.904] I/TRNG:已为 TC 设备启用防火墙
    [20650.06h.53m.01S.904] I/TRNG:TC 已初始化
    [20650.06h.53m.01S.904] I/UL:TC 驱动程序已初始化
    [20650.06h.53m.01S.914] I/O:TC 已初始化
    [20650.06h.53m.01S.914] I/O:主 TC 切换至正常的世界引导
    [20650.06h.53m.02s.069]  
    [20650.06h.53m.02s.069] U-Boot SPL 2025.01-gd2a72467939e-Dirty (Jul 16 2026 - 12:01:29 +0530)
    [20650.06h.53m.02s.069] SYSFW ABI:4.0(固件版本 0x000b '11.1.2--v11.01.02(花哨 RAT)')
    [20650.06h.53m.02s.069] EEPROM 在 0x50 时不可用、尝试在 0x51 读取
    [20650.06h.53m.02s.069]在 0x51 处读取板载 EEPROM 失败–19
    [20650.06h.53m.02s.112]尝试从 MMC1 引导
    [20650.06h.53m.02s.272]已通过身份验证
    [20650.06h.53m.02s.967]已通过身份验证
    [20650.06h.53m.03s.905]  
    [20650.06h.53m.03s.905]  
    [20650.06h.53m.03s.905] U-Boot 2025.01-gd2a72467939e-dirty (Jul 16 2026 - 12:01:29 +0530)
    [20650.06h.53m.03s.905]  
    [20650.06h.53m.03s.905] SoC:  AM64X SR2.0 FS
    [20650.06h.53m.03s.905]型号:Texas Instruments AM642 EVM
    [20650.06h.53m.03s.905] EEPROM 在 0x50 时不可用、尝试在 0x51 读取
    [20650.06h.53m.03s.905]在 0x51 处读取板载 EEPROM 失败–19
    [20650.06h.53m.03s.905] DRAM: 1 GB
    [20650.06h.53m.05s.153]内核: 64 个器件、23 个类、器件树:单独
    [20650.06h.53m.05s.153] MMC:  MMC@fa10000: 0, MMC@fa00000: 1.
    [20650.06h.53m.05s.171]无处装载环境 好的
    [20650.06h.53m.05s.184]在:  串行@2800000 中
    [20650.06h.53m.05s.184]输出:  串行@2800000
    [20650.06h.53m.05s.184]错误:  串行@2800000
    [20650.06h.53m.05s.184] EEPROM 在 0x50 时不可用、尝试在 0x51 读取
    [20650.06h.53m.05s.184]在 0x51 处读取板载 EEPROM 失败–19
    [20650.06h.53m.05s.185]网络:  未找到以太网。
    [20650.06h.53m.05s.192]##错误:未定义“envboot“

    以下是在 uboot 提示符下执行 pritnenv 时的日志。

    =>打印
    [20650.06h.57m.18s.301] arch=arm
    [20650.06h.57m.18s.301]波特率=115200
    [20650.06h.57m.18s.301]板= am64x
    [20650.06h.57m.18s.301] board_name = am64x_gpevm
    [20650.06h.57m.18s.301] board_rev=unknown
    [20650.06h.57m.18s.301] board_serial=unknown
    [20650.06h.57m.18s.301] board_software_revision=unknown
    [20650.06h.57m.18s.301] bootcmd=运行 envboot
    [20650.06h.57m.18s.301] bootdelay=2.
    [20650.06h.57m.18s.301] CPU=ARMv8.
    [20650.06h.57m.18s.301] envboot=运行 bootcmd_ti_mcm
    [20650.06h.57m.18s.301] fdtcontroladdr=bde9e9d0
    [20650.06h.57m.18s.301] fdtfile=ti/k3-am642-evm.dtb
    [20650.06h.57m.18s.324] findfdt=echo 警告: fdtfile 已经设置。 停止在脚本中使用 findfdt
    [20650.06h.57m.18s.324] loadaddr=0x82000000
    [20650.06h.57m.18s.324] NAME_FDT=ti/k3-am642-evm.dtb
    [20650.06h.57m.18s.324] serial#=000000000000
    [20650.06h.57m.18s.324] soc = k3
    [20650.06h.57m.18s.324] stderr=serial@2800000
    [20650.06h.57m.18s.324] stdin =串行@2800000
    [20650.06h.57m.18s.324] stdout=serial@2800000
    [20650.06h.57m.18s.324] vendor=ti
    [20650.06h.57m.18s.324]
    [20650.06h.57m.18s.324]环境大小:478/131068 字节
    [20650.06h.57m.18s.326]=>打印 envboot
    [20650.06h.58m.11s.095] envboot=run bootcmd_ti_mcm
    [20650.06h.58m.11s.095]=>打印 bootcmd_ti_mcm
    [20650.06h.58m.26s.551]##错误:未定义“bootcmd_ti_mc“
    [20650.06h.58m.26s.551]=> printenv envboot
    [20650.07h.04M.14s.484] envboot=运行 bootcmd_ti_mcs
    [20650.07h.04M.14s.484]=> printenv bootcmd_ti_mcm
    [20650.07h.04M.37s.826]##错误:未定义“bootcmd_ti_mc“  

      要执行的任何其他设置请指定。

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

    我在 u-boot 中所做的唯一更改是我上次回复中的补丁、无需在 u-boot 中进行其他更改。
    我从 eMMC 引导连接日志、其中“mmcdev=0 “和“bootpart=0 “按如下所示进行了更新。

    从日志中的“printenv“开始、u-boot 环境变量更改似乎出错。

    此致、
    - Hong

    e2e.ti.com/.../am64_5F00_12.0.0.7.4_5F00_emmc_5F00_boot_5F00_full_5F00_pri.log