I've been talking to the openJTAG people (irc://irc.freenode.net#openJTAG ) and thought it was useful to collect the info I found here, along with a little summary of balloonbaord JTAG requirements (which would no doubt benefit from some input from hardware types). JTAG experts go to the bottom for actual actions... Balloon needs JTAG tools and hardware for two purposes - 1) initial board programming 2) debugging and testing These have differing charactistics to some extent, although there is also quite a lot of commonality. The initial programming is a basic use of JTAG and whilst we'd like it to go as fast as possible it works fine with quite slow hardware interfacing to the JTAG. The process is also very simple: download some stuff. For testing things are more complicated in that you really want something that talks to the JTAG as fast as possible as you will be using it interactively, and the software needs to do more complicated stuff like display results and understand CPU debug modes etc. Currently for 1) we use jflash on balloon2 and bflash on balloon3, both with the xilinx-a-like dongle. Does bflash support balloon2 as well? for 2) we use XJTAG, which is very good but impractically expensive for many interested parties at several thousand pounds per seat. It would make sense to use existing open hardware/free software solutions where these are sufficient for our needs, or likely to become so with a bit of development, rather than inventing all this stuff again ourselves, so I took a look at what is available. This project provides much of what we want and is aiming at the same goals, but would need some work to be directly useable: http://openocd.berlios.de/web/ It is developed by Dominic Rath (vmaster on #openJTAG) It currently supports arm7 and 9, and xscale support is 'coming along nicely', which translates to "i got the basics working, but all the details have to be filled in". Strongarm is also not currently supported. You can see the talk given at FOSDEM on the software here: http://openocd.berlios.de/OpenOCD_Fosdem2006_talk.odp Or if you prefer to watch the video: http://free-electrons.com/community/videos/conferences (Openocd, the Open On-Chip Debugger, by Dominic Rath) For hardware it supports wigglers (which I think correspond to our dongles - if not adding support would be trivial - someone needs to test this), and FT2232-based usb devices, which seems to be the way everyone is implmenting fast devices. You can layout your own from this: http://www.ftdichip.com/Projects/MPSSE/FT2232C-Proj03_v11.pdf or here: http://www.olimex.com/dev/arm-usb-ocd.html (euro60, available any minute now) This device is also supported and can impersonate various devices because it's implemented as a CPLD http://www.amontec.com/ Chameleon pod (euro129) The main thing missing at the moment, that we need, is multi-chain support. OpenOCD supports multi-cores but only one JTAG chain right now. We are not the only people that would like this feature. Domonic thinks "that could be added quite easily", but not for at least a couple of weeks as he currently has finals. Sending him a balloon to experiment on would probably help. It seems to me that we would be better off adding multi-chain, our dongle, and strongarm support to this framework, and using the available, supported faster JTAG hardware than by developing something from scratch ourselves. But I am no JTAG expert and it would be good if Dave and Steve had a look. vmaster asked that I get 'our JTAG people' (that's Dave, Steve, praf and nick so far I think) to join #openjtag for a chat about what is needed. Wookey -- Aleph One Ltd, Bottisham, CAMBRIDGE, CB5 9BA, UK Tel +44 (0) 1223 811679 work: http://www.aleph1.co.uk/ play: http://wookware.org/