X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=openocd-jtag-boundary-scan.pl;h=b2a279416317fd81df989746616dca959ba1a735;hb=e1b49faf67de9ba598bf94743e828478fab86eec;hp=bc02ce3ee1d93463d74f14d65e8b69a3dd5742d7;hpb=299ff93ee0ef8869f56c73bf07c348d71f5ca84d;p=x300-pci diff --git a/openocd-jtag-boundary-scan.pl b/openocd-jtag-boundary-scan.pl index bc02ce3..b2a2794 100755 --- a/openocd-jtag-boundary-scan.pl +++ b/openocd-jtag-boundary-scan.pl @@ -5,6 +5,9 @@ use strict; use autodie; use Data::Dump qw(dump); use IO::Socket::INET; +use Storable; + +my $openocd_remote = shift @ARGV || 'picam:4444'; my $bit2pin; my $io2bit; @@ -13,6 +16,7 @@ my $pin2io; my $in_pin_map = 0; my $pin_map = ''; +$|=1; # flush stdout open(my $bsdl, '<', '_3128at100.bsd'); while(<$bsdl>) { @@ -53,6 +57,7 @@ foreach my $map ( split(/\s*,\s*/, $pin_map) ) { } warn "# pin2io = ",dump( $pin2io ); +store \$pin2io, '/dev/shm/pin2io.storable'; my @sort = sort { my $aa = $a; $aa =~ s/\D+//g; @@ -64,7 +69,7 @@ sub print_io { my $bits = shift; my $i = 0; # foreach my $io ( @sort ) { - print "pin off io___ I C O | " x 4, "\n"; + print "pin off io___ I C O | " x 4, $openocd_remote,"\n"; foreach my $i ( 0 .. ($#$pin2io/4)-1 ) { foreach my $j ( 0 .. 3 ) { #my $pin = ($i*4) + $j + 1; # rows @@ -86,7 +91,7 @@ sub print_io { # printf "hex = %4s binary = %16s\n", $h, hex2bin($h); #} -my $sock = IO::Socket::INET->new('picam:4444'); +my $sock = IO::Socket::INET->new($openocd_remote); sub hex2bin { my $h = shift; @@ -119,6 +124,7 @@ while (<$sock>) { if ( /^\s*([A-F0-9]+)/ ) { my $hex = $1; my $bin = hex2bin($hex); + diff_bits($BSR, $bin); $BSR = $bin; print_io $bin; last; @@ -140,7 +146,8 @@ sub diff_bits { $o[$i].='>'.$n[$i]; } } - return join('', @o); + my $diff = join('', @o); + print "# diff_bits $diff\n"; } print "[press enter]\n"; @@ -159,8 +166,10 @@ if ( $cmd =~ /(\d+)=(\d)/ ) { . substr($BSR,$bit+3) ; - print diff_bits( $BSR, $b ), $/; + diff_bits( $BSR, $b ), $/; + print $sock "irscan x300.tap 0x55\n"; # SAMPLE/PRELOAD + print $sock "drscan x300.tap 288 0x", bin2hex($b), "\n"; print $sock "irscan x300.tap 0x00\n"; # EXTEST print $sock "drscan x300.tap 288 0x", bin2hex($b), "\n"; } else {