USB论坛
直播中

汪潇潇

8年用户 920经验值
私信 关注
[问答]

使用OpenOCD进行调试面临停机问题怎么解决?

我在 CYUSB3014BZXC 的帮助下构建了一个定制的 USB 3.0 开发板,用于高速通信目的,在测试开发板期间,我使用 CY7C6521532L-TXI 作为我的USB 串行双通道桥接控制器,支持 JTAG,32 引脚 QFN 用于调试目的。
在串行实用程序配置中,我定制的 PCB 上的 CY7C6521532L-TXI 芯片的固件版本是 1.0.3.78,如您在我提供的屏幕截图中所看到的。
当我尝试调试CYPRESS™的 Fx3 开发套件( CYUSB3KIT-003 )上的芯片时,使用与USB串行双通道桥接控制器相同的 CY7C6521532L-TXI 芯片进行调试成功,该芯片的固件版本为 1.0.10.2,即比我定制的 PCB 板上的芯片版本略高。
是否有可能更新我定制的 PCB 上芯片的固件版本,以便调试可以使用更新的版本再次运行?
下面提供的是 USB 配置实用程序的屏幕截图,请查看,如能得到任何帮助我将非常感激。
注意:我使用 Eclipse IDE(1.3.5)版本来运行调试并将固件刷入芯片,我参考了EZ-USB™ FX3 SDK 来使用一些固件示例在我的芯片上运行。


这些是 USB 串行配置实用程序启动页面。


回帖(1)

陈存楼

2025-5-9 17:58:13

针对使用OpenOCD调试时遇到的停机问题,以下是逐步解决方案:




1. 固件版本升级



  • 问题分析:官方套件的固件版本(1.0.10.2)较新,可能修复了旧版本(1.0.3.78)的兼容性问题。

  • 解决方案

    1. 下载Cypress提供的CyControl工具或固件更新工具。

    2. 连接定制板的CY7C6521532L-TXI到PC,通过USB接口进入固件升级模式(参考数据手册)。

    3. 将固件升级至最新版本(如1.0.10.2),确保与OpenOCD兼容。

    4. 重新上电后验证JTAG通信。





2. 验证硬件设计



  • 关键检查点

    • JTAG引脚连接:确认TCK、TMS、TDI、TDO、nTRST等引脚与目标芯片(如FX3)的连接正确,无短路/断路。

    • 上拉电阻:确保TMS、TCK等信号线有适当上拉(通常4.7kΩ至3.3V),避免信号浮空。

    • 电源稳定性:测量JTAG接口的电源电压(3.3V/1.8V),确保无噪声或跌落。

    • 信号完整性:使用示波器检查TCK信号边沿是否陡峭,是否存在振铃或过冲(需<30% Vpp)。





3. 调整OpenOCD配置



  • 配置优化步骤

    1. 降低JTAG时钟速度
      adapter speed 1000  ; 默认高速可能不稳定,尝试降至1MHz或更低

    2. 设置正确的复位信号
      reset_config srst_only  ; 根据硬件设计选择srst或trst

    3. 指定目标芯片ID
      set CHIP_ID 0x4ba00477  ; 确认FX3的IDCODE是否匹配(参考芯片手册)
      jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $CHIP_ID

    4. 使用官方开发板的配置文件作为模板,修改适配参数。





4. 驱动与软件环境



  • 驱动验证

    • 在设备管理器中确认CY7C6521532L-TXI的驱动已正确安装(无感叹号)。

    • 如果使用Linux,检查lsusb是否能识别设备,并加载cypress_mb内核模块。


  • OpenOCD版本

    • 升级到最新版本(如v0.12.0),或使用Cypress提供的补丁版本。





5. 信号完整性测试



  • 操作步骤

    1. 使用逻辑分析仪捕获JTAG信号(TCK、TMS、TDI、TDO)。

    2. 检查信号是否在时钟边沿稳定,数据与时钟同步。

    3. 如果发现噪声,尝试以下改进:

      • 缩短JTAG走线长度。

      • 添加33Ω串联电阻或100pF电容滤波。

      • 避免信号线与高频信号(如USB 3.0差分对)平行走线。






6. 分步调试与日志分析



  • 启用OpenOCD详细日志
    openocd -f interface/your_interface.cfg -f target/your_target.cfg -d3 -l debug.log

  • 关键日志线索

    • 是否检测到JTAG设备(jtag status显示“tap/device found”)。

    • 是否有“TDO mismatch”或“timeout”错误,指向信号或配置问题。





7. 已知问题与替代方案



  • 临时绕过停机问题

    • 在OpenOCD命令中尝试arm semihosting disable关闭半主机模式。

    • 使用halt命令后手动恢复,检查是否因断点设置导致死锁。


  • 替代调试工具

    • 如果问题持续,尝试使用Cypress提供的专用调试工具(如CySuite)验证硬件功能。





总结建议



  1. 优先升级固件,确保与OpenOCD兼容。

  2. 硬件检查重点关注JTAG信号质量和电源。

  3. 逐步降速调试,从低频率开始测试,逐步提高。

  4. 利用日志定位具体错误阶段(初始化、通信、复位)。


通过上述步骤,应能定位并解决停机问题。如仍无法解决,建议联系Cypress技术支持并提供完整日志和硬件设计文件。

举报

更多回帖

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