> -----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