#!/usr/bin/perl #use strict; #use Cwd; #use Env; my $aline; my $lineid; my $length; my $address; my @bytes; my $addstr; my $chsum=0; my $count=0; my $firstime=1; my $i; my $currentaddr; my $tmp; my $holder=""; my $loadaddr; if(@ARGV < 2){ die("\n Syntax: ./program_SDRAM input1(memory setup) input2(*\.srec) output\n"); } open(INFILE1, "<$ARGV[0]") || die("\ninput1 open fail\n"); open(INFILE2, "<$ARGV[1]") || die("\ninput2 open fail\n"); open(OUTFILE, ">$ARGV[2]") || die("\nOutput file open fail\n"); $i=0; while ($line = ){ if($line=~/\w/){ if($line!~/[;#\*]/){ if($i eq 0){ printf OUTFILE ("33333333"); } chomp($line); $line=~s/\t//; @array=split(/ +/,$line); $j=0; while(@array[$j]!~/\w/){ $j=$j+1; } $addr=@array[$j]; $regval=@array[$j+1]; $addr=~s/0x//; $regval=~s/0x//; printf OUTFILE ("%08x%08x",hex($addr),hex($regval)); $i=$i+1; if($i eq 8){ $i=0; printf OUTFILE ("\n"); } } } } while($i lt 8 && $i gt 0){ printf OUTFILE "00"x8; $i=$i+1; } if($i eq 8){ printf OUTFILE ("\n"); } while($aline=){ $aline=uc($aline); chomp($aline); next if(($aline=~/^S0/) || ($aline=~/^S7/)); ($lineid, $length, $address, @bytes) = unpack"A2A2A8"."A2"x300, $aline; $length = hex($length); $address = hex($address); $length -=5; $i=0; while($length>0){ if($firstime==1){ $addstr = sprintf("%x", $address); $addstr = "0"x(8-length($addstr)).$addstr; print OUTFILE $addstr; addchsum($addstr); $firstime=0; $currentaddr=$address; $loadaddr = $addstr; } else{ if($count==64){ $addstr = sprintf("%x", $currentaddr); $addstr = "0"x(8-length($addstr)).$addstr; print OUTFILE $addstr; addchsum($addstr); $count=0; } #printf("*** %x != %x\n", $address, $currentaddr) if $address != $currentaddr; } if($currentaddr < $address) { print OUTFILE "00"; addchsum("00"); $count++; $currentaddr++; } else { while($count<64){ $bytes[$i]=~tr/ABCDEF/abcdef/; print OUTFILE "$bytes[$i]"; addchsum($bytes[$i]); $i++; $count++; $currentaddr++; $length--; last if($length==0); } } if($count==64){ print OUTFILE "\n"; #print OUTFILE "\r"; } } } if($count != 64){ $tmp = "00"; for($i=0;$i<(64-$count);$i++){ print OUTFILE "00"; addchsum($tmp); } print OUTFILE "\n"; #print OUTFILE "\r"; } print OUTFILE "11"x4; use integer; $chsum=$chsum & 0xffffffff; $chsum = sprintf("%X", $chsum); $chsum = "0"x(8-length($chsum)).$chsum; $chsum =~tr/ABCDEF/abcdef/; print OUTFILE $chsum; print OUTFILE "00"x60; print OUTFILE "\n"; #print OUTFILE "\r"; print OUTFILE "99"x4; print OUTFILE $loadaddr; print OUTFILE "00"x60; print OUTFILE "\n"; #print OUTFILE "\r"; close OUTFILE; #END of Program sub addchsum{ my $cc=$_[0]; $holder=$holder.$cc; if(length($holder)==8){ $holder = hex($holder); $chsum+=$holder; $holder=""; } } #END tion value='committer'>committer
blob: 07497cb616fe3462434a093bf7adf673c5cfc414 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/dts-v1/;

/include/ "rt2880.dtsi"

/ {
	compatible = "AR670W", "ralink,rt2880-soc";
	model = "Airlink101 AR670W";

	palmbus@300000 {
		gpio0: gpio@600 {
			status = "okay";
		};
	};

	pinctrl {
		state_default: pinctrl0 {
			gpio {
				ralink,group = "i2c", "spi", "uartlite";
				ralink,function = "gpio";
			};
		};
	};

	ethernet@400000 {
		status = "okay";
		mtd-mac-address = <&factory 0x2004>;

		port@0 {
			phy-handle = <&phy0>;
			phy-mode = "mii";
		};

		mdio-bus {