Merge commit '01fd5cb3f0da802ca82d3b6aef46d2a3d8e6c15c'
[osmocom-bb.git] / src / host / osmocon / memdump_convert.pl
1 #!/usr/bin/perl
2
3 my $num_line = 0;
4 my $num_hex = 0;
5 my $oldaddr;
6
7 while (my $line = <STDIN>) {
8         chomp($line);
9         $num_line++;
10         my (@hex) = $line =~ /(\w{8}): (\w{8}) (\w{8}) (\w{8}) (\w{8})  (\w{8}) (\w{8}) (\w{8}) (\w{8})/;
11         my $addr = hex(shift @hex);
12         if ($addr != 0 && $addr != $oldaddr + 0x20) {
13                 printf(STDERR "gap of %u between 0x%08x and 0x%08x\n%s\n",
14                         $addr - $oldaddr, $addr, $oldaddr, $line);
15         }
16         foreach my $h (@hex) {
17                 $num_hex++;
18                 # poor mans endian conversion
19                 my ($a, $b, $c, $d) = $h =~/(\w\w)(\w\w)(\w\w)(\w\w)/;
20                 my $h_reorder = $d . $c . $b . $a;
21                 # convert into actual binary number
22                 my $tmp = pack('H8', $h_reorder);
23                 syswrite(STDOUT, $tmp, 4);
24         }
25         $oldaddr = $addr;
26 }
27
28 printf(STDERR "num lines/num hex: %u/%u\n", $num_line, $num_hex);
29