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.

[参考译文] TMDS64EVM:提供通过 DFU 引导在 EMMC 中刷写映像的步骤

Guru**** 2393725 points
Other Parts Discussed in Thread: AM6442

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1474692/tmds64evm-provide-steps-to-flash-images-in-emmc-via-dfu-boot

器件型号:TMDS64EVM
主题中讨论的其他器件:AM6442

工具与软件:

您好!

我正在使用 AM64x 处理器 SDK "10_01_10_04"版本和 EVM 套件 TMDS64EVM

根据页面 https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/10_01_10_04/exports/docs/linux/Foundational_Components 450.U-Boot/UG-DFU.html、 DFU 已启用、无需在 u-boot 中进行任何更改。 我们可以对 DFU 使用相同的 u-boot、也可以将相同的 u-boot 存储在 EMMC 中。 是这样吗?

实际上、还有其他线程会让我感到困惑。
https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1346143/tmds64evm-flashing-linux-image-on-emmc-via-usb-dfu
https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1127618/faq-sk-am62-how-to-flash-emmc-using-usb-dfu-on-am62x-sk-e2

此主题中提到"必须在刷写到 eMMC 之前构建两组映像、一组用于 USB-DFU 引导、另一组用于刷写到 eMMC (eMMC 引导)。" 是这样吗? 如果需要、您能否提供要在 u-boot 中为 USB DFU 引导执行的更改的最终列表。

此外、上面的线程提到手动输入一些命令来执行 EMMC 分区和所有操作。 所有这些都让人困惑。 请分享执行 USB-DFU 引导的最终更改和命令。

此致、

