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.

[参考译文] TMDS64GPEVM:如何使用 DFU-util 刷写 eMMC?

Guru**** 2540720 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1103566/tmds64gpevm-how-to-flash-emmc-using-dfu-util

器件型号:TMDS64GPEVM

您好!

我正在尝试使用 USB DFU-util 刷写 TMDS64GPEVM 电路板的 EMCC。

我从这里开始: https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/08_01_00_39/exports/docs/linux/Foundational_Components/U-Boot/UG-DFU.html 、并在串行控制台上正确获取 u-boot 提示符。

然后,如何使用 DFU-util USB 连接刷写 EMCC?

基本上,我在 u-boot 中的 DFU 命令被阻止:我不知道 DFU_alt_info 的值应该是什么,我应该在 u-boot 中执行哪个确切命令("DFU 0 MMC 0"失败)。

一旦在 u-boot 中启动 DFU 、我应该能够加载所有内容。

我已经尝试访问 https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/08_01_00_39/exports/docs/linux/Foundational_Components/U-Boot/UG-Memory.html、需要进行修改、 但我无法成功地完成某项工作。

该特定评估板是否有相关教程? 我该怎么办?  我可以在这里提供哪些信息来帮助您?

谢谢、此致、

Joel

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

    您好、Joel、
    AM64x Bootrom 中支持器件固件更新(DFU)、并且 u-boot 使用 USB 作为主机和目标之间的传输链路。
    1.从 DFU 引导模式引导时、主机上运行的"DFU-util"通过 USB 链接与 bootrom 进行通信、并按以下顺序将二进制文件从主机传输到目标板:tiboot3.bin -> tispl.bin -> u-boot.img。  有关详细信息、请参阅链接:
    software-dl.ti.com/.../UG-DFU.html
    2.在 u-boot 开始在目标上运行后、运行以下 u-boot 命令:
    => env 默认-f -a
    => setenv dfu_alt_info ${dfu_alt_info_eMMC}
    => DFU 0 MMC 0
    这使 u-boot 可以使用主机通过 USB 链路传输的二进制文件刷写 eMMC。
    我将连接两个用于 eMMC DFU 闪存 u-boot 二进制文件(tiboot3.bin/tispl.bin/u-boot.img)的日志文件、并在 AM64x EVM 上使用 Linux SDK 8.1作为参考:
    - am6_8.1_dfu_eMMC_host.txt:"dfu-util"登录主机
    - am6_8.1_dfu_eMMC_target.txt:登录目标
    最棒的
    -香港

    e2e.ti.com/.../am6_5F00_8.1_5F00_dfu_5F00_emmc_5F00_target.txt

    e2e.ti.com/.../am6_5F00_8.1_5F00_dfu_5F00_emmc_5F00_host.txt

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

    您好

    感谢您的回复,这种感觉与我所做的事情不符,我并不是很疯狂!!

    我的默认 u-boot env 中有一些不同之处:

    dfu_alt_info_eMMC 为"rawemmc raw 0 0x800000 mmcpart 1;rootfs part 0 1 mmcpart 0;tidboot3.bin.raw 0x0 0x800 mmcpart 1;tispl.bin.raw 0x800 0x1000 mmcpart 1;u-boot.img.raw 0x1800 0x2000 mmcpart 1;tisprw 0x3800

    如果我按照您给出的确切步骤操作、我将无法启动 DFU (屏幕截图随附)。

    我做了以下工作:

    setenv dfu_alt_info "rawemmc raw 0 0x800000 mmcpart 1;rootfs part 0 1 mmcpart 0;tidboot3.bin.raw 0x0 0x800 mmcpart 1;tispl.bin.raw 0x800 0x1000 mmcpart 1;u-boot.img.raw 0x1800 0x2000 mmcpart 0x800 mmcpart sysfw.itb.raw 1;tisprb 0x3800 mmcwraw 0x1000

    然后:"DFU 0 MMC 0"

    此时 DFU 可用, DFU-util 正确地显示了 EMCC 分区=>现在该怎么办? 我尝试使用 DFU-util 进行闪存、但我没有成功。

    谢谢、此致、

    Joel

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

    您好、Joel、
    我使用 SDK 8.1测试了 USB-DFU eMMC 闪存、它的工作方式与我上次的答复相同。
    我仔细查看了您的最新日志、并今天使用 SDK 8.2运行了一些测试。
    使用 SDK 8.2刷写 USB-DFU eMMC 时似乎存在问题。
    在 u-boot 开始在目标上运行后、我们是否可以在您的设置中运行下面列出的测试?

    >>>> run cmds @u-boot prompt
    env default -f -a
    pri dfu_alt_info_emmc		// "rawemmc raw 0 ...... mmcpart 1;" //
    editenv dfu_alt_info_emmc	// remove the tailing ";" //
    pri dfu_alt_info_emmc		// "rawemmc raw 0 ...... mmcpart 1" //
    setenv dfu_alt_info ${dfu_alt_info_emmc}
    pri dfu_alt_info
    dfu 0 mmc 0
    
    >>>> run cmds on host
    sudo dfu-util -l
    sudo dfu-util -a tiboot3.bin.raw -D tiboot3.bin
    sudo dfu-util -a tispl.bin.raw -D tispl.bin
    sudo dfu-util -a u-boot.img.raw -D u-boot-am64xx-evm.img

    我将在 AM64x EVM 上使用 Linux SDK 8.2附加两个用于 eMMC DFU 闪存 u-boot 二进制文件(tiboot3.bin/tispl.bin/u-boot.img)的日志文件:
    - am6_8.2_dfu_eMMC_host.txt:"dfu-util"登录主机
    - am6_8.2_DFU_eMMC_TARGET.txt:登录目标

    最棒的
    -香港

    e2e.ti.com/.../am6_5F00_8.2_5F00_dfu_5F00_emmc_5F00_host.txt

    e2e.ti.com/.../am6_5F00_8.2_5F00_dfu_5F00_emmc_5F00_target.txt

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

    您好

    感谢您的更新。 是的、此版本似乎存在问题。

    我已经执行了您提供的命令来删除末尾的分号、查看它是否正常工作、下面的 Uboot 日志文件、然后 DFU-util 列表看起来很棒。

    e2e.ti.com/.../log_5F00_uboot.txt

    e2e.ti.com/.../dfu_5F00_util.txt

      您是否知道 TI 何时可以使用此修复程序发布新版本? 这真的很烦人。

    最后,您能否指出您在闪存 eMMC 时使用的确切命令是什么:rootfs、内核、设备树等?

    非常感谢您在本主题上的帮助、

    Joel

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

    您好、Joel、
    很好的了解是、您能够在设置中使用 USB DFU-util 来刷写 u-boot 二进制文件。
    我将向 TI Linux 软件团队报告此问题、并随时向您发布。
    同时、请使用下面列出的选项之一作为解决方法:
    a)。修改 u-boot 环境变量"dfu_alt_info_eMMC"、方法是删除尾分号@u-boot 提示符(如测试所示)。
    b)。通过修改"include/environment/ti/k3_DFU.h"来重建 u-boot、如下所示:

    -	"u-env.raw raw 0x3800 0x100 mmcpart 1;\0"
    +	"u-env.raw raw 0x3800 0x100 mmcpart 1\0"

    如何使用 USB dft-util 通过 eMMC 刷写 rootfs (包括内核/DTB):
    1.在主机上创建 EXT4 rootfs:以下步骤用于从 TISDK "filesystems/tisdk-base-image-am64xx-evm.tar.xz"创建 EXT4 rootfs、其中"bs=1M seek=300"用于创建"tisdk-base.ext4"= 300m 示例:

    dd if=/dev/null of=tisdk-base.ext4 bs=1M seek=300
    mkfs.ext4 -F tisdk-base.ext4
    mkdir mnt_fs
    sudo mount -t ext4 tisdk-base.ext4 mnt_fs
    cd mnt_fs
    sudo tar xvf ../tisdk-base-image-am64xx-evm.tar.xz
    cd ..
    sudo umount mnt_fs

    2.从主机进行 eMMC 刷写(在 u-boot 二进制 eMMC 刷写步骤后继续)

    sudo dfu-util -a rootfs -D tisdk-base.ext4

    我将在附件中附加三个日志文件供您参考:
    - am6_8.2_DFU_eMMC_FS_HOST.txt:eMMC 在主机上刷写"DFU-util"日志
    - am6_8.2_DFU_eMMC_FS_TARGET.txt:eMMC 在目标上刷写日志
    - am6_8.2_eMMC_full_boot.txt:目标上的 eMMC 引导日志

    最棒的
    -香港

    e2e.ti.com/.../am6_5F00_8.2_5F00_dfu_5F00_emmc_5F00_fs_5F00_host.txt

    e2e.ti.com/.../am6_5F00_8.2_5F00_dfu_5F00_emmc_5F00_fs_5F00_target.txt

    e2e.ti.com/.../am6_5F00_8.2_5F00_emmc_5F00_full_5F00_boot.txt

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

    您好

    非常感谢您分享这些日志、这非常有用、现在 我已经完全刷写了 eMMC。 非常感谢!

    TI 的一些反馈:

    - AM64XX EVM 的 U-boot 配置应在下一个版本中修复、这真的很烦人。请查看下面的补丁修复 DFU、mmcdev 和 bootpart

    -我刚刚检查并再次检查了文档,我找不到使用您提供的命令刷写 EMCC 的说明。 我不明白为什么文档中没有它,它显然是需要添加的东西!!! 我在 下面提供了完整的程序-当我们开始使用评估板时、这是基本的东西、在这一步中浪费时间真的很烦人

    -最后、我建议 在 TI 机器的定义中添加 IMAGE_FSTYPES +="ext4"。 这样可以轻松地在部署目录中创建 ext4文件系统,而无需手动创建。 上述过程假定这样做,并且在 deploy 目录中生成 ext4。

    --

    为了记住和未来的读者、我在这里发布了我的问题的完整解决方案。

    我将处理器 SDK V08.02.00.17用于 AM64XX EVM 板。 相关文档、请访问 https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/08_02_00_17/exports/docs/devices/AM64X/Overview.html

    我创建了自己的元层并添加了以下 u-boot 补丁来修复用于 eMMC 的 u-boot 配置:

    e2e.ti.com/.../0001_2D00_fix_2D00_u_2D00_boot_2D00_config.patch.txt

    我还在 local.conf 文件中添加了以下内容以生成所需的 rootfs: image_FSTYPES +="ext4"

    然后照常构建 Yocto 映像(请参阅文档)。

    构建完成后、我将按照上述步骤使用 DFU-util (通过 USB 链接)刷写 eMMC:

    1/将 AM64xx EVM 的 USB OTG 端口和控制台终端连接到您的计算机

    2将引导开关移至以下位置:SW2[1:8]= 11001010和 SW3[1:8]= 00000000

    3打开电路板的电源

    4/在计算机上执行以下操作(Yocto deploy 目录中的文件):

    sudo dfu-util -R -A bootloader -D tiboot3.bin
    sudo dfu-util -R -A tispl.bin -D tispl.bin
    sudo dfu-util -R -a u-boot.img -D u-boot-am64xx-evm.img

    5/在电路板的 uboot 控制台中执行以下操作:

    setenv dfu_alt_info ${dfu_alt_info_eMMC}
    DFU 0 MMC 0

    6/在计算机上执行以下操作(Yocto deploy 目录中的文件):

    sudo dfu-util -a tiboot3.bin.raw -D tiboot3.bin
    sudo dfu-util -a tispl.bin.raw -D tispl.bin
    sudo dfu-util -a u-boot.img.raw -D u-boot-am64xx-evm.img
    sudo dfu-util -a rootfs -D tisdk-base-image-am64xx-evm.ext4

    7关闭 电路板的电源

    8将引导开关移动到以下位置: SW2[1:8]= 11010010和 SW3[1:8]= 00000000

    9打开电路板电源、这在 eMMC 上引导、显示终端(用户是 root 用户、没有密码)

    快速简单,投票对您很有用!!

    Joel

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

    您好、Joel、
    很好的了解是、现在可以在您的设置中使用具有 USB DFU-util 的完整 Linux eMMC 闪存。
    感谢您提供有关如何改进 TI SDK 文档的反馈、我将与 TI SW 团队分享您宝贵的意见。
    您对 eMMC 闪存步骤的总结也将对其他用户有所帮助。
    最棒的
    -香港