[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/tools/DebuggingSuite/Scripts/dump_sys_mem.py b/mcu/tools/DebuggingSuite/Scripts/dump_sys_mem.py
new file mode 100755
index 0000000..dc325e0
--- /dev/null
+++ b/mcu/tools/DebuggingSuite/Scripts/dump_sys_mem.py
@@ -0,0 +1,89 @@
+#from imgtec import codescape

+import sys

+import time

+import os

+import gdb

+import Tkinter, tkFileDialog

+import ctypes

+import re

+

+#MD Side

+AP_REG_BASE=0xC0000000

+MD_REG_BASE=0xA0000000

+

+#AP side

+#AP_REG_BASE=0x10000000

+#MD_REG_BASE=0x20000000

+

+def memory_write( mem_addr, set_value ):

+		gdb_cmd = 'set *' + str(mem_addr) + '=' + str(set_value)

+		gdb.execute(gdb_cmd)

+

+def memory_read(mem_addr):

+		gdb_cmd = 'x/x ' + str(mem_addr)

+		mem_value = gdb.execute(gdb_cmd, to_string=True)

+		mem_value = mem_value[12:23]

+		hex_int = int(mem_value, 16)

+		return hex_int

+

+def bus_dump_mem( file_name, start_addr, end_addr):

+        gdb_cmds = [

+            'monitor mips bus_read on',

+            'dump memory ' + str(file_name) + ' ' + str(start_addr) + ' ' + str(end_addr),

+            'monitor mips bus_read off'

+        ]

+        for cmd in gdb_cmds:

+		    retval = gdb.execute(cmd, to_string=True)

+

+def core_dump_mem( file_name, start_addr, end_addr):

+        gdb_cmds = [

+            'monitor mips bus_read off',

+            'dump binary memory ' + str(file_name) + ' ' + str(start_addr) + ' ' + str(end_addr),

+        ]

+        for cmd in gdb_cmds:

+		    retval = gdb.execute(cmd, to_string=True)

+            

+def symbol_read(symbol):

+		gdb_cmd = 'p ' + symbol

+		mem_value = gdb.execute(gdb_cmd, to_string=True)

+		return mem_value

+

+def dump_sys_mem():

+	result = symbol_read('SysMemoryInfo')

+	# $2 = {16384, 4103412, 79691776, 0, ... }

+	m = re.search(r'{(.+?)}', result)

+	sys_mem_arr =  m.group(1).split(',')

+	print 'total regions: ', len(sys_mem_arr)/2

+	print sys_mem_arr

+	for i in range(2, len(sys_mem_arr), 2):

+		addr = int(sys_mem_arr[i],10)

+		size = int(sys_mem_arr[i+1],10)

+		print i,"start to dump", format(addr, '#010x'), format(size, '#x')

+		if size != 0 and size != 0xFFFFFFFF:

+			#seg_size = 102400

+			#for j in range(addr, addr+size-seg_size, seg_size):

+			#	print "  start to dump segment", format(j, '#010x'), format(seg_size, '#x')

+			#	core_dump_mem('sys_mem_'+format(j, '#010x')+'.bin', j, j+seg_size)

+			core_dump_mem('sys_mem_'+format(addr, '#010x')+'.bin', addr, addr+size)

+			

+			

+if __name__ == "__main__":

+

+

+	print "=== Start Dump Mem ==="

+	tStart = time.time()

+	dump_sys_mem()

+	tEnd = time.time()

+	print "=== End Dump Mem ==="

+	print "elapsed time %f sec" % (tEnd - tStart)

+	

+    # tStart = time.time()

+    # bus_dump_mem('a.bin', 0x0, 0x2000)

+    # tEnd = time.time()

+    # print "bus_dump_mem cost %f sec" % (tEnd - tStart)

+

+    # tStart = time.time()

+    # core_dump_mem('b.bin', 0x0, 0x2000)

+    # tEnd = time.time()

+    # print "core_dump_mem cost %f sec" % (tEnd - tStart)

+    # 
\ No newline at end of file