source: trunk/package/uboot-ifxmips/files/gct @ 17856

Last change on this file since 17856 was 17856, checked in by blogic, 7 years ago

fixes ifxmips uboot compile, adds uart uploadable image and fix for wippies homebox flash

  • Property svn:executable set to *
File size: 2.9 KB
Line 
1#!/usr/bin/perl
2my $aline;
3my $lineid;
4my $length;
5my $address;
6my @bytes;
7my $addstr;
8my $chsum=0;
9my $count=0;
10my $firstime=1;
11my $i;
12my $currentaddr;
13my $tmp;
14my $holder="";
15my $loadaddr;
16
17if(@ARGV < 2){
18        print "\n not enough arguments";
19        print "\n Syntax: ./program_SDRAM input output\n";
20}
21
22open(INFILE1, "<$ARGV[0]") || die("\ninput open fail\n");
23open(INFILE2, "<$ARGV[1]") || die("\ninput open fail\n");
24open(OUTFILE, ">$ARGV[2]") || die("\nOutput file open fail\n");
25
26$i=0;
27while ($line = <INFILE1>){
28            if($line=~/\w/){
29             if($line!~/[;#\*]/){
30                  if($i eq 0){
31                  printf OUTFILE ("33333333");
32                  }
33                  chomp($line);
34                  $line=~s/\t//;
35                  @array=split(/ +/,$line);
36                  $j=0;
37                  while(@array[$j]!~/\w/)
38                  {
39                    $j=$j+1;
40
41                  }
42                  $addr=@array[$j];
43                  $regval=@array[$j+1];
44                  $addr=~s/0x//;
45                  $regval=~s/0x//;
46                  printf OUTFILE ("%08x%08x",hex($addr),hex($regval));
47                  $i=$i+1;
48                  if($i eq 8)
49                  {
50                      $i=0;
51                      printf OUTFILE ("\n");
52                  }
53
54               }
55             }
56
57            }
58
59        while($i lt 8 && $i gt 0){
60                   printf OUTFILE "00"x8;
61                   $i=$i+1;
62                   }
63        if($i eq 8){
64        printf OUTFILE ("\n");
65        }
66
67while($aline=<INFILE2>){
68        $aline=uc($aline);
69        chomp($aline);
70        next if(($aline=~/^S0/) || ($aline=~/^S7/));
71        ($lineid, $length, $address, @bytes) = unpack"A2A2A8"."A2"x300, $aline;
72        $length = hex($length);
73        $address = hex($address);
74        $length -=5;
75        $i=0;
76
77        while($length>0){
78                if($firstime==1){
79                                $addstr = sprintf("%x", $address);
80                                $addstr = "0"x(8-length($addstr)).$addstr;
81                                print OUTFILE $addstr;
82                                addchsum($addstr);
83                                $firstime=0;
84                                $currentaddr=$address;
85                                $loadaddr = $addstr;
86                }
87                else{
88                        if($count==64){
89                                $addstr = sprintf("%x", $currentaddr);
90                                $addstr = "0"x(8-length($addstr)).$addstr;
91                                print OUTFILE $addstr;
92                                addchsum($addstr);
93                                $count=0;
94                        }
95                }
96                while($count<64){
97                        $bytes[$i]=~tr/ABCDEF/abcdef/;
98                        print OUTFILE "$bytes[$i]";
99                        addchsum($bytes[$i]);
100                        $i++;
101                        $count++;
102                        $length--;
103                        last if($length==0);
104                }
105                if($count==64){
106                        print OUTFILE "\n";
107                        #print OUTFILE "\r";
108                        $currentaddr+=64;
109                }
110        }
111}
112if($count != 64){
113        $tmp = "00";
114        for($i=0;$i<(64-$count);$i++){
115                print OUTFILE "00";
116                addchsum($tmp);
117        }
118        print OUTFILE "\n";
119        #print OUTFILE "\r";
120}
121
122
123print OUTFILE "11"x4;
124use integer;
125$chsum=$chsum & 0xffffffff;
126$chsum = sprintf("%X", $chsum);
127$chsum = "0"x(8-length($chsum)).$chsum;
128$chsum =~tr/ABCDEF/abcdef/;
129print OUTFILE $chsum;
130print OUTFILE "00"x60;
131print OUTFILE "\n";
132#print OUTFILE "\r";
133
134print OUTFILE "99"x4;
135print OUTFILE $loadaddr;
136print OUTFILE "00"x60;
137print OUTFILE "\n";
138#print OUTFILE "\r";
139
140
141close OUTFILE;
142#END of Program
143
144
145
146sub addchsum{
147        my $cc=$_[0];
148        $holder=$holder.$cc;
149        if(length($holder)==8){
150                $holder = hex($holder);
151                $chsum+=$holder;
152                $holder="";
153        }
154}
155#END
156
157
Note: See TracBrowser for help on using the repository browser.