18 print "\n not enough arguments";
19 print "\n Syntax: ./program_SDRAM input output\n";
22 open(INFILE1, "<$ARGV[0]") || die("\ninput open fail\n");
23 open(INFILE2, "<$ARGV[1]") || die("\ninput open fail\n");
24 open(OUTFILE, ">$ARGV[2]") || die("\nOutput file open fail\n");
27 while ($line = <INFILE1>){
31 printf OUTFILE ("33333333");
35 @array=split(/ +/,$line);
37 while(@array[$j]!~/\w/)
46 printf OUTFILE ("%08x%08x",hex($addr),hex($regval));
51 printf OUTFILE ("\n");
59 while($i lt 8 && $i gt 0){
60 printf OUTFILE "00"x8;
64 printf OUTFILE ("\n");
67 while($aline=<INFILE2>){
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);
79 $addstr = sprintf("%x", $address);
80 $addstr = "0"x(8-length($addstr)).$addstr;
81 print OUTFILE $addstr;
84 $currentaddr=$address;
89 $addstr = sprintf("%x", $currentaddr);
90 $addstr = "0"x(8-length($addstr)).$addstr;
91 print OUTFILE $addstr;
97 $bytes[$i]=~tr/ABCDEF/abcdef/;
98 print OUTFILE "$bytes[$i]";
114 for($i=0;$i<(64-$count);$i++){
123 print OUTFILE "11"x4;
125 $chsum=$chsum & 0xffffffff;
126 $chsum = sprintf("%X", $chsum);
127 $chsum = "0"x(8-length($chsum)).$chsum;
128 $chsum =~tr/ABCDEF/abcdef/;
129 print OUTFILE $chsum;
130 print OUTFILE "00"x60;
134 print OUTFILE "99"x4;
135 print OUTFILE $loadaddr;
136 print OUTFILE "00"x60;
149 if(length($holder)==8){
150 $holder = hex($holder);