[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/tools/ckImgSize.pl b/mcu/tools/ckImgSize.pl
new file mode 100644
index 0000000..0d32a0e
--- /dev/null
+++ b/mcu/tools/ckImgSize.pl
@@ -0,0 +1,187 @@
+#!/usr/bin/perl

+#

+#  Copyright Statement:

+#  --------------------

+#  This software is protected by Copyright and the information contained

+#  herein is confidential. The software may not be copied and the information

+#  contained herein may not be used or disclosed except with the written

+#  permission of MediaTek Inc. (C) 2005

+#

+#  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES

+#  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")

+#  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON

+#  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,

+#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF

+#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.

+#  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE

+#  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR

+#  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH

+#  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO

+#  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S

+#  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.

+#

+#  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE

+#  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,

+#  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,

+#  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO

+#  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.

+#

+#  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE

+#  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF

+#  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND

+#  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER

+#  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).

+#

+#

+#*****************************************************************************

+#*

+#* Filename:

+#* ---------

+#*   ckImgSize.pl

+#*

+#* Project:

+#* --------

+#*

+#*

+#* Description:

+#* ------------

+#*

+#*

+#* Author:

+#* -------

+#*   Amber Su  (mtk03389)

+#*

+#*============================================================================

+#*             HISTORY

+#* Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!

+#*------------------------------------------------------------------------------

+#* $Revision$

+#* $Modtime$

+#* $Log$

+#*

+#* 05 22 2014 tafang.chen

+#* [MOLY00062786] [UMOLY][SM]

+#* Initial MoDIS build env - fix path problem.

+#*

+#*------------------------------------------------------------------------------

+#* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!

+#*============================================================================

+#*****************************************************************************

+

+#*****************************************************************************

+# Included Modules

+#*****************************************************************************

+BEGIN { push @INC, "pcore/" , '.\\pcore\\tools\\' }  # add additional library path             

+use vivaHelper; #for viva

+use File::stat;

+use FileInfoParser;

+use LISInfo;

+

+#*************************************************************************************************

+# Input and Parameters Initialization

+#*************************************************************************************************

+my ($makefile, $bin_folder, $lisfile, $flash_cfg_c) = @ARGV;

+my %MAKEFILE_OPTIONS;

+

+my $VIVA_FILE = "$bin_folder\\VIVA";

+my $fs_base_addr;

+my $actual_size;

+my $debug = 0;

+my $sperate_line = "============================================================\n";

+#*************************************************************************************************

+# Main Flow

+#*************************************************************************************************

+&error_handler("$makefile: NOT exist!", __FILE__, __LINE__) if (!-e $makefile);

+if(!&vivaHelper::IsVIEnabled_NI($makefile)) {

+	print "skip check memory size without enable VIVA\n";

+  exit 0;

+}

+

+#parse makefile for LISInfo::CheckROMSize

+if(1!=&FileInfo::Parse_MAKEFILE($makefile, \%MAKEFILE_OPTIONS)){

+   &error_handler("Parse MakeFile failed");

+}

+

+if (exists $MAKEFILE_OPTIONS{'DUMMY_SCATTER_ENABLE'} and $MAKEFILE_OPTIONS{'DUMMY_SCATTER_ENABLE'} eq 'TRUE'){

+  print "skip check memory size with DUMMY_SCATTER_ENABLE=TRUE\n";

+  exit 0;

+}

+

+&error_handler("$VIVA_FILE: NOT exist!", __FILE__, __LINE__) if (!-e $VIVA_FILE);

+my $VIVA_BIN_SIZE = stat("$VIVA_FILE")->size;

+print "The VIVA bin size = $VIVA_BIN_SIZE\n";

+#parse lis for LISInfo::CheckROMSize

+&LISInfo::ParseLIS($lisfile);

+

+my ($load_end,$check_fsbase) = &LISInfo::CheckROMSize(\%MAKEFILE_OPTIONS,$VIVA_BIN_SIZE);

+

+if($check_fsbase eq undef) {

+  &error_handler("Call getFlashBaseAdd Failed!", __FILE__, __LINE__) if(1!=&getFlashBaseAdd);

+  &checkSize($fs_base_addr,$load_end);

+} else {

+  &checkSize($check_fsbase,$load_end);

+}

+

+exit 0;

+

+#**************************************************************************************************

+# Check Whether Total Image Files Size Overlap Limit or not

+#**************************************************************************************************

+sub checkSize {

+  my($max_compressed,$total_size )= @_;

+  $left = $max_compressed-$total_size;

+  print "[Check VIVA bin size]\n";  

+  my $limit_str,$actual_str;

+ 

+  $limit_str= "The Boundary of VIVA bin";

+  $actual_str = "Actual VIVA End Address";

+  

+  print sprintf ("%-40s %-10s %s\n","$limit_str","= $max_compressed","bytes");

+  print sprintf ("%-40s %-10s %s\n","$actual_str","= $total_size","bytes");

+	print "$sperate_line\Check VIVA Compressed ROM Size:";

+  if ($left < 0)

+  {

+  	# Note: The error pattern will be parsed by tools\auto_adjust_mem.pl

+  	# Pattern /Check .+ Compressed ROM Size: FAIL/

+  	$temp = "$actual_str has exceeded $limit_str by " .abs($left)." bytes";

+  	print " FAIL!\n";

+  	print STDERR "Error: $temp\n";

+  	print "Error: $temp.\n";

+  	exit 1;

+  }

+	else

+	{

+		print(" PASS!\n");

+		exit 0;

+	}

+}

+

+#**************************************************************************************************

+# Parse ~flash_cfg_temp_c to Get Flash Base Address

+#**************************************************************************************************

+sub getFlashBaseAdd {

+	my $ckresult = 0;

+  &error_handler("$flash_cfg_c: NOT exist!", __FILE__, __LINE__) if (!-e $flash_cfg_c);

+  open (FILE_HANDLE, "<$flash_cfg_c") or &error_handler("$flash_cfg_c: file error!", __FILE__, __LINE__);

+  while (<FILE_HANDLE>) {

+    if (/int flash_base_address\s+=\s+((\S|\s)+);/) {    	

+      $fs_base_addr = eval($1);

+      $ckresult = 1;

+    }

+  }

+  close (FILE_HANDLE);

+  print "The base address of file system = $fs_base_addr\n";

+  return $ckresult;

+}

+

+#*************************************************************************************************

+# Error Handling Message

+#*************************************************************************************************

+sub error_handler

+{

+    my ($error_msg, $file, $line_no) = @_;

+ 

+    my $final_error_msg = "Error: $error_msg at $file line $line_no\n";

+    print "$final_error_msg";

+    die $final_error_msg;

+}