[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/tools/MemoryUtility/QuerySize.pl b/mcu/tools/MemoryUtility/QuerySize.pl
new file mode 100644
index 0000000..808df83
--- /dev/null
+++ b/mcu/tools/MemoryUtility/QuerySize.pl
@@ -0,0 +1,135 @@
+#!/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) 2006

+#

+#  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:

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

+#*   QuerySize.pl

+#*

+#* Project:

+#* --------

+#*

+#*

+#* Description:

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

+#*   

+#* 

+#*

+#* Author:

+#* -------

+#*   Carl Kao (mtk08237)

+#*

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

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

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

+#****************************************************************************/

+use strict;

+BEGIN { push @INC, "./" , './tools/', './tools/MemoryUtility/', '../' }

+use LinkerOutputParser;

+

+&Usage() if ($#ARGV != 1); 

+

+my ($file, $query_name) = @ARGV;

+$file =~ s/\\/\\\\/;

+&LinkerOutputParser::FileParse($file);

+

+my ($ROSize, $RWSize, $ZISize) = (0,0,0);

+

+if($file =~ /\.lis$/)

+{

+	if($query_name =~ /\.o/)

+	{

+		$ROSize = &LinkerOutputParser::ListObjSummaryInfo($query_name, "RO Data") + &LinkerOutputParser::ListObjSummaryInfo($query_name, "Code");

+		$RWSize = &LinkerOutputParser::ListObjSummaryInfo($query_name, "RW Data");

+		$ZISize = &LinkerOutputParser::ListObjSummaryInfo($query_name, "ZI Data");

+	}

+	elsif(($query_name =~ /\.l/) || ($query_name =~ /\.a/))

+	{

+		$ROSize = &LinkerOutputParser::ListLibSummaryInfo($query_name, "RO Data") + &LinkerOutputParser::ListLibSummaryInfo($query_name, "Code");

+		$RWSize = &LinkerOutputParser::ListLibSummaryInfo($query_name, "RW Data");

+		$ZISize = &LinkerOutputParser::ListLibSummaryInfo($query_name, "ZI Data");

+	}

+	else

+	{

+		&Usage();

+	}

+	print "RO Size: $ROSize\n";

+	print "RW Size: $RWSize\n";

+	print "ZI Size: $ZISize\n";

+}

+elsif($file =~ /\.map$/)

+{

+	if($query_name =~ /\.o/)

+	{

+		$ROSize = &LinkerOutputParser::ListObjSummaryInfo($query_name, "RO");

+		$RWSize = &LinkerOutputParser::ListObjSummaryInfo($query_name, "RW");

+		$ZISize = &LinkerOutputParser::ListObjSummaryInfo($query_name, "ZI");

+	}

+	elsif(($query_name =~ /\.l/) || ($query_name =~ /\.a/))

+	{

+		$ROSize = &LinkerOutputParser::ListLibSummaryInfo($query_name, "RO");

+		$RWSize = &LinkerOutputParser::ListLibSummaryInfo($query_name, "RW");

+		$ZISize = &LinkerOutputParser::ListLibSummaryInfo($query_name, "ZI");

+	}

+	else

+	{

+		&Usage();

+	}

+	print "RO Size: $ROSize\n";

+	print "RW Size: $RWSize\n";

+	print "ZI Size: $ZISize\n";

+}

+else

+{

+	&Usage();

+}

+

+

+sub Usage

+{

+  print <<"__EOFUSAGE";

+

+usage: perl QuerySize.pl lis/map_file_path obj_name

+       perl QuerySize.pl lis/map_file_path lib_name

+

+lis/map_file_path: lis/map file path for codebase you want to query

+obj_name/lib_name: object/library name with postfix (for example, bootloader.lib, lpwr.obj)

+

+e.g. perl QuerySize.pl "E:\\mtk80506\\APOLLO55N_V2_DEMO_TDD128HSPA(CMCC_FTE_HVGA).W12.08\\mcu\\build\\APOLLO55N_V2_DEMO\\APOLLO55N_V2_DEMO_BOOTLOADER_V005_MT6255_MAUI_11B_W12_08.lis" bootloader.lib

+     perl QuerySize.pl "E:\\mtk80506\\APOLLO55N_V2_DEMO_TDD128HSPA(CMCC_FTE_HVGA).W12.08\\mcu\\build\\APOLLO55N_V2_DEMO\\APOLLO55N_V2_DEMO_BOOTLOADER_V005_MT6255_MAUI_11B_W12_08.lis" lpwr.obj

+

+__EOFUSAGE

+  exit 1;

+}
\ No newline at end of file