display pin descriptions for cpld
authorDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 21 Jun 2016 16:34:38 +0000 (18:34 +0200)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 21 Jun 2016 16:34:38 +0000 (18:34 +0200)
openocd-jtag-boundary-scan.pl

index 36f7d3f..f4e4059 100755 (executable)
@@ -73,11 +73,26 @@ warn "# pin2io = ",dump( $pin2io );
 #store \$pin2io, $bsdl_file . '.pin2io.storable';
 store \$pin2io, $entity . '.pin2io.storable';
 
+my $pin_desc;
+foreach my $pin_file ( glob "pins/$entity*.tsv" ) {
+       open(my $fh, '<', $pin_file);
+       while(<$fh>) {
+               chomp;
+               my ($pin,$desc, $bcm) = split(/\t+/,$_,3);
+               $pin_desc->{$pin} = $desc;
+               gpio::add_bcm_desc( $bcm => $desc );
+       }
+       close($fh);
+       warn "# $pin_file ",dump($pin_desc);
+}
+
+=for remove
 my @sort = sort {
        my $aa = $a; $aa =~ s/\D+//g;
        my $bb = $b; $bb =~ s/\D+//g;
        $aa <=> $bb } keys %$io2bit;
 warn "# sort = ",dump(@sort);
+=cut
 
 sub bits {
        my $bits = shift;
@@ -102,12 +117,25 @@ sub print_io {
                        my $pin = ($#$pin2io/4) * $j + $i + 1; # columns
                        my $io = $pin2io->[$pin];
                        my $o = $io2bit->{$io}->[0];
+
                        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, bits($b), bits($b ne $l ? $l : '')
+
+                               my $desc = $pin_desc->{$pin} || '';
+                               my $bits = bits($b);
+                               if ( $b ne $l ) {
+                                       my @b = split(//, $bits);
+                                       my @l = split(//, bits($l));
+                                       $bits = '';
+                                       foreach ( 0 .. $#b ) {
+                                               $bits .= $b[$_] eq $l[$_] ? $b[$_] : "\e[33;7;1m$b[$_]\e[0m";
+                                       }
+                               }
+
+                               printf "%-3d %-3d %-5s %3s %-8s | ", $pin, $o, $io, $bits, $desc;
                        } else {
-                               printf "%-3d ... %-5s %3s %3s | ", $pin, $io, '', '';
+                               printf "%-3d ... %-5s %3s %-8s | ", $pin, $io, '', '';
                        }
                }
                print "\n";
@@ -138,6 +166,8 @@ sub bin2hex {
 
 #my $cmd;
 
+
+
 my $BSR;
 
 # first sample