[Feature]add MT2731_MP2_MR2_SVN388 baseline version

Change-Id: Ief04314834b31e27effab435d3ca8ba33b499059
diff --git a/src/bach/build.bach/tools/ubiimgGen/ubiimgGen.pl b/src/bach/build.bach/tools/ubiimgGen/ubiimgGen.pl
new file mode 100644
index 0000000..f2498a2
--- /dev/null
+++ b/src/bach/build.bach/tools/ubiimgGen/ubiimgGen.pl
@@ -0,0 +1,95 @@
+#!/usr/bin/perl -w
+
+#use strict;
+use lib "tools/perl";
+use Spreadsheet::ParseExcel;
+
+# UBI tool
+my $MKUBIFS = "tools/ubiimgGen/mkfs.ubifs";
+my $UBINIZE = "tools/ubiimgGen/ubinize";
+
+#------------------------------------------------------------
+# global definition
+#------------------------------------------------------------
+my $CUSTOMDIR =   "$ENV{'WORKDIR'}/custom/$ENV{'PRJ_FILENAME'}";
+my $UBIDIR      = "$CUSTOMDIR/build/ubifs";
+my $OUTDIR      = "$ENV{'OUTDIR'}";
+my $UBIFSCFGDIR = "$OUTDIR/tmp/ubifs";
+my $IMGDIR      = "$ARGV[0]";
+my $PART_NAME   = "$ARGV[1]";
+my $BLK_KBSIZE  = $ARGV[2];
+my $PAGE_SIZE   = $ARGV[3] * 1024;
+# use zlib for compression
+my $COMP  = "zlib";
+
+print("$CUSTOMDIR\n");
+print("$UBIDIR\n");
+print("$OUTDIR\n");
+print("$IMGDIR\n");
+print("$PART_NAME\n");
+
+my $FileName  = "$CUSTOMDIR/build/flash_partition.xls";
+my $parser    = Spreadsheet::ParseExcel->new();
+my $workbook  = $parser->parse($FileName);
+die $parser->error(), ".\n" if ( !defined $workbook );
+my $find = 0;
+
+#------------------------------------------------------------
+# functions
+#------------------------------------------------------------
+sub system_cmd
+{
+    my $cmd = $_[0];
+    printf("$cmd\n");
+    system($cmd);
+}
+
+#------------------------------------------------------------
+# main function
+#------------------------------------------------------------
+# Iterate through all worksheets
+for my $worksheet ( $workbook->worksheets() ) {
+	# Find out the worksheet ranges
+	my ( $row_min, $row_max ) = $worksheet->row_range();
+	my ( $col_min, $col_max ) = $worksheet->col_range();
+
+    # Scan flash partition
+	for my $row ( $row_min .. $row_max ) {
+		next if ($row == 0);
+
+		# Return the cell object at $row and $col
+    	my $name = $worksheet->get_cell($row, 0)->value();
+       
+        # check partition 
+        if ("$name" eq "$PART_NAME") {
+    	    my $file = $worksheet->get_cell($row, 1)->value();
+    	    my $len  = $worksheet->get_cell($row, 2)->value();
+            printf("find ---> partition $name, $file\n");
+
+            # compute number of blocks in partition
+            my $ubi_blk_size = $BLK_KBSIZE * 1024 - 2 * $PAGE_SIZE;
+            my $nr_blk = ($len * 1024) / $BLK_KBSIZE;
+            system_cmd("$MKUBIFS -F -m $PAGE_SIZE -e $ubi_blk_size -c $nr_blk -r $IMGDIR -o $OUTDIR/${file}_raw.img -x $COMP");
+
+            # generate cfg and flashed image
+            if (!-d  "$UBIFSCFGDIR") {
+                printf("create output folder --> $UBIFSCFGDIR\n");
+                system_cmd("mkdir -p $UBIFSCFGDIR");
+            }
+            system_cmd("rm -f $UBIFSCFGDIR/$name.ubicfg");
+            system_cmd("cp -f $UBIDIR/ubifs_template.ubicfg $UBIFSCFGDIR/$name.ubicfg");
+            system_cmd("sed -i \"s|IMG_NAME|$OUTDIR\/${file}_raw.img|g\" $UBIFSCFGDIR/$name.ubicfg");
+            system_cmd("sed -i \"s|VOL_NAME|$name|g\" $UBIFSCFGDIR/$name.ubicfg");
+            system_cmd("${UBINIZE} -o $OUTDIR/$file -m $PAGE_SIZE -p ${BLK_KBSIZE}KiB -s $PAGE_SIZE -O $PAGE_SIZE $UBIFSCFGDIR/$name.ubicfg");
+            system_cmd("rm -f $OUTDIR/${file}_raw.img");
+
+            # we only need to generate one config file
+            $find = 1;
+            last;
+        }
+	}
+
+    if ($find == 1) {
+        last;
+    }
+}