[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/tools/ckMemLayout.pl b/mcu/tools/ckMemLayout.pl
new file mode 100644
index 0000000..7c3c7d7
--- /dev/null
+++ b/mcu/tools/ckMemLayout.pl
@@ -0,0 +1,152 @@
+#!/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:
+#* ---------
+#* ckMemLayout.pl
+#*
+#* Project:
+#* --------
+#*
+#*
+#* Description:
+#* ------------
+#* This script is to check memory layout
+#*
+#* Author:
+#* -------
+#* Qmei Yang (mtk03726)
+#*
+#****************************************************************************/
+
+#****************************************************************************
+# Included Modules
+#****************************************************************************
+BEGIN { push @INC , './tools/' } # add additional library path
+use sysGenUtility; #pm file name without case sensitivity
+use strict;
+use FileInfoParser;
+
+#****************************************************************************
+# Constants
+#****************************************************************************
+my $CKMEMLAYOUT_VERNO = " m0.04";
+ # m0.04 by Tero, ckregion added
+ # m0.03 by mei, Support infomake.log input
+ # m0.02 by mei, support ckLDS
+ # m0.01 by mei, Fix error message
+ # v0.02 by mei, Support path and filename case sensitive on Linux
+ # v0.01 by mei, initial version
+
+#****************************************************************************
+# Global Variables
+#****************************************************************************
+my $g_exit = 0;
+my %g_MAKEFILE_OPTIONS;
+my $b_debug = 0;
+
+#****************************************************************************
+# Input Parameters
+#****************************************************************************
+my $phase = $ARGV[0];
+my $stop_build = $ARGV[1];
+my $IMAGELAYOUT = $ARGV[2];
+my $LIS_TEMP = $ARGV[3];
+my $FLASH_CFG_TMP = $ARGV[4];
+my $themf = $ARGV[5];
+my $BB_FOLDER = $ARGV[6];
+my $DUMMY_IMAGELAYOUT_ALLOW = $ARGV[7];
+my $INFOMAKE_PATH = $ARGV[8];
+
+print "[ckMemLayout.pl][Input]\nPhase=".$ARGV[0].
+ "\nstop_build=".$ARGV[1].
+ "\nIMAGELAYOUT=".$ARGV[2].
+ "\nMap=".$ARGV[3].
+ "\nFLASH_CFG_TMP=".$ARGV[4].
+ "\nMakeFile=".$ARGV[5].
+ "\nBBFolder=".$ARGV[6].
+ "\nDUMMY_IMAGELAYOUT_ALLOW=".$ARGV[7].
+ "\nINFOMAKE_PATH=".$ARGV[8].
+ "\n\n\n" if($b_debug);
+
+
+#****************************************************************************
+# 1 >>> ParseMakeFile to get GCC/RVCT
+#****************************************************************************
+if(1!= &FileInfo::Parse_MAKEFILE($themf, \%g_MAKEFILE_OPTIONS))
+{
+ &sysUtil::sysgen_die("Parse MakeFile failed");
+}
+
+#****************************************************************************
+# 2 >>> Run tool
+#****************************************************************************
+my $strCompiler = &FileInfo::GetCompiler();
+if("GCC" eq $strCompiler)
+{
+ $g_exit |= &SendCommand("perl tools/ckLDS.pl $ARGV[0] $ARGV[1] $ARGV[2] $ARGV[3] $ARGV[4] \"$ARGV[5]\" $ARGV[6] $ARGV[7] $ARGV[8]");
+ if ($ARGV[0] == 2) {
+ my $sym_file = $ARGV[3];
+ $sym_file =~ s/map/sym/;
+ $g_exit |= &SendCommand("perl tools/AutoGen/postBuild/ckRegion.pl $sym_file") if -e $sym_file or die "No $sym_file found\n";
+ my ($tempdir) = ($IMAGELAYOUT =~ /^(.*)custom/);
+ $tempdir .= "tmp/";
+ $g_exit |= &SendCommand("perl tools/AutoGen/postBuild/ckL2CacheSection.pl $ARGV[3] $tempdir");
+ }
+}
+elsif("RVCT" eq $strCompiler)
+{
+ $g_exit = &SendCommand("perl tools/ckScatter.pl $ARGV[0] $ARGV[1] $ARGV[2] $ARGV[3] $ARGV[4] \"$ARGV[5]\" $ARGV[6] $ARGV[7] $ARGV[8]");
+}
+
+#****************************************************************************
+# 3 >>> exit - no error: 0, error code: > 0
+#****************************************************************************
+exit $g_exit;
+
+#****************************************************************************
+# subroutines
+#****************************************************************************
+sub SendCommand
+{
+ my ($strCommand) = @_;
+ my $nRet;
+ print "cmd=$strCommand\n";
+ print "======================================================================\n";
+ $nRet = system($strCommand);
+ print "==============================$nRet=====================================\n";
+ return ($nRet>>8);
+}