[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/tools/DebuggingSuite/Scripts/MIPS_MPU_Viewer.cmm b/mcu/tools/DebuggingSuite/Scripts/MIPS_MPU_Viewer.cmm
new file mode 100755
index 0000000..fb1e06b
--- /dev/null
+++ b/mcu/tools/DebuggingSuite/Scripts/MIPS_MPU_Viewer.cmm
@@ -0,0 +1,338 @@
+;*****************************************************************************
+; 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) 2016
+;
+;*****************************************************************************
+;
+;*****************************************************************************
+;
+; Filename:
+; ---------
+; MIPS_MPU_Viewer.cmm (v.1.0)
+;
+; Project:
+; --------
+; MT6292
+;
+; Description:
+; ------------
+; This file generates human readable memory map from MPU tables
+;
+; Author:
+; -------
+; Jari Manninen (mtk09391)
+;
+;============================================================================
+; HISTORY
+; Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+;------------------------------------------------------------------------------
+; * $Revision$
+; * $Modtime$
+; * $Log$
+; *
+; * 05 17 2017 hw.jheng
+; * [MOLY00250340] [93] MIPS_MPU_Viewer.cmm update
+; *
+; * 09 02 2017 jari.manninen
+; * Initial Version
+; * Inherited MIP_MMU_View.cmm functionality to a new MPU parser.
+;------------------------------------------------------------------------------
+; Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+;============================================================================
+
+ AREA.Create mpu_area 100. 70.
+ WINPOS , , 100. 50.
+
+ DIALOG.AREA mpu_area
+ (
+ HEADER "DIALOG.AREA MPU Viewer"
+
+ POS 1. 0. 82.
+ LINE "CORE Options"
+
+ POS 0.25 1. 11. 1.
+ BUTTON "CORE 0"
+ (
+ LOCAL &tmp
+ AREA.Select mpu_area
+ AREA.CLEAR mpu_area
+ &CORE_ID=0
+ &tmp=FORMAT.DECIMAL(1,&CORE_ID)
+ DIALOG.SET LINENUM "MPU Table for CORE: &tmp"
+ ; enable clean button
+ DIALOG.Enable BTN_CLEAN
+ GOSUB parse
+ )
+ POS 12.25 1. 11. 1.
+ BUTTON "CORE 1"
+ (
+ LOCAL &tmp
+ AREA.Select mpu_area
+ AREA.CLEAR mpu_area
+ &CORE_ID=1
+ &tmp=FORMAT.DECIMAL(1,&CORE_ID)
+ DIALOG.SET LINENUM "MPU Table for CORE: &tmp"
+ ; enable clean button
+ DIALOG.Enable BTN_CLEAN
+ GOSUB parse
+ )
+
+ POS 24.25 1. 11. 1.
+ BUTTON "Both"
+ (
+ AREA.Select mpu_area
+ AREA.CLEAR mpu_area
+ &CORE_ID=2
+ DIALOG.SET LINENUM "MPU Table for both CORE's"
+ ; enable clean button
+ DIALOG.Enable BTN_CLEAN
+ GOSUB parse
+ )
+
+ POS 63. 1. 11. 1.
+BTN_CLEAN: button "Reset"
+ (
+ AREA.CLEAR mpu_area
+ DIALOG.set LINENUM "Select the CORE from above buttons"
+ ; disable clean button
+ DIALOG.Disable BTN_CLEAN
+ )
+
+ ; close button
+ POS 74. 1. 11. 1.
+ BUTTON "Close" "goto closeDialog"
+
+ ; handle [X] and Escape
+ CLOSE "goto closeDialog"
+
+ POS 2. 2. 20. 1.
+LINENUM: dyntext "Select the CORE from above buttons"
+
+ )
+
+;initialy disable clean button
+ DIALOG.DISABLE BTN_CLEAN
+ STOP
+
+;common jumplabel for closing the dialog and ending script
+closeDialog:
+ DIALOG.END
+ ENDDO
+
+parse:
+ LOCAL &core
+ &core=FORMAT.DECIMAL(1,&CORE_ID)
+ &CORE_ID=0
+
+ IF &core==0
+ (
+ PRINT "MPU Base Segments for CORE 0"
+ PRINT "======================================================================"
+ GOSUB parseBaseSegments 0
+ PRINT " "
+
+ PRINT "MPU Table for CORE 0"
+ PRINT "======================================================================"
+ GOSUB parseCore 0
+ )
+ IF &core==1
+ (
+ PRINT "MPU Base Segments for CORE 1"
+ PRINT "======================================================================"
+ GOSUB parseBaseSegments 1
+ PRINT " "
+
+ PRINT "MPU Table for CORE 1"
+ PRINT "======================================================================"
+ GOSUB parseCore 1
+ )
+ IF &core==2
+ (
+ PRINT "MPU Base Segments for CORE 0"
+ PRINT "======================================================================"
+ GOSUB parseBaseSegments 0
+ PRINT " "
+
+ PRINT "MPU Table for CORE 0"
+ PRINT "======================================================================"
+ GOSUB parseCore 0
+ PRINT " "
+
+ PRINT "MPU Base Segments for CORE 1"
+ PRINT "======================================================================"
+ GOSUB parseBaseSegments 1
+ PRINT " "
+
+ PRINT "MPU Table for CORE 1"
+ PRINT "======================================================================"
+ GOSUB parseCore 1
+ )
+
+ PRINT "======================================================================"
+ RETURN
+
+parseBaseSegments:
+ ENTRY &core_index
+ LOCAL &loop_count
+ LOCAL &index
+ LOCAL &enable
+ LOCAL &start_addr
+ LOCAL &size
+ LOCAL &count
+ LOCAL &RI
+ LOCAL &WI
+ LOCAL &XI
+ LOCAL &CCA
+ &index=0
+ &loop_count=10
+
+ WHILE &index<&loop_count
+ (
+ &ATTRIBUTE_STRING=""
+
+ &start_addr=10000000*&index
+ GOSUB parseStartAddr &start_addr
+
+ &size=1C
+ &count=1
+ GOSUB parseEndAddr &start_addr &size &count
+
+ &RI=v.value(IA_MPU_SETTING_CORE_EX[&core_index].segment_control[&index].RI)
+ &WI=v.value(IA_MPU_SETTING_CORE_EX[&core_index].segment_control[&index].WI)
+ &XI=v.value(IA_MPU_SETTING_CORE_EX[&core_index].segment_control[&index].XI)
+ &CCA=v.value(IA_MPU_SETTING_CORE_EX[&core_index].segment_control[&index].CCA)
+
+ GOSUB parseConfig &RI &WI &XI &CCA
+
+ PRINT FORMAT.Decimal(2.,&index) "&ATTRIBUTE_STRING"
+
+ &index=&index+1
+ )
+ RETURN
+parseCore:
+ ENTRY &core_index
+ LOCAL &loop_count
+ LOCAL &index
+ LOCAL &enable
+ LOCAL &start_addr
+ LOCAL &size
+ LOCAL &count
+ LOCAL &RI
+ LOCAL &WI
+ LOCAL &XI
+ LOCAL &CCA
+ &index=0
+ &loop_count=18
+ &ATTRIBUTE_STRING=""
+
+ WHILE &index<&loop_count
+ (
+ &enable=v.value(IA_MPU_SETTING_CORE_EX[&core_index].region[&index].Region_Enable)
+
+ IF &enable!=0
+ (
+ &ATTRIBUTE_STRING=""
+
+ &start_addr=v.value(IA_MPU_SETTING_CORE_EX[&core_index].region[&index].Region_Base_Address)
+ GOSUB parseStartAddr &start_addr
+
+ &size=v.value(IA_MPU_SETTING_CORE_EX[&core_index].region[&index].SubRegion_Size)
+ &count=v.value(IA_MPU_SETTING_CORE_EX[&core_index].region[&index].SubRegion_Count)+1
+ GOSUB parseEndAddr &start_addr &size &count
+
+ &RI=v.value(IA_MPU_SETTING_CORE_EX[&core_index].region[&index].RI)
+ &WI=v.value(IA_MPU_SETTING_CORE_EX[&core_index].region[&index].WI)
+ &XI=v.value(IA_MPU_SETTING_CORE_EX[&core_index].region[&index].XI)
+ &CCA=v.value(IA_MPU_SETTING_CORE_EX[&core_index].region[&index].CCA)
+
+ GOSUB parseConfig &RI &WI &XI &CCA
+
+ PRINT FORMAT.Decimal(2.,&index) "&ATTRIBUTE_STRING"
+
+ )
+ &index=&index+1
+ )
+ RETURN
+
+parseStartAddr:
+ ENTRY &saddr
+ &ATTRIBUTE_STRING="&ATTRIBUTE_STRING"+" Address:"+"0x"+FORMAT.Hex(8.,&saddr)+"--"
+ RETURN
+
+parseEndAddr:
+ ENTRY &addr ®size ®Count
+ LOCAL &loop_count
+ LOCAL &index
+ LOCAL &mpler
+
+ &loop_count=®size-5
+ &index=0
+ &mpler=1
+
+ WHILE &index<&loop_count
+ (
+ &mpler=&mpler*2
+ &index=&index+1
+ )
+ &mpler=&mpler*20
+ &mpler=&mpler*®Count
+
+ &addr=&addr+&mpler-1
+ &ATTRIBUTE_STRING="&ATTRIBUTE_STRING"+"0x"+FORMAT.Hex(8.,&addr)
+ RETURN
+
+parseConfig:
+ ENTRY &ri &wi &xi &cca
+ IF &cca==2
+ (
+ &ATTRIBUTE_STRING="&ATTRIBUTE_STRING"+" UC "
+ )
+ IF &cca==3
+ (
+ &ATTRIBUTE_STRING="&ATTRIBUTE_STRING"+" WB "
+ )
+ IF &cca==4
+ (
+ &ATTRIBUTE_STRING="&ATTRIBUTE_STRING"+" CWBE"
+ )
+ IF &cca==5
+ (
+ &ATTRIBUTE_STRING="&ATTRIBUTE_STRING"+" CWB "
+ )
+ IF &cca==7
+ (
+ &ATTRIBUTE_STRING="&ATTRIBUTE_STRING"+" UCA "
+ )
+
+ IF &ri==1
+ (
+ &ATTRIBUTE_STRING="&ATTRIBUTE_STRING"+" READ INHIBIT"
+ )
+ ELSE
+ (
+ &ATTRIBUTE_STRING="&ATTRIBUTE_STRING"+" READABLE "
+ )
+
+ IF &wi==1
+ (
+ &ATTRIBUTE_STRING="&ATTRIBUTE_STRING"+" WRITE INHIBIT"
+ )
+ ELSE
+ (
+ &ATTRIBUTE_STRING="&ATTRIBUTE_STRING"+" WRITABLE "
+ )
+
+ IF &xi==1
+ (
+ &ATTRIBUTE_STRING="&ATTRIBUTE_STRING"+" EXE INHIBIT"
+ )
+ ELSE
+ (
+ &ATTRIBUTE_STRING="&ATTRIBUTE_STRING"+" EXECUTABLE "
+ )
+
+ RETURN