summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rwxr-xr-xtools/codecscan.pl58
1 files changed, 58 insertions, 0 deletions
diff --git a/tools/codecscan.pl b/tools/codecscan.pl
new file mode 100755
index 0000000000..c21295d49f
--- /dev/null
+++ b/tools/codecscan.pl
@@ -0,0 +1,58 @@
1#!/usr/bin/perl
2
3$codecs="apps/codecs";
4
5opendir(DIR, $codecs) || die "can't opendir $some_dir: $!";
6my @maps = sort grep { /\.map/ && -f "$codecs/$_" } readdir(DIR);
7closedir DIR;
8
9print "Codec IRAM IBSS BSS Text \n";
10
11
12for my $m (@maps) {
13 my ($iram, $ibss, $bss, $text)=scanmap($m);
14 printf("%-15s: %5d %5d %6d %6d\n",
15 $m, $iram, $ibss, $bss, $text);
16}
17
18sub scanmap {
19 my ($file)=@_;
20
21 open(F, "<$codecs/$file");
22
23 while(<F>) {
24 if(/[ \t]*0x([0-9a-f]+) *_plugin_start_addr/) {
25 #print "CODEC START: $1\n";
26 $codec = hex($1);
27 }
28 elsif(/[ \t]*0x([0-9a-f]+) *plugin_bss_start/) {
29 #print "CODEC BSS START: $1\n";
30 $codecbss = hex($1);
31 }
32 elsif(/[ \t]*0x([0-9a-f]+) *_plugin_end_addr/) {
33 #print "CODEC END: $1\n";
34 $bss = (hex($1) - $codecbss);
35 $codec = (hex($1) - $codec - $bss);
36 }
37 elsif(/[ \t]*0x([0-9a-f]+) *iramstart/) {
38 #print "IRAM START: $1\n";
39 $iram = hex($1);
40 }
41 elsif(/[ \t]*0x([0-9a-f]+) *iramend/) {
42 #print "IRAM END: $1\n";
43 $iram = (hex($1) - $iram);
44 }
45 elsif(/[ \t]*0x([0-9a-f]+) *iedata/) {
46 #print "IBSS START: $1\n";
47 $ibss = hex($1);
48 }
49 elsif(/[ \t]*0x([0-9a-f]+) *iend/) {
50 #print "IBSS END: $1\n";
51 $ibss = (hex($1) - $ibss);
52 }
53 }
54
55 close(F);
56
57 return ($iram, $ibss, $bss, $codec);
58}