fix pin toggle bit order
[x300-pci] / openocd-jtag-boundary-scan.pl
index dafd874..bc5c88e 100755 (executable)
@@ -70,6 +70,8 @@ sub print_io {
        my $bits = shift;
        $bits = reverse $bits; # make substr work as expected
 
+       return if $last_bits eq $bits;
+
        print "pin off io___ ICO prv | " x 4, $openocd_remote,"\n";
        foreach my $i ( 0 .. ($#$pin2io/4)-1 ) {
                foreach my $j ( 0 .. 3 ) {
@@ -164,11 +166,14 @@ if ( $cmd =~ /(\d+)=(\d)/ ) {
        my $io = $pin2io->[$pin];
        my $bit = $io2bit->{$io}->[0];
 
-       my $b = substr($BSR,0,$bit+1)
-               . ( substr($BSR,$bit+1,1) ^ 1 )
+       my $old_bsr = reverse $BSR;
+
+       my $b = substr($old_bsr,0,$bit+1)
+               . ( substr($old_bsr,$bit+1,1) ^ 1 )
                . ( $v & 1 )
-               . substr($BSR,$bit+3)
+               . substr($old_bsr,$bit+3)
                ;
+       $b = reverse $b;
 
        diff_bits( $BSR, $b ), $/;