> -----Original Message-----
> From: openocd-development-boun...@lists.berlios.de [mailto:openocd-
> development-boun...@lists.berlios.de] On Behalf Of Duane Ellis
> Sent: zaterdag 21 november 2009 16:42
> To: Openocd-Dev
> Subject: [Openocd-development] Openocd vrs Commercial jtag dongles
> 
> Recently, I've been using quite a few commercial jtag tools from chip
> vendors.
> 
> One thing I've noticed is that they all have implement the design with
> an small usb-controller + FPGA of some type (typically a xilinx
> spartan). I can see the real benefit, they download and flash the
target
> at an unbelievable speed, ie: couple seconds for 256K of data. In
> contrast, non-fpga solutions, (bitbang & ftdi, etc) are much slower
overall.
> 
> My guess is they are creating a hugely fast chip specific download
> engine they just feed data bytes to - and it operates at some hugely
> fast speed (that probably helps) In theory, the dongle has 2 modes,
> "simple slow bitbang" - once the target is determined, download an
> acceleration engine the fpga.
> 
> The debugger step-in/over/line/etc rate with these tools is so fast...
> perhaps they have have implemented some common tasks like step and
> register dump type sequences in the dongle's fpga.  Watch windows are
> for example very snappy.
> 
> Sadly, that also requires a lot of engineering expertise to write that
> fpga code. in the cases I've seen [ie: vendor supplied tools] the chip
> companies also have a large pool of people who know or understand
> verilog/vhdl and can write such fpga code.

The FPGA isn't that difficult. I've created a similar setup using
OpenOCD. The biggest problem I had was that OpenOCD is spending most of
its time creating JTAG bit streams. Its not the bit-banging that takes
most of the time! On a 333MHz platform it took about 15 minutes to
program 180kB into flash (with an FPGA for the JTAG interface!).

To get more speed I created pre-defined JTAG commands for memory write
and memory read and fill in the blanks (address and data) when necessary
(very target specific ofcourse!). This reduced the programming time to a
few seconds. I guess the effect will be less on a PC, but I think it
might be worth to do some profiling. This could be made into a generic
solution if OpenOCD would support a caching mechanism that allows
patching existing JTAG bit streams. 

Nico Coesel

_______________________________________________
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to