84 lines
1.8 KiB
Bash
84 lines
1.8 KiB
Bash
#!/bin/bash
|
|
#-----------------------------------------------------------------------
|
|
#
|
|
# plotGt1Maps.sh -- Create heatmaps from GT1 files
|
|
#
|
|
#-----------------------------------------------------------------------
|
|
#
|
|
# 2019-10-08 (marcelk) First version
|
|
#
|
|
|
|
find . -name \*.gt1 |
|
|
xargs -n 1 gt1dump.py |
|
|
cut -c -54 |
|
|
awk '
|
|
function copy() {
|
|
if (length(f))
|
|
for (addr in f)
|
|
n[addr]++
|
|
delete f
|
|
}
|
|
/^\* file:/ {
|
|
copy()
|
|
}
|
|
/^[0-9a-f]/ {
|
|
addr=int("0x"$1)
|
|
for (i=0;i<NF-1;i++)
|
|
f[addr+i]++
|
|
}
|
|
END {
|
|
copy()
|
|
for (y=0;y<256;y++) {
|
|
for (x=0;x<256;x++) {
|
|
addr = y*256+x
|
|
z = addr in n ? n[addr] : 0
|
|
print int(addr/256), addr%256, z
|
|
}
|
|
print ""
|
|
}
|
|
}' > segments.dat
|
|
|
|
gnuplot <<!
|
|
set title 'Gigatron file segment heatmap (32K)'
|
|
set nokey
|
|
set noborder
|
|
set xrange [-1:256]
|
|
set yrange [128:-1]
|
|
set format x2 'xx%02X'
|
|
set format y '%02Xxx'
|
|
set noxtics
|
|
set x2tics out 0,16,255
|
|
set x2tics add (255)
|
|
set ytics out 0,8,127
|
|
set ytics add (127)
|
|
set palette defined (\
|
|
0 .7 .7 .7,\
|
|
.001 0 0 1, \
|
|
2 0 .5 1, \
|
|
3 0 1 1, \
|
|
4 .5 1 .5,\
|
|
5 1 1 0, \
|
|
6 1 .5 0, \
|
|
7 1 0 0, \
|
|
8 1 0 0)
|
|
set cblabel 'Number of GT1 files'
|
|
set cbrange [0.7:]
|
|
set logscale cb
|
|
set cbtics out 1,2
|
|
set nomcbtics
|
|
set terminal png size 1280,960
|
|
set output 'Heatmap_32K.png'
|
|
# Invalidate pages >= 128
|
|
plot 'segments.dat' using 2:1:(\$1<128?\$3:1/0) with image
|
|
|
|
# 64K view
|
|
set title 'Gigatron file segment heatmap (64K)'
|
|
set yrange [256:-2]
|
|
set ytics out 0,16,255
|
|
set ytics add (255)
|
|
set output 'Heatmap_64K.png'
|
|
plot 'segments.dat' using 2:1:3 with image
|
|
!
|
|
|
|
open Heatmap_*K.png
|