contrib/itmdump: add a hack to allow direct dumping of specific SWIT, fix timestamp
commite7e13965782a114cca369a71382cd2dd2a7b8da0
authorPaul Fertser <fercerpav@gmail.com>
Mon, 9 Feb 2015 13:51:33 +0000 (9 16:51 +0300)
committerPaul Fertser <fercerpav@gmail.com>
Thu, 16 Apr 2015 19:25:30 +0000 (16 20:25 +0100)
tree7f92d35236d3ee67fc340bbc346555a1e7b31b7a
parent5387d616a3d1b4550f9acecda26ead380d37dedf
contrib/itmdump: add a hack to allow direct dumping of specific SWIT, fix timestamp

Currently itmdump is not a production-quality code hence this hack
seems to be appropriate.

More robust handling is possible with libswo-based swodec tool that's
available from http://git.zapb.de/ .

This adds a new command line option -d N where N is a stimulus number
you want to dump (counting from 1).

The idea here is that if you're interested to live-monitor just a
single stimulus port, you can use this utility directly. If one wants
to demultiplex the TPIU stream, the following is proposed:

1. Use https://gitorious.org/multiplex/multiplex utility that can
accept binary data from a file/pipe/stdin and arbitrary number of TCP
connections. It simply mirrors all the incoming data to all the
accepted connections;

2. Use socat to connect itmdump to the proxy mentioned in 1. and then
either dump the results to separate files or share via their dedicated
TCP ports.

Example script (inspired by http://openocd.zylin.com/#/c/1662/ ,
enables and disables specific itm ports on demand):

for i in `seq 0 31`; do
  while true; do
    socat -U TCP-LISTEN:$((8000+$i)),reuseaddr \
             SYSTEM:"echo itm port $i on | nc -q0 localhost 4444 > /dev/null; nc localhost 7777 | stdbuf -oL itmdump -d$((i+1))"
    echo itm port $i off | nc -q0 localhost 4444 > /dev/null
  done < /dev/null >&0 2>&0 &
done

Change-Id: Iaeb102436eaa5b106002083f2ffe758fb7bd83e5
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
Reviewed-on: http://openocd.zylin.com/2537
Tested-by: jenkins
contrib/itmdump.c