display pin and offset in diff
[x300-pci] / openocd-jtag-boundary-scan.pl
index aa4ea26..36f7d3f 100755 (executable)
@@ -9,6 +9,7 @@ use Storable;
 
 my $openocd_remote = shift @ARGV || 'picam:4444';
 my $bsdl_file = $ENV{BSDL} || '_3128at100.bsd';
+$bsdl_file = '3064at44.bsd'; # XXX 
 my $BOUNDARY_LENGTH = 288;
 my $entity;
 
@@ -21,6 +22,8 @@ my $pin_map = '';
 
 $|=1; # flush stdout
 
+require 'gpio.pl';
+
 open(my $bsdl, '<', $bsdl_file);
 while(<$bsdl>) {
        if ( m/PIN_MAP_STRING/ ) {
@@ -76,6 +79,16 @@ my @sort = sort {
        $aa <=> $bb } keys %$io2bit;
 warn "# sort = ",dump(@sort);
 
+sub bits {
+       my $bits = shift;
+       return $bits; # FIXME disable for now
+       $bits =~ s/0/ /;
+       $bits =~ s/^(.)0/$1 /;
+       $bits =~ s/^1/I/;
+       $bits =~ s/^(.)1/$1./;
+       return $bits;
+}
+
 my $last_bits = '';
 sub print_io {
        my $bits = shift;
@@ -92,7 +105,7 @@ sub print_io {
                        if ( defined $o ) {
                                my $l = $b = substr($bits, $o, 3);
                                $l = substr($last_bits,$o,3) if $last_bits;
-                               printf "%-3d %-3d %-5s %3s %3s | ", $pin, $o, $io, $b, $b ne $l ? $l : ''
+                               printf "%-3d %-3d %-5s %3s %3s | ", $pin, $o, $io, bits($b), bits($b ne $l ? $l : '')
                        } else {
                                printf "%-3d ... %-5s %3s %3s | ", $pin, $io, '', '';
                        }
@@ -143,6 +156,7 @@ while (<$sock>) {
                diff_bits($BSR, $bin);
                $BSR = $bin;
                print_io $bin if $bin ne $last_bits;
+               gpio::pins();
                last;
        } else {
                warn "# in ",dump($_);
@@ -160,7 +174,7 @@ sub diff_bits {
                        $o[$i]='.';
                } else {
                        my $pin = $bit2pin->{ $BOUNDARY_LENGTH - ($i * 3) - 3 }->[0];
-                       $o[$i] = " $pin:" . $o[$i] . '>' . $n[$i];
+                       $o[$i] = " $pin@" . ( $i * 3 ) . ":" . $o[$i] . '>' . $n[$i];
                }
        }
        my $diff = join('', @o);
@@ -216,6 +230,7 @@ warn "XXX",length($old_bsr), " == ",length($b);
        print $sock "irscan x300.tap 0x55\n"; # SAMPLE/PRELOAD
        print $sock "drscan x300.tap $BOUNDARY_LENGTH 0\n";
 } else {
+       gpio::cmd( $cmd );
        print $sock "irscan x300.tap 0x55\n"; # SAMPLE/PRELOAD
        print $sock "drscan x300.tap $BOUNDARY_LENGTH 0\n";
 }