USB论坛
直播中

听风说梦

10年用户 965经验值
擅长:可编程逻辑 嵌入式技术 EMC/EMI设计
私信 关注
[问答]

CX3无法将固件加载到SPI闪存如何解决?

我无法将固件加载到 SPI 闪存。
步骤如下:
1. 开机,运行 USB 控制中心,
2.点击boot loader,点击FX3,然后选择“SPI flash”。然后USB控制中心显示“未找到CYPRESS™引导编程器设备”。
但从USB设备列表、UART 日志和USB控制中心的屏幕截图可以看出, CYPRESS™引导编程器设备已在计算机上枚举并在 CX3 上运行,而USB控制中心无法与 CX3 通信

我可以知道如何解决这个问题吗?
谢谢。

回帖(1)

吴湛

2025-7-22 17:45:02

好的,这个问题很常见,USB控制中心无法识别已枚举的“Cypress Bootloader”设备是CX3开发中令人头疼的问题之一。别担心,我们来一步步排查解决。


核心问题:USB控制中心没有检测到设备处于Cypress BootLoader模式(VID: 04B4, PID: 00F3),尽管它在其他列表中可见。


以下是详细的排查和解决步骤:




? 关键检查点 (核心在 Bootloader 模式识别)




  1. 强制设备进入 Bootloader 模式 (最重要的一步!)



    • 你描述的开机步骤可能没有成功让设备进入编程专用的 Bootloader 模式。设备可能进入了运行固件的模式(VID: 04B4, PID: 00XX)或工厂引导模式(VID: 04B4, PID: 00F0)。

    • 正确方法 1 (USB Boot):

      • 按住 S1 (引导加载程序选择) 按钮。 在开发板上找到标记为 S1 (或类似如 BOOT_SEL, MODE_SEL) 的按钮。

      • 保持按住 S1 的同时,按一下 S2 (复位) 按钮 (或断开/再接通 USB 电源)。 这相当于在重置时强制进入特定引导模式。

      • 释放 S1 按钮。


    • 正确方法 2 (I2C EEPROM/SPI Flash Boot):

      • 如果设备尝试从配置好的 SPI 闪存或 I2C EEPROM 启动,但它里面没有有效的固件或配置不正确,它通常会在超时后自动回退到 USB Bootloader 模式 (VID: 04B4, PID: 00F3)。这就是为什么它能在列表中枚举但编程工具看不到的原因——它可能正处于这个回退状态等待命令。

      • 简单尝试: 确认没有主动按住任何按钮,然后直接复位设备(按 S2)或重新插拔 USB 线。等待 5-10 秒,观察设备是否枚举为 Cypress BootLoader


    • 验证成功进入 Bootloader 模式:

      • 设备管理器通用串行总线控制器USB设备 下,应该看到一个名为 Cypress Bootloader 的设备,其 硬件ID 包含 USBVID_04B4&PID_00F3只有看到这个,USB 控制中心才能识别。





  2. Windows 驱动状态验证



    • 打开 设备管理器

    • 当设备成功进入 Bootloader 模式 (VID:04B4, PID:00F3) 后:

      • 检查 Cypress Bootloader 设备是否有黄色感叹号 ❗️ 或问号 ❓。

      • 驱动签名强制问题 (常见!): 在 Windows (尤其是 Win10/Win11) 上,未经 Microsoft 签名的驱动默认会被阻止加载。

        • 解决方法:

          1. 临时禁用: 按住 Shift 键重启电脑 -> 疑难解答 -> 高级选项 -> 启动设置 -> 重启 -> 按 7 (或对应数字) 选择 禁用驱动程序强制签名。重启后尝试在 Bootloader 模式下重新安装驱动或使用工具。

          2. 安装 Cypress Certificates: 将 Cypress SDK 目录下的 DriverInstall 文件夹里的证书安装到 受信任的根证书颁发机构 (参考 SDK 文档)。







  3. USB 控制中心 (USB Control Center) 问题



    • 权限问题: 确保你是以 管理员身份 运行 USB Control Center (右键 -> 以管理员身份运行)。普通用户权限有时无法访问 USB 设备。

    • 软件版本问题:

      • 确保你使用的 USB Control Center 版本与你的 FX3 SDK / CX3 开发环境版本 一致。旧的 UCC 可能不认识新 Bootloader 的特性。

      • 尝试使用 SDK 自带的 CyBootProgrammer 命令行工具。它通常更可靠。例如:
        CyBootProgrammer.exe -d vid_04b4 pid_00f3 -f "<你的固件文件>.img" -b spi


        • 如果这个命令能工作,说明是 USB Control Center 的 GUI 问题。



    • USB 线缆/端口问题: 尝试更换一根 高质量的 USB 数据线 (确认支持数据传输),并尝试连接到电脑 主板后面板 的 USB 2.0 端口 (避免使用集线器或延长线)。




  4. 设备冲突



    • 其他 Cypress 设备: 检查你的电脑是否连接了其他 Cypress USB 设备(其他开发板、工具等)。它们的 VID/PID 可能与 Bootloader (04B4/00F3) 冲突,或者占用资源。

    • 虚拟 COM 端口 (VCP) 冲突 (如果使用 UART): 确保你的 UART-USB 转换器(如果有)使用的 COM 端口没有被其他程序独占占用。




  5. SPI 闪存硬件连接问题 (可能性较小,但仍需排查)



    • 仔细检查 SPI 闪存芯片与 CX3 的连接:焊接是否牢固?引脚连接(CLK, MOSI, MISO, CS/SS)是否正确?对照原理图和开发板设计检查。虚焊或短路会导致编程失败。




  6. SPI 闪存芯片兼容性与支持



    • 确认你的 SPI 闪存型号在 Cypress FX3 Bootloader 支持列表中(查找 SDK 文档,如 FX3 Bootloader and Programming Guide)。常见支持型号有 Winbond W25QXXJV, Macronix MX25LXXXX, 等。

    • 如果你的芯片不在明确支持列表中,尝试使用 SPI flash slave 选项编程时,选择最接近的型号或默认的 Generic 1-bit SPI 模式。






