[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