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.

[参考译文] AM3357:CCS UniFlash v3.4.1 与 U-Boot 的兼容性问题

Guru**** 2965660 points

Other Parts Discussed in Thread: UNIFLASH, AM3357

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1635862/am3357-ccs-uniflash-v3-4-1-compatibility-issue-with-u-boot

器件型号: AM3357
Thread 中讨论的其他器件: UNIFLASH

您好:

我们目前使用 CCS UniFlash v3.4.1 来刷写 AM3357。

升级到较新的 U-Boot 版本 (u-boot-restore v2025.01) 后、发现 RNDIS 接口成功初始化、但 BOOTP 握手未完成的问题。 因此、刷写过程不会开始。 BOOTP 握手发生在 ROM 引导加载程序 (ROM BL) 执行 SPL 后。

基于新的驱动程序模型 (DM)、使用了最小 U-Boot defconfig、其中取代了在 U-Boot 中逐步淘汰的传统 USB/ETH 栈。

以下是完整的 defconfig:
CONFIG_ARM=y
CONFIG_ARCH_CPU_INIT=y
CONFIG_ARCH_OMAP2PLUS=y
CONFIG_TI_COMMON_CMD_OPTIONS=y
CONFIG_DEFAULT_DEVICE_TREE="am335x-sml-factory"
CONFIG_AM33XX=y
CONFIG_TARGET_AM335X_IEC61850_MODULE=y
# CONFIG_SPL_MMC is not set
CONFIG_SPL_DRIVERS_MISC=y
CONFIG_SYS_BOOTCOUNT_ADDR=0x80001000
CONFIG_SPL=y
CONFIG_TIMESTAMP=y
CONFIG_DISTRO_DEFAULTS=y
CONFIG_OF_BOARD_SETUP=y
CONFIG_BOOTCOMMAND="run findfdt; run init_console; setenv autoload no; bootp; if tftp ${scriptaddr} debrick.scr; then source ${scriptaddr}; fi"
CONFIG_LOGLEVEL=7
# CONFIG_SYS_CONSOLE_INFO_QUIET is not set
CONFIG_ARCH_MISC_INIT=y
CONFIG_SPL_SHOW_ERRORS=y
CONFIG_SPL_SYS_MALLOC=y
CONFIG_SPL_SYS_MALLOC_SIZE=0x800000
CONFIG_SPL_DISPLAY_PRINT=y
CONFIG_SPL_ETH=y
# CONFIG_SPL_FS_EXT4 is not set
# CONFIG_SPL_I2C is not set
CONFIG_SPL_MUSB_NEW=y
# CONFIG_SPL_NAND_SUPPORT is not set
CONFIG_SPL_NET=y
CONFIG_SPL_NET_VCI_STRING="AM335x U-Boot SPL"
# CONFIG_SPL_AM33XX_ENABLE_RTC32K_OSC is not set
CONFIG_CMD_SPL=y
# CONFIG_CMD_I2C is not set
# CONFIG_CMD_SETEXPR is not set
CONFIG_BOOTP_DNS2=y
CONFIG_CMD_MTDPARTS=y
# CONFIG_SPL_EFI_PARTITION is not set
CONFIG_OF_CONTROL=y
CONFIG_SPL_OF_CONTROL=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_VERSION_VARIABLE=y
CONFIG_NET_RETRY_COUNT=10
CONFIG_BOOTP_SEND_HOSTNAME=y
CONFIG_SPL_OF_TRANSLATE=y
CONFIG_SPL_TI_SYSC=y
CONFIG_BOOTCOUNT_LIMIT=y
CONFIG_BOOTCOUNT_GENERIC=y
CONFIG_CLK=y
CONFIG_SPL_CLK=y
CONFIG_CLK_TI_CTRL=y
CONFIG_DFU_TFTP=y
CONFIG_DFU_RAM=y
CONFIG_USB_FUNCTION_FASTBOOT=y
# CONFIG_I2C is not set
CONFIG_MISC=y
# CONFIG_MMC_HW_PARTITIONING is not set
CONFIG_MTD=y
CONFIG_PHY_MICREL=y
CONFIG_PHY_MICREL_KSZ8XXX=y
CONFIG_MII=y
CONFIG_DRIVER_TI_CPSW=y
CONFIG_TIMER=y
CONFIG_OMAP_TIMER=y
CONFIG_USB=y
CONFIG_DM_USB_GADGET=y
CONFIG_SPL_DM_USB_GADGET=y
CONFIG_USB_MUSB_HOST=y
CONFIG_USB_MUSB_GADGET=y
CONFIG_USB_MUSB_TI=y
CONFIG_USB_GADGET=y
CONFIG_SPL_USB_GADGET=y
CONFIG_USB_GADGET_MANUFACTURER="Texas Instruments"
CONFIG_USB_GADGET_VENDOR_NUM=0x0451
CONFIG_USB_GADGET_PRODUCT_NUM=0xd022
CONFIG_USB_ETHER=y
CONFIG_SPL_USB_ETHER=y
CONFIG_WDT=y
# CONFIG_SPL_WDT is not set
CONFIG_DYNAMIC_CRC_TABLE=y
CONFIG_RSA=y
CONFIG_LZO=y
它可与我们自己的 Linux 专用制造脚本配合使用。 但 Windows CCS Uniflash 不再工作。

