From: <bob...@us...> - 2007-01-13 08:19:54
|
Revision: 755 http://svn.sourceforge.net/hackndev/?rev=755&view=rev Author: bobofdoom Date: 2007-01-13 00:19:53 -0800 (Sat, 13 Jan 2007) Log Message: ----------- tools: Added treo debug bootloader wrapper tool. Added Paths: ----------- linux4palm/tools/treodebug.py Added: linux4palm/tools/treodebug.py =================================================================== --- linux4palm/tools/treodebug.py (rev 0) +++ linux4palm/tools/treodebug.py 2007-01-13 08:19:53 UTC (rev 755) @@ -0,0 +1,121 @@ +#!/usr/bin/env python +# +# Requires pyserial (see http://pyserial.sf.net/) +# +import serial, readline, atexit, sys + +# Register addresses +GPLR = [0xA8E00000, 0xA8E00004, 0xA8E00008, 0xA8E00100] +GPDR = [0xA8E0000C, 0xA8E00010, 0xA8E00014, 0xA8E0010C] +GPSR = [0xA8E00018, 0xA8E0001C, 0xA8E00020, 0xA8E00118] +GPCR = [0xA8E00024, 0xA8E00028, 0xA8E0002c, 0xA8E00124] +GRER = [0xA8E00030, 0xA8E00034, 0xA8E00038, 0xA8E00130] +GFER = [0xA8E0003C, 0xA8E00040, 0xA8E00044, 0xA8E0013C] +GEDR = [0xA8E00048, 0xA8E0004C, 0xA8E00050, 0xA8E00148] +GAFR = [0xA8E00054, 0xA8E00058, 0xA8E0005c, 0xA8E00060, + 0xA8E00064, 0xA8E00068, 0xA8E0006c, 0xA8E00070] + +def openhist(): + import os + histfile = os.path.join(os.environ["HOME"], ".treodebughist") + try: + readline.read_history_file(histfile) + except IOError: + pass + atexit.register(readline.write_history_file, histfile) + del os, histfile + + +def dumpmem(start, count): + f = file('treodump.bin','wb') + ser.write('mb %x %x\r\n' % (start, count)) + written = 0 + while written < count: + line = ser.readline().strip() + print line + if len(line) < 9 or line[8] != ':': continue + bits = line.split() + bin = ''.join([chr(int(x,16)) for x in bits[1:9] + bits[10:18]]) + written += len(bin) + f.write(bin) + + f.close() + + +def gpiotable(): + try: + import gpio_wiki_tool + except LibraryError: + print 'Unable to load gpio_wiki_tool.py' + return + + def readreg(reg): + ser.write('mw %x 1\r\n' % reg) + for line in ser.readlines(): + print line.strip() + if len(line) >= 9 and line[8] == ':': + code = '-' + i = 1 + while code == '-': + code = line.split()[i] + i+= 1 + return int(code, 16) + break + + gpio_wiki_tool.GPLR = map(readreg, GPLR) + gpio_wiki_tool.GPDR = map(readreg, GPDR) + gpio_wiki_tool.GRER = map(readreg, GRER) + gpio_wiki_tool.GFER = map(readreg, GFER) + gpio_wiki_tool.GAFR = map(readreg, GAFR) + gpio_wiki_tool.main() + +def loadimg(fn): + import struct + try: + f = file(fn, 'rb') + except IOError, e: + print 'Unable to open', fn + print e + return + + i = 0xa1000000 + while 1: + buf = f.read(4) + if buf == '': break + while len(buf) < 4: + buf += '\0' + + dat, = struct.unpack('<I', buf) + ser.write('mw %x 1 %x\r\n' % (i, dat)) + if i % 0x100 == 0: + lines = ser.readlines() + print ''.join(lines).replace('\r','') + i+=4 + +def docmd(ser, buf): + words = buf.split() + if buf == 'exit': sys.exit(0) + if words[0] == 'dump': return dumpmem(int(words[1],16), int(words[2],16)) + if words[0] == 'gpiotable': return gpiotable() + if words[0] == 'loadimg': return loadimg(' '.join(words[1:])) + + ser.write(buf + '\r\n') + +def main(): + global ser + openhist() + ser = serial.Serial('/dev/ttyUSB0', 115200, timeout=0.01) + try: + while 1: + lines = ser.readlines() + print ''.join(lines).replace('\r','') + buf = raw_input() + docmd(ser, buf) + finally: + ser.close() + + + + + +if __name__ == '__main__': main() Property changes on: linux4palm/tools/treodebug.py ___________________________________________________________________ Name: svn:executable + * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |