blob: 3ec1b105106cad166227f59a4f4e52c7186f493a [file] [log] [blame]
#!/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:
#* ---------
#* scatFrame.pm
#*
#* Project:
#* --------
#*
#*
#* Description:
#* ------------
#* This script is to generate the frame of memory layout
#* and provides the flow of generation
#*
#* Author:
#* -------
#* Qmei Yang (mtk03726)
#*
#****************************************************************************/
#****************************************************************************
# Included Modules
#****************************************************************************
use strict;
BEGIN { push @INC, './pcore/tools/' } # add additional library path
use sysGenUtility;
use FileInfoParser;
package scatFrame;
#****************************************************************************
# oo >>> Finished
#****************************************************************************
return 1;
#****************************************************************************
# scatFrame Version
#****************************************************************************
sub scatFrame_verno
{
return " m0.01";
# m0.01 , 20120528 by mei, Support path and filename case sensitive on Linux
# v0.02 , 20120519 by mei, support Read BB folder first to get config input
# v0.01 , 20120513 by mei, initial version
}
#****************************************************************************
# Constants
#****************************************************************************
#****************************************************************************
# Global Variables
#****************************************************************************
#****************************************************************************
# Input Parameters
#****************************************************************************
use constant InputSections => 0;
#SCAT Type
use constant MAIN => 0;
use constant BL => 1;
use constant EXT_BL => 2;
use constant FOTA => 3;
#****************************************************************************
# subroutines
#****************************************************************************
#scatFrame::GetPath("ROM", scatFrame::InputSections)
sub GetPath
{
my ($strKey, $nType) = @_;
my $strPath = undef;
my $strMAINConfig = "scat_config/";
my %PathMap = ("InputSections" => "InputSections/",
);
if($nType == InputSections)
{
$strPath = $strMAINConfig . $PathMap{InputSections}.$strKey."/";
}
else
{
&scatFrame_die("[GetPath]Unsupport Type", __FILE__, __LINE__);
}
return $strPath;
}
sub GetConfigInput
{
my ($RegionName, $strFileName, $nType, $bb_folder) = @_;
my $strFile = &GetPath($RegionName, $nType) . $strFileName;
my $strCustomFolder = $bb_folder . "/";
my $strDefaultFolder = "pcore/custom/system/Template/";
my $strInput = $strDefaultFolder . $strFile;
$strInput = $strCustomFolder.$strFile if(-e $strCustomFolder.$strFile);
return $strInput;
}
sub GenInputSections
{
my ($InputSection_aref, $Indef_href) = @_;
my $strContent;
foreach my $item (@$InputSection_aref)
{
my $strModuleName = $item->[$Indef_href->{ModuleName}];
my $strAttribute = $item->[$Indef_href->{Attribute}];
$strModuleName =~ s/\s//g;
next if($strModuleName eq "");
my @AttrTemp = split(/\s+/, $strAttribute);
if($strModuleName =~ /.lib$|.a$/ and $strModuleName !~ /^\*|\;/)
{
$strModuleName = "*".$strModuleName;
}
my @Attr;
foreach my $strAttr (@AttrTemp)
{
if($strAttr =~ /^RO$|^RW$|^ZI$|^RO-CODE$|^RO-DATA$/)
{
$strAttr = "+".$strAttr;
}
push @Attr, $strAttr;
}
$strContent .= ' 'x8 . $strModuleName . " (". join(", ", @Attr) . ")\n";
}
return $strContent;
}
#****************************************************************************
# subroutine: scatFrame_die
# sample code: (message, __FILE__, __LINE__)
# input: $error_msg, $file, $line_no
#****************************************************************************
sub scatFrame_die
{
my ($error_msg, $file, $line_no) = (@_);
&sysUtil::error_handler($error_msg, $file, $line_no, 'scatFrame');
}