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/