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.

[参考译文] SK-AM62-LP:请求更快的 eMMC 映像传输方法

Guru**** 2645495 points

Other Parts Discussed in Thread: SK-AM62-LP, AM625

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1584511/sk-am62-lp-request-for-faster-emmc-image-transfer-method

器件型号: SK-AM62-LP
主题中讨论的其他器件: AM625

尊敬的团队:

我们最近使用 SK-AM62-LP 上的 dfu-util 将映像传输到 eMMC、但当前传输 2GB 文件大约需要 10 分钟。

您能否建议一种将映像传输到 eMMC 的更简单、更快速的方法—这种方法经过了理想的生产使用优化、并且只需极少的硬件设置?

谢谢。此致、
Gopal Sharma

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

    尊敬的 Gopal:

    您可以尝试 snagboot: https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/11_01_05_03/exports/docs/linux/Foundational_Components /Tools/Flash_via_Fastboot.html

    此致、

    会面。

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

    尊敬的会议:

    我们是否遵循 snagboot 的所有 DFU 映像准备方法、例如首先为 DFU 实用程序准备映像、然后为 eMMC 使用第二个映像、并在 Rules.make 文件中使用 am62x_r5_usbmsc.config、或为 snagboot 构建映像使用 am62x_a53_usbdfu.config。 如果 AM62 snagboot 或 snagflash 可用任何详细方法、请分享。

    此致、
    Gopal Sharma

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

    尊敬的 Gopal:

    所以,上面我分享的链接几乎涵盖了所有步骤:

    1.您必须使用 Rules.make 文件中的以下更改构建恢复/引导二进制文件:

    2.对于刷写二进制文件,您可以使用要刷写到 eMMC 的二进制文件,这也可以是预编译的二进制文件。  

    此致、

    会面。

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

    尊敬的会议:

    我们对 Rules.make 进行了更改  



    然后构建 U-Boot 映像
    $ make u-boot_clean
    $ make u-boot
    $ make u-boot_stage

    之后、我们将以下文件复制到一个单独的目录中


    当我们运行 snagflash 时、会生成以下错误

     snagflash -P dfu -p 0451:6165 -D 2:tiboot3.bin
    2025-11-11 12:11:15,399 [INFO] Running snagflash using protocol dfu
    2025-11-11 12:11:15,408 [INFO] Downloading tiboot3.bin to altsetting 2...
    2025-11-11 12:11:15,408 [INFO] Found DFU Functional descriptor: wTransferSize = 512
    Traceback (most recent call last):
      File "/home/gopal/.local/bin/snagflash", line 8, in <module>
        sys.exit(cli())
      File "/home/gopal/.local/lib/python3.10/site-packages/snagflash/cli.py", line 159, in cli
        dfu_cli(args)
      File "/home/gopal/.local/lib/python3.10/site-packages/snagflash/dfu.py", line 76, in dfu_cli
        dfu_download(dev, altsetting, path)
      File "/home/gopal/.local/lib/python3.10/site-packages/snagflash/dfu.py", line 50, in dfu_download
        dfu_cmd.download_and_run(blob, altsetting, 0, size, show_progress=True)
      File "/home/gopal/.local/lib/python3.10/site-packages/snagrecover/protocols/dfu.py", line 136, in download_and_run
        self.set_partition(partid)
      File "/home/gopal/.local/lib/python3.10/site-packages/snagrecover/protocols/dfu.py", line 205, in set_partition
        self.dev.set_interface_altsetting(interface=0, alternate_setting=partid)
      File "/home/gopal/.local/lib/python3.10/site-packages/usb/core.py", line 962, in set_interface_altsetting
        self._ctx.managed_set_interface(self, interface, alternate_setting)
      File "/home/gopal/.local/lib/python3.10/site-packages/usb/core.py", line 113, in wrapper
        return f(self, *args, **kwargs)
      File "/home/gopal/.local/lib/python3.10/site-packages/usb/core.py", line 212, in managed_set_interface
        raise ValueError('No matching interface (' + str(intf) + ',' + str(alt) + ')')
    ValueError: No matching interface (0,2)
    


    电路板当前处于 DFU(器件固件更新)模式。

    但是、使用 dfu-util 刷写 tiboot3、tispl 和 u-boot.img 后、电路板会到达 U-Boot 提示符。 在该阶段、我们希望使用 snagflash 将剩余的映像刷写到 eMMC 中。 这些步骤是否正确?

    此外、我们如何使用 Fastboot? 我们在fastboot U-Boot 提示符中看不到可用的命令。 我们是否需要首先刷写 DFU 映像、然后使用使用使用 am6x_a53_snagfactory.config 构建的 U-Boot 映像进行引导、将该映像刷写到 eMMC 中、然后才会出现用于传输根文件系统的 Fastboot 命令?

    snagrecover 适用于 SK-am62-LP?


    此致、
    Gopal Sharma

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

    尊敬的 Gopal:

    有关专家已离职。 请预计响应会延迟。

    谢谢你

    Yashraj

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

    尊敬的 Gopal:

    更改 Rules.make 后构建的引导加载程序二进制文件用作恢复二进制文件、首先需要使用 snagrecover 命令通过 dfu-util 引导至 u-boot:

    进入 u-boot 后、您就可以使用 snagflash(而不是使用 dfu-util)刷写各个二进制文件、就像在以下链接中完成的操作: https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/11_01_05_03/exports/docs/linux/Foundational_Components /U-Boot/UG-Memory-K3.html#flashing-an-mc-device-using-USB-DFU 

    您可以直接使用 Snagfactory GUI 来执行此操作、而不是使用命令行、我在上面分享的指南中已经提供了参考配置文件 (eMMC.yaml)、您只需修改它即可使其适用于 am625。

    snagrecover 适用于 sk-am62-lp?

    是的、您只需使用使用 lpsk 板配置构建的二进制文件。

    此致、

    会面。

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

    尊敬的会议:

    我们目前正在通过命令行刷写测试引导。
    在我们首次使用 dfu-util 对引导加载程序映像进行编程后、U-Boot 现在会自动进入快速引导模式。
    退出快速引导后、该fastboot命令在 U-Boot 中也可用、因此 USB 接口正常工作。

    在主机端、我们运行了:

    snagflash -P fastboot -p 0451:6165 -f download:tiboot3.bin -f flash:0:1
    

    下载成功。

    现在、我们需要了解其他映像(tispl.bin、u-boot.img、rootfs 等)应该转到的位置。
    我们是否需要创建额外的 eMMC 分区以进行快速启动刷写?

    请提供建议。

    此致、
    Gopal Sharma
     

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

    尊敬的 Gopal:

    似乎您必须创建一个包含所有这 3 个二进制文件 (tiboot3.bin、tispl.bin、u-boot.img) 的 vfat 映像、然后使用您共享的命令进行下载。  

    相反,您可以探索 u-boot 的扩展快速引导模式: https://github.com/bootlin/snagboot/blob/main/docs/snagflash.md#extended-fastboot-mode-for-u-boot 

    您还可以尝试使用 GUI 工具而不是使用此 CLI 界面、在使用 GUI 时还需要一个 YAML 配置文件进行刷写、文档中已经提供了用于刷写到 eMMC 的参考 YAML 文件:  

    https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/11_01_05_03/exports/docs/linux/Foundational_Components /Tools/Flash_via_Fastboot.html#连接

    此致、
    会面。

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

    尊敬的会议:

    感谢您的支持。

    现在、我们能够使用 DFU 和 Snagflash 通过 USB 刷写映像、而不会出现任何问题。 但是、配置 partconf bootbus 时、我们仍然需要使用串行终端、因为这些设置的 Fastboot OEM 命令失败。

    FASTBOOT 确实提供了命令oem-partconf、如、但当我们尝试使用它们时、它们返回错误。 下面是控制台日志和我们执行的命令。


    snagflash -P fastboot -p 0451:6165 -f oem-partconf:111

    错误:-

    以下命令正常工作、并partconf在控制台上打印当前状态、请查看控制台日志。

    snagflash -P fastboot -p 0451:6165 -f oem-partconf:


    dwc3-generic-peripheral usb@31000000: request 00000000fde97b80 was not queued to ep1in-bulk
    Execute: mmc partconf 0 111 0
    mmc - MMC sub system
    
    Usage:
    mmc info - display info of the current MMC device
    mmc read addr blk# cnt
    mmc write addr blk# cnt
    mmc erase blk# cnt
    mmc erase partname
    mmc rescan [mode]
    mmc part - lists available partition on current mmc device
    mmc dev [dev] [part] [mode] - show or set current mmc device [partition] and set mode
      - the required speed mode is passed as the index from the following list
        [MMC_LEGACY, MMC_HS, SD_HS, MMC_HS_52, MMC_DDR_52, UHS_SDR12, UHS_SDR25,
        UHS_SDR50, UHS_DDR50, UHS_SDR104, MMC_HS_200, MMC_HS_400, MMC_HS_400_ES]
    mmc list - lists available devices
    mmc wp [PART] - power on write protect boot partitions
      arguments:
       PART - [0|1]
           : 0 - first boot partition, 1 - second boot partition
             if not assigned, write protect all boot partitions
    mmc hwpartition <USER> <GP> <MODE> - does hardware partitioning
      arguments (sizes in 512-byte blocks):
       USER - <user> <enh> <start> <cnt> <wrrel> <{on|off}>
            : sets user data area attributes
       GP - <{gp1|gp2|gp3|gp4}> <cnt> <enh> <wrrel> <{on|off}>
            : general purpose partition
       MODE - <{check|set|complete}>
            : mode, complete set partitioning completed
      WARNING: Partitioning is a write-once setting once it is set to complete.
      Power cycling is required to initialize partitions after set to complete.
    mmc bootbus <dev> <boot_bus_width> <reset_boot_bus_width> <boot_mode>
     - Set the BOOT_BUS_WIDTH field of the specified device
    mmc bootpart-resize <dev> <boot part size MB> <RPMB part size MB>
     - Change sizes of boot and RPMB partitions of specified device
    mmc partconf <dev> [[varname] | [<boot_ack> <boot_partition> <partition_access>]]
     - Show or change the bits of the PARTITION_CONFIG field of the specified device
       If showing the bits, optionally store the boot_partition field into varname
    mmc rst-function <dev> <value>
     - Change the RST_n_FUNCTION field of the specified device
       WARNING: This is a write-once field and 0 / 1 / 2 are the only valid values.
    mmc setdsr <value> - set DSR register value
    
    dwc3-generic-peripheral usb@31000000: request 00000000fde97b80 was not queued to ep1in-bulk
    Execute: mmc partconf 0  0
    EXT_CSD[179], PARTITION_CONFIG:
    BOOT_ACK: 0x1
    BOOT_PARTITION_ENABLE: 0x1 (boot0)
    PARTITION_ACCESS: 0x0 (user)
    dwc3-generic-peripheral usb@31000000: request 00000000fde97b80 was not queued to ep1in-bulk
    

    请帮助我们了解这些 Fastboot OEM 命令失败的原因以及如何解决问题。
    如果这些命令有效、我们不再需要使用串行接口发送命令来刷写映像。

    此致、
    Gopal Sharma

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

    尊敬的 Gopal:

    请尝试以下命令:  

    oem_run: mmc partconf 0 1 1 1
    oem_run: mmc bootbus 0 2 0 0

    此致、

    会面。