Hi,
I got a busblaster v2 from seeed and tried to use it to debug something using openocd on my BeagleBoard xM
I connected it quite similar to the description of the pandaboard in the docu section - but unfortunately I have no success.
Has anyone ever tried this, or atleast can help me figure out what's wrong.
I double checked the wiring, also trying to connect all of the busblasters pins and also connecting it like the flyswatter beagle adapter cable does - always with the same result.
I invoke openocd-0.5.0 with
openocd -f /home/peter/busblaster.cfg -f board/ti_beagleboard_xm.cfg
Open On-Chip Debugger 0.5.0 (2012-01-24-22:59)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.berlios.de/doc/doxygen/bugs.html
Info : only one transport option; autoselect 'jtag'
2000 kHz
10 kHz
Warn : dm37x.dsp: huge IR length 38
trst_only separate trst_push_pull
Info : max TCK change to: 30000 kHz
Info : clock speed 10 kHz
Info : JTAG tap: dm37x.jrc tap/device found: 0x2b89102f (mfg: 0x017, part: 0xb891, ver: 0x2)
Info : JTAG tap: dm37x.dap enabled
Warn : Invalid ACK 0x6 in JTAG-DP transaction
Polling target failed, GDB will be halted. Polling again in 100ms
Polling target failed, GDB will be halted. Polling again in 300ms
Polling target failed, GDB will be halted. Polling again in 700ms
Polling target failed, GDB will be halted. Polling again in 1500ms
Polling target failed, GDB will be halted. Polling again in 3100ms
Info : accepting 'telnet' connection from 4444
Polling target failed, GDB will be halted. Polling again in 6300ms
> targets
TargetName Type Endian TapName State
-- ------------------ ---------- ------ ------------------ ------------
0* dm37x.cpu cortex_a8 little dm37x.dap unknown
Polling target failed, GDB will be halted. Polling again in 6300ms
> scan_chain
TapName Enabled IdCode Expected IrLen IrCap IrMask
-- ------------------- -------- ---------- ---------- ----- ----- ------
0 dm37x.dap Y 0x00000000 0x00000000 4 0x01 0x0f
1 dm37x.arm2 n 0x00000000 0x00000000 4 0x01 0x0f
2 dm37x.dsp n 0x00000000 0x00000000 38 0x25 0x3f
3 dm37x.d2d n 0x00000000 0x00000000 4 0x01 0x0f
4 dm37x.jrc Y 0x2b89102f 0x1b89102f 6 0x01 0x3f
0x0b89102f
0x0b89102f
Polling target failed, GDB will be halted. Polling again in 6300ms
Polling target failed, GDB will be halted. Polling again in 6300ms
Polling target failed, GDB will be halted. Polling again in 6300ms
> reset init
10 kHz
JTAG tap: dm37x.jrc tap/device found: 0x2b89102f (mfg: 0x017, part: 0xb891, ver: 0x2)
JTAG tap: dm37x.dap enabled
Invalid ACK 0x6 in JTAG-DP transaction
in procedure 'reset'
> amdm37x_dbginit dm37x.cpu
target not examined yet
Runtime Error: target/amdm37x.cfg:194:
in procedure 'amdm37x_dbginit'
in procedure 'cortex_a8' called at file "target/amdm37x.cfg", line 194
Why is the state always 'unknown', is this related to the
"Warn : Invalid ACK 0x6 in JTAG-DP transaction"
message?
If I connect gdb to open ocd it crashes
Info : accepting 'gdb' connection from 3333
Warn : acknowledgment received, but no packet pending
undefined debug reason 6 - target needs reset
my busblaster.cfg:
cat /home/peter/busblaster.cfg
interface ft2232
ft2232_device_desc "Dual RS232-HS"
ft2232_layout jtagkey
ft2232_vid_pid 0x0403 0x6010
jtag_khz 2000
Can anyone please help me?
Thanks,
Peter
Everything looks good in your config file I think. Have you tried reflashing the buffer on the Bus Blaster just to be sure it is working well?
I did upload the latest svf via urjtag and it seemed to work - but the result is the same.
Any ideas what to try?
Thanks,
Peter
do you have any other device to test with ? So you can rule out the problem with busblaster.
This may still be relevent, but I don't notice the warning message in your screen dumps. quoted from http://www.jonmasters.org/blog/2010/12/ ... eboard-xm/ (http://www.jonmasters.org/blog/2010/12/13/using-openocd-with-beagleboard-xm/)
Due to this “fixup”, the DM37x’s correctly provided ROM table information will be “fixed” to use the wrong DAP address, which won’t work. For the moment, find the following loop in src/target/arm_adi_v5.c:
/* Some CPUs are messed up, so fixup if needed. */
for (i = 0; i < sizeof(broken_cpus)/sizeof(struct broken_cpu); i++)
if (broken_cpus[i].dbgbase == dbgbase &&
broken_cpus[i].apid == apid) {
LOG_WARNING("Found broken CPU (%s), trying to fixup "
"ROM Table location from 0x%08x to 0x%08x",
broken_cpus[i].model, dbgbase,
broken_cpus[i].correct_dbgbase);
dbgbase = broken_cpus[i].correct_dbgbase;
break;
}
Wrap it with a #if 0 (and don't forget to also comment or define away the definition of "i") such that it won't take effect.
The flyswatter2 wiki, http://www.tincantools.com/wiki/Flyswat ... _XM_How_To (http://www.tincantools.com/wiki/Flyswatter2_Beagleboard_XM_How_To) , shows a working version
http://www.tincantools.com/wiki/File:Be ... tartup.png (http://www.tincantools.com/wiki/File:Beaglexm_ocdstartup.png) as 2011-09-04-23:43
Hi,
I tried it against a normal beagleboard - same result :/
Can anyone help me investigating this issue? Has anyone done this before?
Thanks,
I don't have this hardware, so no i've not done this. But I'm always willing to try!
Google turned up this today
http://groups.google.com/group/pandaboa ... 21c2e1179f (http://groups.google.com/group/pandaboard/browse_thread/thread/55502321c2e1179f)
which leads to
https://bugs.launchpad.net/ubuntu/+sour ... bug/784626 (https://bugs.launchpad.net/ubuntu/+source/x-loader/+bug/784626)
Seems it could be x-loader related?
Thanks for the hint - it was in fact the x-loader as it seems.
I unpacked and used the one from ubuntu and it now should work.
I did use the 5.0 version already, but even in this one the jtag was disabled (which is funny though as you can see the devices on the scan chain) - the ubuntu one did work nevertheless.
So many thanks to AndThen and everybody else.
Hi, beg ur pardon... I m goin to try to debug my BBxm too... but I m a very noob.
Can I ask where to find the schematics for correct connections between BBxm and BBv2?
Or even which are the difference between the connection with Pandaboard (for which I found the docs on ur site) and the BBxm?
Thank u very much.
Look for beagleboard openocd connection. I guess it should be in elinux wiki. It will probably be compatible with the pandaboard, except for the commands used.
Thank u robot, that's what I ve done... the thing that confuses me abit is:
In the first post here, broeggle says "i connected it quite similar..." (I m not english, so the words "quite similar" makes me guess it's NOT EXACTLY the same...) so I asked.
To be honest PB and BBxm jtag should be the same (TI 14 pin connector) the only think not really clear is the Voltage:
Does the BBv2 gets the power (and so voltage) from the Vref/Vio pin number 5 from the BBxm like the PB (where the name is: VIO_1V8) ?
Thank u very much for ur help.
Sorry.. one more thing:
Seems that in order to select the ARM MCU in the ICEPICK chain u should be able to control EMU0 and EMU1 pins on the 14 TI JTAG adapter. But actually they're not connected to BBv2...
Can someone enlighten me about that? or at least point me to some addictional infos?
Thank u very much..
Be sure not to have the jumper on BBv2!!, The BBv2 is powered from USB, and by shorting the jumper you will provide 3V to the JTAG target.
When the jumper is opened, target will provide the voltage to the "buffer". (Beagleboard is 1.8V, BBv2 can work with targets from 1.8 to 3V)
I am not sure about the EMUx pins. They are not necessary, but need to have in some state, for he openocd to work. (I think they can by controlled through the JTAG) You will need to make some more research about that :-)
If you find out about EMU1 and EMU0 please let me know, I can add them to a new buffer and break them out to the extra IO area.
Just to expand a little on what robots said: connect the 1.8volt supply of the target board to the VTG pin of the Bus Blaster. Make sure JP4 (jumper 4) is NOT connected, that feeds 3.3volts from the Bus Blaster into your target.