为了便于参考、我们附加了 Linux 制造日志、内核 dmesg 输出和完整的 tcpdump 网络捕获结果进行比较。

SML-MFG-Linux.dmesg.log

SML-MFG-Linux.log 

ROM_SPL_UBOOT_LINUX_Capture.zip 

此致、

Pooja Nagda.

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

    嗨、Pooja、

    您能否帮助我了解如何解释您提供的日志文件以了解问题?

    我在 Wireshark 中检查了 3 个网络转储文件、但在转储文件中看不到任何明显的问题、它们都显示了网络流量与 BOOTP 和/或 ARP、然后以 TFTP 结束。

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

    尊敬的 Bin:

    我向 Pooja 提供了日志文件 、其中显示了 AM335x 与 Linux 程序 在刷写二进制文件时的工作握手过程。 日志仅供参考、它在不 涉及 Uniflash 的情况下在 Linux 中的表现如何。 刷写程序基于 Snagboot 编写:

    https://bootlin.com/blog/snagboot-designing-a-usb-recovery-process-for-am335x-socs/

    但是、我没有 Windows 设置、因此不知道在我们基于 TI u-boot v2025.01 开发新的 u-boot 时、Uniflash 为什么不再工作。

    在 Pooja 方面、该工程要求 Windows 中的 Uniflash 与新的 u-boot v2025.01 配合使用、以便生产环境可以使用我开发的新二进制文件刷写裸机。

    BR/Chencheng

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

    尊敬的 Chencheng:

    感谢您的澄清。

    请注意、支持 AM335x 的 Uniflash 开发工作已停产。 因此、对于 AM335x 的 Uniflash、不会进行任何更新。

    我建议您调试 U-Boot v2025.01 的 Uniflash 问题、例如分析网络流量、看看是否是微不足道的问题、可以通过更改 AM335x 上的 U-Boot 代码来修复。 如果没有、我建议使用 Windows 上基于 Snagboot 的工具刷写映像。

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

    尊敬的 Bin:

    感谢您的答复。 仅通知您、Snagboot 在 Windows 上不支持 AM335x:

    https://github.com/bootlin/snagboot/blob/3740b6f7d0cb0a2ddea5ac096e196afcec3cf52c/docs/installing.md?plain=1#L58

     Pooja Nagda 请在项目内讨论 TI 已停止对 Uniflash for AM335x 的支持。

    BR/Chencheng

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回复。 通知您、Snagboot 在 Windows 上不支持 AM335x:

    感谢您提供的信息。

    现在、我可以想到的唯一选项是使用 U-Boot v2025.01 调试网络协议故障、看看是否可以通过修改新的 U-Boot 来修复此问题(如果无法更新 Windows 主机)。

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

    尊敬的 Bin:

    我认为现在 CCS Uniflash 3 完全是一个黑盒、很难猜为什么它没有回复 SPL 2025.01 BOOTP 请求。

    我认为、如果我们也可以调试 CCS Uniflash 3、从 DHCP/TFTP 端查看调试日志会容易得多。

    我很快就会休育儿假。 Pooja Nagda 、请跟随此步骤、看看 TI 是否可以让您在 CCS Uniflash 3 上打开调试。

    BR/Chencheng

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

    尊敬的 Chencheng:

    Bin 在 4 月 29 日之前不在办公室。 请期待收到延迟的回复。 谢谢。

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

    你好 Mukul、

    1. 主机 PC: Windows 11 Pro,版本 25H2 (OS Build 26200.7922)。

    2.在新的 U-boot v2025 中,RNDIS 网络在 ROM -> SPL 转换后没有出现。 当我给模块上电时出现一次、该实例的 USB\VID_0451&PID_6141&REV_0000 是 VID /PID。  

    3.请查找附加的 Wireshark 捕获。  

    e2e.ti.com/.../Uboot_5F00_2025_5F00_wireshark_5F00_trace.zip

    4. ROM -> SPL 转换后的旧 Uboot 版本提供的 PID 版本为 USB\VID_0525&PID_AA2&REV_0315。

    您能否确认您提到的 U-Boot 更改是否已在您这边得到验证? 如果它们能够成功进行 AM335x 刷写、如果您能分享相应的补丁或修改的详细信息、我将不胜感激。

    此致、

    Pooja Nagda.

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

    您好、我将在我回到办公室后查看您的更新。

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

    嗨、Pooja、

    [引述 userid=“613548“ url=“~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1635862/am3357-ccs-uniflash-v3-4-1-compatibility-issue-with-u-boot/6323989

    3.请查找附加的 Wireshark 捕获。  

    Uboot_2025_wireshark_trace.zip

    [/报价]

    感谢您共享 Wireshark 跟踪。 ROM 下载引导加载程序 u-boot-spl-restore.bin 后显示没有任何网络活动。 引导加载程序似乎根本没有运行?

    如 Chencheng 报告的那样、在使用 Linux 主机进行测试时、您是否使用过相同的引导加载程序二进制文件 (u-boot-spl-restore.bin)?

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

    您好 Bin、

    是的、它是相同的引导加载程序二进制文件。

    此致、

    Pooja Nagda.

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

    嗨、Pooja、

    有趣的是、从 Linux 主机下载时、相同的引导加载程序二进制文件会运行、但从 Windows 主机下载时不会运行。

    让我在 EVM 上尝试一些东西、决定接下来如何进行调试。

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

    您好 Bin、

    你们这边是否对此有任何更新?

    此致、

    Pooja Nagda.

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

    嗨、Pooja、

    当 ROM 下载第一个引导加载程序二进制文件 (u-boot-spl-restore.bin) 并运行时、电路板 UART 控制台应打印类似于的消息

    U-Boot SPL 2025.01-...

    从 Windows PC 传输 u-boot-spl-restore.bin 后、您在电路板 UART 控制台上是否看到任何消息?

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

    您好 Bin、

    是的、日志可以在 UART 控制台上看到。 模块首次上电时、将创建 RNDIS 网络、并且日志显示在 UART 控制台上。 但是、它不会再次被重新创建。

    Flashing_logs.txt 

    此致、

    Pooja Nagda.

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

    嗨、Pooja、

    感谢您共享电路板控制台日志。 出现以下错误信息:

      eth0:usb_etherAll UDC 正在使用中(1 个可用)、使用 unbind 命令

      musb-hdrc:外设复位 IRQ 丢失!
      ...
      远程端没有及时响应。所有正在使用的 UDC(1 可用)、请使用 unbind 命令

    第一行是从 usb_gadget_probe_driver() 打印的、最后一行是从 usb_eth_start () 打印的。 在深入探讨之前、您能不能

    -在您迁移到 2025.01 之前、旧的 U-Boot 版本是什么? 将旧版本的 u-boot-spl-restore.bin 传输到电路板并运行时、控制台日志是什么?

    -您是否有 BeagleBone Black 板或任何 AM335x EVM 以便您可以使用 2025.01 U-Boot 进行测试、看看 u-boot-spl-restore.bin 是否有相同的问题?

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

    您好 Bin、

    很抱歉晚才回复。 我昨天就走了。

    旧 U-Boot 版本为 2013.10、并附加日志。

    Flashing_logs_old_Uboot.txt

    此致、

    Pooja Nagda.

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

    嗨、Pooja、

    感谢您与 u-boot 2013.10 共享控制台日志。

    您是否拥有 BeagleBone Black 板或任何 AM335x EVM、以便可以使用 2025.01 U-Boot 进行测试、看看 u-boot-spl-restore.bin 是否存在相同的问题?

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

    您好 Bin、

    我和我一起使用了 AM335x ICEv2 板、我将尝试验证它上的问题。 您能否告诉我、您的最终验证是否也已通过验证? 此外、您是否遇到过可能解释 Linux 和 Windows 之间行为差异的任何问题?

    此致、

    Pooja Nagda.

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

    嗨、Pooja、

    我还没有尝试在我这边验证问题,因为我甚至不知道该症状,直到 5 月 5 日收到您的日志文件“flushing_logs.txt“显示 USB 控制器驱动程序运行异常。

    现在我正在等待 AM335x ICE 电路板上的测试结果、它将决定后续的不同调试方向。

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

    尊敬的 Bin:

    您能否介绍刷写 AM335x ICEv2 电路板以便加快调试过程的步骤?

    此致、

    Pooja Nagda.

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

    嗨、Pooja、

    我从未使用过 ICE 板、但现在我刚刚检查了电路板原理图、发现 ICE 板没有提供 AM335x USB0 端口、因此我们无法在 ICE 板的 USB 接口上测试 Uniflash。

    您可以让 BeagleBone Black 板进行测试吗?

    同时、我将与 IT 部门联系、要求在我的 Windows 笔记本电脑上安装 Uniflash、以便我也可以在 BBB 电路板上进行测试。

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

    嗨、Pooja、

    我查看了您在上面的初始问题报告中提供的 U-Boot defconfig、其中包含 CONFIG_USB_FUNCTION_FASTBOOT=y

    您是否可以禁用此配置选项来查看 Uniflash 是否仍然无法使用 Windows 主机?

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

    尊敬的 Bin:

    我检查了旧版 OS u-bootv2013 defconfig、并 CONFIG_USB_FUNCTION_FASTBOOT=y 已启用。 刷写仍然成功、因此我认为这不是导致问题的原因。 不过、我会从我这边核实一次

    您是否有机会在 BBB 板上检查相同的情况。

    此致、

    Pooja Nagda.

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

    嗨、Pooja、

    两个配置选项都支持 2 个 USB 小工具驱动程序、这可能会导致“所有正在使用的 UDC(1 个可用)“问题。

    我认为这将是一个快速的测试从你的结束,所以我还没有开始检查 BBB 板.

    (根据 TI 的 IT 合作政策、我必须请求我们的 IT 部门在我的 Windows 计算机上安装 Uniflash 工具、如果 CONFIG_USB_FUNCTION_FASTBOOT 是问题、我会尽量不安装该工具。 但我今天将开始请求。)

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

    尊敬的 Bin:

    我已在 U-Boot 中禁用此配置、但仍会获得相同的结果。

    CONFIG_USB_FUNCTION_FASTBOOT_flashing_logs.txt

    此致、

    Pooja Nagda.

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

    嗨、Pooja、

    我今天一直在尝试在 AM335x EVM 上重现此问题、但到目前为止、Windows 上的 Uniflash 尚未传输 u-boot-spl-restore.bin。

    我会随时向您公布我的进度。

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

    嗨、Pooja、

    我能够看到使用 U-Boot 2025.01 时 AM335x GPEVM 上的问题。 症状与您报告的稍有不同、但在 u-boot-spl-restore.bin 末尾、它不会在 Windows PC 设备管理器中生成 USB/RNDIS 接口、因此原因是 u-boot-restore.img 不由 Uniflash 传输。

    我将开始调试问题、但目前我不知道何时会找到根本原因。

    我想解锁您的工程、因为 Uniflash 在 USB/RNDIS 引导中仅使用 u-boot-spl-restore.bin 和 u-boot-restore.img、并且这两个映像都只在准备固件刷写时需要、它们不适用于 AM335x 产品、您仍然可以使用 U-Boot 2013.10 来构建这两个恢复二进制文件、并且不更新到 U-Boot 2025.01 吗? 您只需更新要刷写的固件中的 U-Boot 2025.01。

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

    您好 Bin、

    您能否提供一个有效的设置?

    此致、

    Pooja Nagda.

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

    嗨、Pooja、

    您能提供一个有效的设置吗?

    您能详细说明一下吗?

    由于您提到 U-Boot 2013.10 中不存在问题、因此我假设您已经为 U-Boot 2013.10 设置了可正常工作的 Uniflash。

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

    尊敬的 Bin:

    当我们使用旧版 u-boot-spl-restore.bin 和刷新新新新操作系统时 u-boot-restore.img、主板崩溃、并出现内核错误。

    从刷写日志中、我们观察到 debrick.scr 文件未通过 TFTP 传输到模块。 因此、恢复流程不会继续进行、并且由于缺少 initramfs/recovery 环境、内核最终会出现恐慌。

    旧版操作系统使用基于以下内容的较旧刷写框架:

    • rootfs.tar

    • flasher.sh

    而新操作系统使用基于以下内容的较新刷写框架:

    • debrick.scr

    • initramfs.cpio.gz

    旧版本似乎 u-boot-restore.img 不支持新操作系统中使用的此更新的刷写框架。

    此致、

    Pooja Nagda.

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

    嗨、Pooja、

    旧版本似乎 u-boot-restore.img 不支持新操作系统中使用的这种较新的刷写框架。

    您能解释一下为什么会这样吗?

    U-Boot 恢复二进制文件(和)u-boot-spl-restore.bin u-boot-restore.img只需从 Uniflash 下载、然后运行 BOOTCMD、执行编程为执行的任何操作、我认为与 U-Boot 2013.x 和 205.x 之间应该没有任何差异

    我也不理解为什么刷写框架会发生变化、似乎这是开发团队的决定、而不是与 U-Boot 版本相关联。

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

    您好 Bin、

    使用最新的恢复二进制文件、在初始 ROM 阶段 (PID_6141) 成功检测到 RNDIS 网络、Windows 将其正确绑定到 RNDIS 网络驱动程序。 但是、一旦器件转换为 SPL (PID_D022)、Windows 就会将其检测为 USB 串行 器件而不是 RNDIS 网络适配器、因为 PID_D022 接口未自动识别或绑定到 RNDIS 驱动程序。

    虽然当前的刷写流程可能仍然可以使用传统恢复二进制文件和临时主机端权变措施、但这种方法不适合长期维护。 传统二进制文件基于较旧的基础设施、不包含较新软件栈中引入的许多现代更新、包括与 64 位时间戳处理相关的改进、文件描述符支持以及未来与安全相关的增强功能(如安全启动和加密签名验证)。

    此外、依赖传统的 USB 小工具行为和特定于 Windows 的驱动程序绑定行为会带来未来 Windows 更新可能再次中断刷写工作流程的风险。

    因此、我们正在寻找一个更稳健和面向未来的恢复/刷新解决方案、而不是继续依赖传统的恢复二进制文件和临时的兼容性解决方案。

    此致、

    Pooja Nagda.

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

    嗨、Pooja、

    但是、一旦设备转换为 SPL (PID_D022)、Windows 就会将其检测为 USB 串行设备 而不是 RNDIS 网络适配器、因为 PID_D022 接口未自动识别或绑定到 RNDIS 驱动程序。

    4 月 24 日 Mukul 的回复应该可以解决这个问题。

    [引述 userid=“5798“ url=“~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1635862/am3357-ccs-uniflash-v3-4-1-compatibility-issue-with-u-boot/6323194

    1.将 USB 产品 ID 与 ROM 引导加载程序对齐

    更改 defconfig、以便 SPL 使用与 ROM 相同的 PID:

    CONFIG_USB_GOODT_PRODUCT_NUM=0x6141

    这是 针对相同症状的已确认修复 —ROM 使用 VID_0451&PID_6141、SPL 默认为、 VID_0451&PID_D022Windows 拒绝将 RNDIS 驱动程序绑定到第二个 PID [2]。

    [/报价]

    下面是补丁:

    diff -git a/configs/am335x_evm_defconfig b/configs/am335x_evm_defconfig
    索引 dc22b1595406..b010affb9d23 100644
    -- A/configs/am335x_evm_defconfig
    ++ b/configs/am335x_evm_defconfig
    @@–114、7 +114、7 @@ CONFIG_USB_GOTIDLE=y
     CONFIG_SPL_USB_GOTIDLE=y
     CONFIG_USB_GOODT_MANUFACTURECT = Texas Instruments
     CONFIG_USB_GOODT_VENDOR_NUM=0x0451
    CONFIG_USB_gadget_PRODUCT_NUM=0xd022
    +CONFIG_USB_GOODT_PRODUCT_NUM=0x6141
     CONFIG_USB_ether=y
     CONFIG_SPL_USB_ether=y

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

    尊敬的 Bin:

    您能否确认上述解决方案是否已在您的端部得到验证?

    此致、

    Pooja Nagda.

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

    是的、该补丁解决了 AM335x GPEVM 上的问题、Windows 将 u-boot-spl-restore.bin 枚举为 USB 串行器件。

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

    您好 Bin、

    从我的角度来看、有一些关于此变通办法的发现 应用此补丁后、 u-boot-spl-restore.bin 会正确枚举为 Linux USB 以太网/RNDIS 小工具。 但是、在 SPL 阶段 (initramfs) 之后、PID 将变为 PID_A4A2_Rev_0612。 在此阶段、器件被检测为 USB RNDIS 网络器件、因此刷写过程会卡住。

    为了使刷写过程正常工作、我必须手动更新驱动程序、以便此版本可以绑定到 Linux USB 以太网/RNDIS 驱动程序。

    您能否为这个问题提出最终和永久的解决办法? 当前权变措施在刷写流程中仍需要驾驶员手动干预、因此拥有一个完整的刷写过程无缝工作的解决方案会很有帮助、而无需用户进行任何手动配置或驱动程序更新。

    此致、

    Pooja Nagda.

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

    嗨、Pooja、

    但是、在 SPL 阶段 (initramfs) 之后、PID 将变为 PID_A4A2_Rev_0612。 在此阶段、 [/报价]

    您能解释一下这个 PID 何时发生了变化吗? 例如、通过 Uniflash 下载并执行了哪个二进制文件? SPL 应该与 Linux initramfs...

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

    您好 Bin、

    刷写流程如下:

    1. ROM 尝试建立 RNDIS 接口
    2. ROM 通过 RNDIS/TFTP 请求 SPL-RESTORE 并加载它
    3. SPL-RESTORE 引导并尝试建立 RNDIS 接口
    4. SPL-RESTORE 通过 RNDIS/TFTP 请求 debrick.scr 并 加载它
    5. Debick.scr 通过 RNDIS/TFTP 请求 dtb、kernel zImage、initramfs 并引导它们
    6. initramfs 启动后、它会进行硬件格式化、并通过 RNDIS/TFTP 请求 SWU(包括新的 u-boot 和 RFS)、然后执行对整个电路板进行编程的主要过程。

    在第 6 阶段、USB PID 将更改为 A4A2_Rev_0612。 此时、设备被检测为通用 USB RNDIS 网络设备、导致刷写过程卡住、因为正确的驱动程序未自动绑定。 若要继续刷写过程、必须手动更新驱动程序、以便此版本可以与 Linux USB 以太网/RNDIS 驱动程序绑定。

    此致、

    Pooja Nagda.

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

    嗨、Pooja、

    感谢您提供详细信息。 现在我了解了行为。

    AA2 的 USB PID 变化是由内核驱动程序 驱动程序/USB/小工具/legacy/ether.c 引起的:

    #define RNDIS_PRODUCT_NUM     0Xa4a2 /*以太网/RNDIS 小工具*/

    请将其值更改为 0x6141 以解决问题。

    [引述 userid=“613548“ url=“~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1635862/am3357-ccs-uniflash-v3-4-1-compatibility-issue-with-u-boot/6366770
    • SPL-RESTORE 引导并尝试建立 RNDIS 接口
    • SPL-RESTORE 通过 RNDIS/TFTP 请求 debrick.scr 并 加载它
    [/报价]

    顺便说一下、在您描述的过程中、在步骤 3 — 运行 u-boot-spl-restore.bin 之后、您是否错过了下载和运行 u-boot-restore.img?

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

    您好 Bin、

    USB PID 变为 AA2 不会导致该问题;问题是由 Rev_0612 值导致的。 由于该修订版值、该设备被检测为通用 USB RNDIS 网络设备、阻止正确的驱动程序自动绑定并导致刷写过程卡住。 若要继续刷写、必须手动更新驱动程序、以便该版本可以与 Linux USB 以太网/RNDIS 驱动程序绑定。

    此致、

    Pooja Nagda.

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

    嗨、Pooja、

    我刚意识到只有在 kernel ether.c 中更改 PID 是不够的, VID 也应该更改为与 ROM 中相同的值。

    #define RNDIS_VENDOR_NUM 0x0525 /* NetChip */
    #define RNDIS_PRODUCT_NUM 0xa4a2 /*以太网/RNDIS 小程序*/

    请将上述代码 PID 0xa4a2 更改为 0x6141、将 VID 0x0525 更改为 0x0451。

    参考资料:

    ++b/configs/am335x_evm_defconfig
    @@–114、7 +114、7 @@ CONFIG_USB_GOTIDLE=y
     CONFIG_SPL_USB_GOTIDLE=y
     CONFIG_USB_GOODT_MANUFACTURECT = Texas Instruments
     CONFIG_USB_GOODT_VENDOR_NUM=0x0451
    CONFIG_USB_gadget_PRODUCT_NUM=0xd022
    +CONFIG_USB_gadget_product_NUM=0x6141
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Bin、

    我比较了 ether.c 旧操作系统和新操作系统中的文件。 在这两个版本中、RNDIS 供应商 ID 和产品 ID 定义为:

    #define RNDIS_VENDOR_NUM   0x0525
    #define RNDIS_PRODUCT_NUM  0xa4a2

    但是、在枚举设备时、我可以看到 两个操作系统版本之间的 USB 设备版本不同。

    由于两个文件中的 VID 和 PID 值是相同的、因此我想了解为什么器件修订版本值在两个版本之间会发生变化。 能否说明是什么决定了版本号?为什么即使 VID 和 PID 保持不变、版本号也会有所不同?

    此致、

    Pooja Nagda.

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

    嗨、Pooja、

    您能否先确认在 ether.c 中更改 VID:PID 是否能解决您项目中的引导问题?

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

    您好 Bin、

    今天或明天我将共享一个更新。

    此致、

    Pooja Nagda.

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

    您好 Bin、  

    对延迟的回复表示歉意。 我不在办公室。

    经过进一步调查、我发现与修订相关的问题特定于我的笔记本电脑。 这是由于我的系统上的另一个驱动程序干扰了刷写过程并导致其停止。

    因此、 无需 将 Linux 小工具 USB VID 从更 0x0525 改为 0x0451 或 0xA4A2 将 PID 从更改为 0x6141。 无需进行这些更改即可解决刷写问题。

    此致、

    Pooja Nagda.

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

    嗨、Pooja、

    很高兴问题最终得到解决。 感谢您的更新。

    您是否意味着在 Linux 中只需要更改 VID:PID、但仍然需要在 U-Boot 中更改 PID?

    在调试问题的整个过程中、您是在同一台笔记本电脑还是在其他 Windows 计算机上测试旧版本的 U-Boot? 我试图理解为什么只有在迁移到新 U-Boot 版本后才会出现问题。

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

    您好 Bin、

    CONFIG_USB_GADGET_PRODUCT_NUM=0xD022 0x6141 要使刷写正常工作、仍然需要将 U-Boot PID 从更改为。

    此致、

    Pooja Nagda.

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

    感谢您的确认。