Rahul Shah

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

    你好、Rahul。

    要使用 USB-DFU 引导 u-boot、您可以按照以下指南操作: https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/10_01_10_04/exports/docs/linux/Foundational_Components U247-Boot/UG-DFU.html

    您更正了 AM64x 的默认 u-boot 中已启用的 DFU、该主题: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1127618/faq-sk-am62-how-to-flash-emmc-using-usb-dfu-on-am62x-sk-e2 适用于 AM62x、因此该过程中可能存在一些偏差。

    引导 u-boot 提示符后、您可以使用本指南进行刷写以及配置 eMMC 来引导 Linux: https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/10_01_10_04/exports/docs/linux/Foundational_Components U428-Boot/UG-Memory-K3.html 如果仍有一些混乱、请告知我。

    此致、

    开会。

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

    大家好、

    感谢您的响应。

    因此、无需在引导加载程序中进行更改。 相同的引导加载程序适用于 DFU 以及 EMMC 中的闪存。 不需要两份? 对吧?

    另外、使用最新的 SDK 10_01_10_04、我看不到 DFU_FLASH 目录 目标值 包含(dfu_flash.py)文件以帮助通过 DFU 进行刷写的目录。 可以从旧目录中使用它吗? 从最新的 SDK 中丢失该目录是什么原因呢?

    此致、

    Sharad

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    因此无需在引导加载程序中进行更改。 相同的引导加载程序适用于 DFU 以及 EMMC 中的闪存。 不需要两份? 对吗?

    正确。

    此外、使用最新的 SDK 10_01_10_04、我看不到 DFU_FLASH 目录 目标值 包含(dfu_flash.py)文件以帮助通过 DFU 进行刷写的目录。

    最新的 SDK 中提供了 snagfactory 工具来支持 USB_DFU 上的刷写: https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/10_01_10_04/exports/docs/linux/Foundational_Components Tools/Flash_via_Fastboot.html#flash-via-fastboot

    此致

    开会。

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

    大家好、

    我可以通过 USB DFU 刷写 uboot 和 rootfs、但将引导模式更改为 EMMC u-boot 后、不会启动并卡住在以下日志中:

    U-Boot SPL 2024.04-00007-gdbe96e1dc15-dirty (Mar 11 2025 - 17:30:52 +0530)
    Resetting on cold boot to workaround ErrataID:i2331
    Please resend tiboot3.bin in case of UART/DFU boot
    resetting ...
    
    

    我已经遵循了以下步骤:

    1.将引导模式设置为仅 USB DFU 模式。
    2.使用以下命令通过 USB-DFU 刷写引导加载程序:
       # snagrecover -s am6442 -f fw.yaml

    3.这将引导 U-boot 并能够在 u-boot 上停止。

    4.在 U-boot 提示符下检测到 EMMC:
     

    => mmc list
    mmc@fa10000: 0 (eMMC)
    mmc@fa00000: 1
    => setenv dfu_alt_info ${dfu_alt_info_emmc}
    => dfu 0 mmc 0
    

    5.之后使用以下命令在 EMMC 中写入 u-boot 和 rootfs :

    * sudo dfu-util -a tiboot3.bin.raw -D <your_tiboot3.bin>
    * sudo dfu-util -a tispl.bin.raw -D <your_tispl.bin>
    * sudo dfu-util -a u-boot.img.raw -D <your_u-boot.img>
    * sudo dfu-util -a rootfs -D <your_rootfs.ext4>


    6.使用以下命令授予 ROM 对引导分区的访问权限:
     => mmc partconf 0 1 1 1
     => mmc bootbus 0 2 0 0
    

    7.重新启动板并将引导模式设置为 EMMC。

    8.之后 u-boot 不引导,只能在控制台上看到以下日志:

    U-Boot SPL 2024.04-00007-gdbe96e1dc15-dirty (Mar 11 2025 - 17:30:52 +0530)
    Resetting on cold boot to workaround ErrataID:i2331
    Please resend tiboot3.bin in case of UART/DFU boot
    resetting ...

    如果缺少任何步骤、请告诉我。

    此致、

    Rahul Shah

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

    尊敬的 Rahul:

    [报价 userid="637961" url="~/support/processors-group/processors/f/processors-forum/1474692/tmds64evm-provide-steps-to-flash-images-in-emmc-via-dfu-boot/5704239 #5704239"]我能够通过 USB DFU 刷写 uboot 和 rootfs、但在将引导模式更改为 EMMC u-boot 后、不会启动并卡住以下日志:[/QUOT]

    如日志中所述、这里触发了复位、这是勘误表 i23331的权变措施的一部分。 此后、您必须重新发送 tiboot3.bin 并再次引导器件。

    此致、

    开会。

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

    大家好、

    因此、我已经验证了代码、并且在最新的 SDK 中、此勘误表已经得到处理、SDK 10_01_10_04中已经存在以下补丁。 https://patchwork.ozlabs.org/project/uboot/patch/20230406075936.2590125-1-vigneshr@ti.com/#3092222

    因此、切换到 EMMC 引导时会发现 u-boot 从 EMMC 开始工作、并且在 POR 后、uboot 首次开始工作、由于会处理勘误表2331、 DO_RESET 添加了逻辑、所以它将尝试复位。 但在调试后发现 uboot 到达" TI_sci_cmd_core_reboot "函数并发送" TI_SCI_MSG_SYS_RESET " msg to SCI controllers、但它不会按照下面的说明复位和卡住。显示 SCI 控制器不会复位。

    U-Boot SPL 2024.04-00007-gdbe96e1dc15-dirty (Mar 11 2025 - 17:30:52 +0530)
    Resetting on cold boot to workaround ErrataID:i2331
    Please resend tiboot3.bin in case of UART/DFU boot
    resetting ...


    从硬件角度:

    我们正在使用中的定制硬件设计、EMMC 器件型号是 金斯顿 EMMC08G-WV28-01J10。

    在我们的设计中、我们为 eMMC 复位输入提供了 MCU_PORz 信号、在 AM64 EVM 板中、没有使用其他 SoC GPIO 手动复位 eMMC、而在与 RESETSTATz 信号进行与运算之后、使用 GPIO_eMMC_RSTn 复位 eMMC。

    我们在这里遗漏了什么吗? 我已在此处附上了参考设计和我们的定制设计快照、它们均为 zip 文件、用于参考。

    e2e.ti.com/.../AM46x-EVM-Reference-design.zipe2e.ti.com/.../Custom-design.zip

    您能帮助调试这个问题吗? 另一项发现是、如果我们禁用2331补丁、它会继续工作、但之后它无法正确读取 EMMC、我认为这是因为如果不发生复位、 我们需要首先解决2331的重置问题、这样复位可能会起作用。

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

    您好、Sharad、

    请参阅此常见问题解答:

    (+)[常见问题解答] AM62x:如何检查和配置 eMMC 闪存 RST_N 信号以支持在 AM62x-SK E2上通过 eMMC 引导进行 WARM_RESET -处理器论坛-处理器- TI E2E 支持论坛

    这也适用于您的 eMMC。

    此致、

    开会。

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

    大家好、

    因此、在本例中、我们没有从 EMMC 引导中获得 uboot 提示。 在执行上述步骤6 (ROM 访问)之后、 切换到 EMMC 引导之前、我们是否需要从 USB DFU 模式执行"mmc rst-function 0 1"?

    已尝试执行该操作、但仍无法通过 EMMC 执行重置、并且仍然无法正常工作、如前所述。

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

    您好、Sharad、

    我们是否需要
    后从 USB DFU 模式执行"mmc rst-function 0" 1

    正确、请注意、这是一个一次性写入字段。

    这里我有点困惑、您在先前响应中附加的日志似乎是针对 USB-DFU 引导的、要解决此问题、您只需使用 dfu-util 再次发送 tiboot3.bin、并且在您可以继续引导 tispl.bin 和 u-boot.img 后、您应该能够看到 u-boot 提示符。 请确认您在此处之前是否能够使用 USB-DFU 到达?

    在 u-boot 中后、您就可以使用我共享的链接中提到的步骤刷写 eMMC、之后您可以切换到 eMMC 引导。

    因此、在我们的案例中、我们没有从 EMMC boot
    收到 uboot 提示

    如果您卡在 eMMC 引导中、请共享相同的引导日志、您之前共享的日志用于 USB-DFU 引导。

    此致、

    开会。

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

    大家好、

    以下日志来自 EMMC 引导模式和那里的残桩。

    U-Boot SPL 2024.04-00007-gdbe96e1dc15-dirty (Mar 11 2025 - 17:30:52 +0530)
    Resetting on cold boot to workaround ErrataID:i2331
    Please resend tiboot3.bin in case of UART/DFU boot
    resetting ...

    请检查我的完整步骤(如下所示)、该步骤已添加在先前注释中。

    我遵循了以下步骤:

    1. 将引导模式设置为仅 USB DFU 模式。

    2. 通过 USB-DFU 刷写引导加载程序使用以下命令、这将通过 USB DFU 发送所有三个二进制文件(tiboot3.bin、tispl.bin、uboot.img)。

    snagrecover -s am6442 -f fw.yaml

    3. 这将引导 U-boot 并能够在 u-boot 上停止。

    4. 在 U-boot 提示符下检测到 EMMC:

    => mmc list
    mmc@fa10000: 0 (eMMC)
    mmc@fa00000: 1
    => setenv dfu_alt_info ${dfu_alt_info_emmc}
    => dfu 0 mmc 0

    5. 之后使用以下命令在 EMMC 中写入 u-boot 和 rootfs:

    sudo dfu-util -a tiboot3.bin.raw -D <your_tiboot3.bin>
    sudo dfu-util -a tispl.bin.raw -D <your_tispl.bin>
    sudo dfu-util -a u-boot.img.raw -D <your_u-boot.img>
    sudo dfu-util -a rootfs -D <your_rootfs.ext4>
    

    6. 使用以下命令授予 ROM 对引导分区的访问权限

    => mmc partconf 0 1 1 1
    => mmc bootbus 0 2 0 0
    => mmc rst-function 0 1 

    7. 关闭 电路板电源并将引导模式设置为 EMMC。

    8.接通电路板电源。

    9.在控制台上、打印以下日志、然后卡住

    U-Boot SPL 2024.04-00007-gdbe96e1dc15-dirty (Mar 11 2025 - 17:30:52 +0530)
    Resetting on cold boot to workaround ErrataID:i2331
    Please resend tiboot3.bin in case of UART/DFU boot
    resetting ...

    根据您的设置、它处于 USB DFU 模式。 但我将对开发板进行复位并看到以下日志、那么这是怎么可能的、因为在 USB DFU 模式下复位后 RAM 中没有代码。 复位后、我可以看到上面的日志、这意味着它从 EMMC 运行、并且由于未从 EMMC 执行冷启动而卡在那里。

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

    大家好、

    任何更新、我们现在都卡住了。

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

    您好、Sharad、

    您是否可以使用.yaml 文件中的以下配置重试:

    tiboot3:
      path: board-support/prebuilt-images/am64xx-evm/tiboot3.bin
    tiboot3:
      path: board-support/prebuilt-images/am64xx-evm/tiboot3.bin
    tispl:
      path: board-support/prebuilt-images/am64xx-evm/tispl.bin
    u-boot:
      path: board-support/prebuilt-images/am64xx-evm/u-boot.img

    由于您需要重新刷写 tiboot3.bin 以进行 DFU 引导、因此您应该在配置文件中添加两次它来进行相同的操作。

    复位后、我可以看到上面的日志、这意味着它是从 EMMC 运行的、并且由于未从 EMMC 执行冷启动而滞留在该处。

    据我所知、您将无法通过 eMMC 启动来获取这些日志。 日志仍然仅来自 DFU 引导、我怀疑由于您没有重新刷新 tiboot3.bin、它卡在这些日志中、没有进一步移动。 请使用上述 YAML 文件再次尝试相同的过程。

    此致、

    开会。

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

    大家好、

    我们使用以下引导模式设置"主引导模式= EMMC"和"备用引导模式=无"

    B[7-0]   :01001011   
    b[15-8 ] : 00000010

    在定制硬件中、端口 mmc0端口上仅连接 EMMC。 我们的硬件中没有可用的 SD 卡。

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

    大家好、

    任何与此相关的更新。

    谢谢

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

    您好!

    您能否应用以下补丁并共享启动日志?

    diff --git a/configs/am64x_evm_a53_defconfig b/configs/am64x_evm_a53_defconfig
    index 4c2f4c20b4b..9a512da7dbb 100644
    --- a/configs/am64x_evm_a53_defconfig
    +++ b/configs/am64x_evm_a53_defconfig
    @@ -222,3 +222,6 @@ CONFIG_SYS_MAX_NAND_DEVICE=1
     CONFIG_SPL_MTD_SUPPORT=y
     CONFIG_SYS_NAND_U_BOOT_LOCATIONS=y
     CONFIG_SYS_NAND_U_BOOT_OFFS=0x600000
    +
    +CONFIG_MMC_TRACE=y
    +
    

    谢谢!

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

    Prashant、您好!

    请查找随附的日志文件。

    USB_DFU_with_MMC_trace ->这包含 UDB DFU 引导加载程序的刷写和运行日志


    Writing_uboot_in_eMMC  ->此文件包含从 USB-DFU 模式在 EMMC 中写入 uboot 的日志

    set_boot0_hw_partitton_for_boot ->日志包含 boot0硬件分区的设置


    eMMC_boot_logs ->此日志文件包含 EMMC 引导日志

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

    您好!

    由于您在 TI EVM 上尝试了所有这些操作、您能给我分享这些 U-Boot 映像以在本地尝试吗?

    谢谢!

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

    Prashant、您好!

    否、我们正在开发基于 AM64 GP EVM 的定制硬件设计。

    日志是否有用? 如果需要添加任何其他调试器来调试此问题、请告诉我。

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

    同样、如前所述、

    我们正在使用中的定制硬件设计、EMMC 器件型号是 金斯顿 EMMC08G-WV28-01J10。

    在我们的设计中、我们为 eMMC 复位输入提供了 MCU_PORz 信号、在 AM64 EVM 板中、没有使用其他 SoC GPIO 手动复位 eMMC、而在与 RESETSTATz 信号进行与运算之后、使用 GPIO_eMMC_RSTn 复位 eMMC。

    我们在这里遗漏了什么吗? 我已在此处附上了参考设计和我们的定制设计快照、它们均为 zip 文件、用于参考。

    e2e.ti.com/.../AM46x-EVM-Reference-design.zipe2e.ti.com/.../Custom-design.zip

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

    Prashant、您好!

    是否有任何更新?

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

    Prashant、您好!

    您能否为解决此问题提供任何指导或指导。

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

    您好!

    您能否共享您已经刷写并启动的 U-Boot 映像?

    谢谢!