OpenOCD Olimex with Samsung s3c6410 problem

Hello,

I am trying to program the Samsung SMDK6410 board that has the s3c6410 processor. I am using Olimex’s ARM-USB-OCD debugger, and running OpenOCD on Ubuntu,

Until recently, I was able to connect to the board through the JTAG interface and able to erase/write memory. Yesterday I compiled the U-Boot for this board, and connected through the JTAG interface and wrote the u-boot image at address 0.

Since then I have not been able to connect to the board, and I get the following output from OpenOCD

taran@CONECTech-desktop:~$ sudo openocd
Open On-Chip Debugger 1.0 (2009-01-08-20:52) svn:1307


BUGS? Read http://svn.berlios.de/svnroot/repos/openocd/trunk/BUGS


$URL: svn://svn.berlios.de/openocd/trunk/src/openocd.c $
Info : JTAG tap: s3c6410.unknown tap/device found: 0x2b900f0f (Manufacturer: 0x787, Part: 0xb900, Version: 0x2)
Info : JTAG Tap/device matched
Info : JTAG tap: s3c6410.cpu tap/device found: 0xffffffff (Manufacturer: 0x7ff, Part: 0xffff, Version: 0xf)
Error: JTAG tap: s3c6410.cpu             got: 0xffffffff (mfg: 0x7ff, part: 0xffff, ver: 0xf)
Error: JTAG tap: s3c6410.cpu expected 1 of 1: 0x07b76f0f (mfg: 0x787, part: 0x7b76, ver: 0x0)
Error: trying to validate configured JTAG chain anyway...
Error: Error validating JTAG scan chain, IR mismatch, scan returned 0x07f1
Error: Could not validate JTAG chain, continuing anyway...
Warn : TAP s3c6410.cpu:
Warn : value captured during scan didn't pass the requested check:
Warn : captured: 0x00 check_value: 0x01 check_mask: 0x1f
Warn : in_handler: w/o "in_value", mismatch in SIR
Warn : TAP s3c6410.cpu:
Warn : value captured during scan didn't pass the requested check:
Warn : captured: 0x00 check_value: 0x01 check_mask: 0x1f
Warn : in_handler: w/o "in_value", mismatch in SIR
Error: 'arm11 target' JTAG communication error SCREG SCAN OUT 0x1f (expected 0x10)
Warn : in_handler: w/o "in_value", mismatch in SDR
Warn : TAP s3c6410.cpu:
Warn : value captured during scan didn't pass the requested check:
Warn : captured: 0x00 check_value: 0x01 check_mask: 0x1f
Warn : in_handler: w/o "in_value", mismatch in SIR
Warn : no telnet port specified, using default port 4444
Warn : no gdb port specified, using default port 3333
Warn : no tcl port specified, using default port 6666

After writing the image at address 0, I tried connecting the board with the computer through serial cable, and may have unplugged the JTAG for a while and then plugged in again.

I have double checked that there is no physical damage on the JTAG cable.

The thing that most troubles me is that it was working fine, but after writing that u-boot image, OpenOCD is not recognizing it and the board is sending the “0xffffffff (Manufacturer: 0x7ff, Part: 0xffff, Version: 0xf)” instead of “0x07b76f0f (mfg: 0x787, part: 0x7b76, ver: 0x0)”

I would really appreciate any help !!

I found the solution!

I just added the following line on top of my openocd.cfg file and everything is working fine now.

jtag_speed 1000

Apparently the programmer was talking at a slower speed to the board. But its really weird, because earlier everything was fine without this line. Anybody has an explanation?