fix reboot flag
[android-command-line.git] / rockchip-flash-helper.pl
1 #!/usr/bin/perl
2 use warnings;
3 use strict;
4
5 use Getopt::Long;
6
7 my $mode = lc($ARGV[0]) || die "usage: $0 (backup|restore|update)\n";
8
9 my $cmdline = <DATA>;
10 my $rkflashtool = '/virtual/android/android-command-line/rkflashtool/rkflashtool';
11
12 die "rkflashtool not found: $!" unless -x $rkflashtool;
13
14 $cmdline =~ s/^.*mtdparts=\w+:([^\s]+)\s.*$/$1/;
15 warn $cmdline;
16
17 foreach ( split(/,/,$cmdline) ) {
18         print "$_\n";
19         my ($size,$start,$name) = split(/[\@\(\)]/, $_, 4);
20
21         my $cmd;
22
23         my $backup_file = "$start-$size-$name";
24
25         if ( $mode eq 'backup' ) {
26
27                 $cmd = "$rkflashtool r $start $size > $backup_file";
28
29         } elsif ( $mode eq 'restore' ) {
30
31                 if ( -e $backup_file && -s $backup_file ) {
32                         $cmd = "$rkflashtool w $start $size < $backup_file";
33                 } else {
34                         warn "SKIP $backup_file restore: $!\n";
35                         next;
36                 }
37
38         } elsif ( $mode eq 'update' ) {
39
40                 if ( -e "$name.img" ) {
41                         $cmd = "$rkflashtool w $start $size < $name.img";
42                 } else {
43                         warn "SKIP $start $size $name - not found in update\n";
44                         next;
45                 }
46         }
47
48         warn "# $cmd\n";
49         system($cmd) == 0 || die $!;
50 }
51
52 if ( $mode eq 'update' || $mode eq 'restore' ) {
53         warn "# reboot Android\n";
54         system("$rkflashtool b");
55 }
56
57 __DATA__
58 console=ttyFIQ0 androidboot.console=ttyFIQ0 init=/init initrd=0x62000000,0x00200000 mtdparts=rk29xxnand:0x00002000@0x00002000(misc),0x00004000@0x00004000(kernel),0x00008000@0x00008000(boot),0x00008000@0x00010000(recovery),0x000C0000@0x00018000(backup),0x00040000@0x000D8000(cache),0x00300000@0x00118000(userdata),0x00002000@0x00418000(kpanic),0x00100000@0x0041A000(system),-@0x0053A000(user) bootver=2012-08-08#1.14 firmware_ver=4.0.4