芯来科技
直播中

张华

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

rs232-hs读取idcode的时候出现0xffffffff的情况,怎么处理?

在读取idcode的时候出现0xffffffff的情况,还是第一次遇到一直没有办法处理,不知道是rtl有点问题还是如果要调试双核在nucleistudio环境的配置上要进行修改,以下是console的状况和openocd:
Open On-Chip Debugger 0.11.0+dev-01875-g13d7bc6cf (2021-09-25-22:27)
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html
Warn : riscv1.cpu: nonstandard IR value
Info : libusb_open() failed with LIBUSB_ERROR_NOT_FOUND
Info : no device found, trying D2xx driver
Info : D2xx device count: 3
Info : Connecting to “Dual RS232-HS A” using D2xx mode…
Info : clock speed 1000 kHz
Info : JTAG tap: riscv.cpu tap/device found: 0x12030a6d (mfg: 0x536 (Nuclei System Technology Co Ltd), part: 0x2030, ver: 0x1)
Info : JTAG tap: riscv1.cpu tap/device found: 0xffffffff (mfg: 0x7ff (), part: 0xffff, ver: 0xf)
Warn : JTAG tap: riscv1.cpu       UNEXPECTED: 0xffffffff (mfg: 0x7ff (), part: 0xffff, ver: 0xf)
Error: JTAG tap: riscv1.cpu  expected 1 of 1: 0x12030a6d (mfg: 0x536 (Nuclei System Technology Co Ltd), part: 0x2030, ver: 0x1)
Error: Trying to use configured scan chain anyway…
Error: riscv1.cpu: IR capture error; saw 0x1f not 0x1f
Warn : Bypassing JTAG setup events due to errors
Error: dtmcontrol is 0. Check JTAG connectivity/board power.
Warn : target riscv.cpu examination failed
Error: Unsupported DTM version: 8
Warn : target riscv1.cpu examination failed
Info : starting gdb server for riscv.cpu on 3333
Info : Listening on port 3333 for gdb connections
Info : starting gdb server for riscv1.cpu on 3334
Info : Listening on port 3334 for gdb connections
Error: Target not examined yet
Error: Unsupported DTM version: 8
openocd:
adapter speed    1000
adapter driver  ftdi
ftdi_device_desc “Dual RS232-HS”
ftdi_vid_pid 0x0403 0x6010
ftdi_oscan1_mode on
transport select jtag
ftdi_layout_init 0x0008 0x001b
ftdi_layout_signal nSRST -oe 0x0020 -data 0x0020
ftdi_layout_signal TCK -data 0x0001
ftdi_layout_signal TDI -data 0x0002
ftdi_layout_signal TDO -input 0x0004
ftdi_layout_signal TMS -data 0x0008
ftdi_layout_signal JTAG_SEL -data 0x0100 -oe 0x0100
set _CHIPNAME riscv
set _CHIPNAME1 riscv1
jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x12030a6d
jtag newtap $_CHIPNAME1 cpu -irlen 5 -expected-id 0x12030a6d -ircapture 0x1f
set _TARGETNAME $_CHIPNAME.cpu
set _TARGETNAME1 $_CHIPNAME1.cpu
target create $_TARGETNAME riscv -chain-position $_TARGETNAME -coreid 0
target create $_TARGETNAME1 riscv -chain-position $_TARGETNAME1 -coreid 0
tcl_port disabled
telnet_port disabled
gdb_port 3333
init
if {[ info exists pulse_srst]} {
  ftdi_set_signal nSRST 0
  ftdi_set_signal nSRST z
}
halt
echo “Ready for Remote Connections”
                                                                                

回帖(1)

京五环以外

2025-3-10 17:43:45

在读取IDCODE时出现0xffffffff的情况,通常表示JTAG链没有正确识别到目标设备或通信出现了问题。以下是一些可能的原因和解决方法:


1. 检查硬件连接



  • JTAG连接:确保JTAG连接器与目标设备的引脚连接正确,特别是TDI、TDO、TCK、TMS等信号线。

  • 电源:确保目标设备的电源稳定,电压在正常范围内。

  • 复位信号:检查目标设备的复位信号是否正常,确保设备没有处于复位状态。


2. 检查JTAG链配置



  • JTAG链长度:确认JTAG链的长度是否正确,特别是在多设备JTAG链中,确保每个设备的IDCODE都正确配置。

  • JTAG速度:尝试降低JTAG时钟速度,看是否能够正确读取IDCODE。


3. OpenOCD配置



  • 配置文件:检查OpenOCD的配置文件,确保JTAG链的设备顺序和IDCODE设置正确。

  • 调试接口:确认调试接口(如FTDI、D2XX等)的配置正确,并且驱动程序已正确安装。


4. 调试信息分析



  • 错误信息:从你提供的日志中,libusb_open() failed with LIBUSB_ERROR_NOT_FOUND表示OpenOCD无法找到调试接口设备。这可能是由于驱动程序未正确安装或设备未正确连接。

  • D2XX驱动:如果使用的是FTDI的D2XX驱动,确保驱动程序已正确安装,并且设备被系统识别。


5. RTL代码检查



  • JTAG接口实现:如果怀疑是RTL代码的问题,检查JTAG接口的实现,确保TAP控制器和边界扫描链的逻辑正确。

  • 仿真验证:在仿真环境中验证JTAG接口的功能,确保在硬件实现之前能够正确读取IDCODE。


6. 双核调试配置



  • 核选择:在双核系统中,确保OpenOCD配置文件中正确指定了要调试的核。

  • 调试模式:检查是否启用了正确的调试模式(如halt模式),以确保调试器能够正确访问目标核。


7. Nuclei Studio环境



  • 调试配置:在Nuclei Studio中,检查调试配置,确保调试器设置正确,特别是JTAG接口和目标设备的选择。

  • OpenOCD版本:确保使用的OpenOCD版本与Nuclei Studio兼容,并且支持目标设备的调试。


8. 进一步调试



  • JTAG信号分析:使用逻辑分析仪或示波器捕获JTAG信号,检查TDI、TDO、TCK、TMS等信号是否正常。

  • OpenOCD日志:启用更详细的OpenOCD日志输出,查看是否有更多的调试信息可以帮助定位问题。


总结


出现0xffffffff的情况通常是由于JTAG链无法正确识别目标设备或通信问题导致的。建议从硬件连接、JTAG链配置、OpenOCD配置、RTL代码等方面逐步排查问题。如果问题依然存在,可以尝试使用更详细的调试工具和方法来进一步分析。

举报

更多回帖

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