? 总结诊断与解决流程



  1. 首要目标: 确保物理设备在电脑上枚举为 Cypress BootLoader (VID:04B4, PID:00F3)。

  2. 检查方法: 设备管理器 -> 通用串行总线设备或 USB控制器。

  3. 达到目标的办法:

    • 正确进入 Bootloader 模式: 按流程操作 S1 和 S2。这是最最常见的原因。

    • 检查驱动: 有无感叹号?如无,说明枚举成功。如有,解决驱动强制签名或重装驱动。


  4. 确认进入模式后,工具仍不行:

    • 管理员身份运行 USB Control Center。

    • 尝试使用 SDK 附带的 CyBootProgrammer.exe 命令行工具。

    • 更换 USB 线缆和端口。

    • 断开其他可能冲突的 Cypress USB 设备。


  5. UART 日志关注点: 查看启动时的 UART 日志:

    • 是否明确打印出进入 USB Boot Loader 模式或 Waiting for firmware download... 之类的信息?

    • 是否有 SPI 初始化失败的错误信息?(如 ERROR: SPI INIT Failed,可能指向硬件连接问题)。


  6. 尝试其他主机: 在另一台电脑上尝试,排除本机 USB 驱动栈问题。




? 如何解决你遇到的"未找到设备"错误



  1. 严格按照上面描述的方法操作 S1/S2 按钮进入 Bootloader 模式。

  2. 进入后,立即查看设备管理器,确认 Cypress BootLoader (04B4:00F3) 出现且没有黄色感叹号

  3. 如果驱动没问题但设备已出现:

    • 管理员身份重新打开 USB Control Center。

    • 在 USB Control Center 的 BootLoader 标签页,看是否能自动检测到 FX3 USB BootLoader Device

    • 如果还不行,打开 Options -> Device Selection... -> Auto Detect,看是否能找到 Cypress FX3 USB BootLoader (0x04B4, 0x00F3)


  4. 如果命令行工具 CyBootProgrammer.exe 可以工作,就改用这个。




如果按照以上所有步骤操作后问题仍然存在,请提供:



  • 开发板的具体型号。

  • Windows 操作系统版本(精确版本号)。

  • FX3 SDK 版本。

  • SPI 闪存芯片的具体型号。

  • 在执行完 S1/S2 进入模式后,设备管理器里该 Cypress BootLoader 设备的详细属性截图(特别是 硬件ID事件 选项卡里的信息)。

  • UART 输出的完整日志(从断电到尝试加载前的输出)。


问题往往出在进入Bootloader模式的步骤或驱动问题上,坚持多试几次,相信很快就能解决!??

举报

更多回帖

发帖
×
20
完善资料,
赚取积分