X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=client%2Fgplay-arm.py;h=f216a1fa925c91ac6634aa5646f963944ceb55b5;hp=8154015c826e4c43a2031816a818e980d7be994e;hb=b7a6e00b7d75a7f29401c2aeeb2e19cbd622d678;hpb=64ef261d7416ef8cb3ec6cdf7130fc4d8afad8cd;ds=sidebyside diff --git a/client/gplay-arm.py b/client/gplay-arm.py index 8154015..f216a1f 100755 --- a/client/gplay-arm.py +++ b/client/gplay-arm.py @@ -1,5 +1,5 @@ #!/usr/bin/env ipython -import sys, struct, binascii +import sys, struct, binascii,time from GoodFETARM import * from intelhex import IntelHex @@ -9,14 +9,24 @@ data = [] client=GoodFETARM(); def init(): #Initailize FET and set baud rate + print >>sys.stderr,"Connecting to goodfet..." client.serInit() # #Connect to target + print >>sys.stderr,"Setting up JTAG ARM on goodfet..." client.setup() + print >>sys.stderr,"Starting JTAG ARM on goodfet..." client.start() print "STARTUP: "+repr(client.data) # +def print_registers(): + return [ hex(client.ARMget_register(x)) for x in range(15) ] + +def regwratchet(num,hi=13,lo=0): + for x in xrange(lo,hi+1): + client.ARMset_register(x,num) + def test1(): global data print "\n\nTesting JTAG for ARM\n" @@ -115,10 +125,139 @@ def test3(): client.writecmd(0x33,0xd4,1,[0]) print "test_get_reg: \t %s"%repr(client.data) +def test4(): + print "IDCODE: %x"%client.ARMident() + print "Debug State: %x"%client.ARMget_dbgstate () + print "set_register(0,0x4141): %x"%client.ARMset_register(0,0x4141) + print "get_register(0): %x"%client.ARMget_register(0) + print "set_register(1,0x4141): %x"%client.ARMset_register(1,0x4142) + print "get_register(1): %x"%client.ARMget_register(1) + print "set_register(2,0x4141): %x"%client.ARMset_register(2,0x4143) + print "get_register(2): %x"%client.ARMget_register(2) + print "set_register(3,0x4141): %x"%client.ARMset_register(3,0x4144) + print "get_register(3): %x"%client.ARMget_register(3) + print "set_register(4,0x4141): %x"%client.ARMset_register(4,0x4145) + print "get_register(4): %x"%client.ARMget_register(4) + print "set_register(5,0x4141): %x"%client.ARMset_register(5,0x4146) + print "get_register(5): %x"%client.ARMget_register(5) + print "set_register(6,0x4141): %x"%client.ARMset_register(6,0x4147) + print "get_register(6): %x"%client.ARMget_register(6) + print "set_register(7,0x4141): %x"%client.ARMset_register(7,0x4148) + print "get_register(7): %x"%client.ARMget_register(7) + print "set_register(8,0x4141): %x"%client.ARMset_register(8,0x4149) + print "get_register(8): %x"%client.ARMget_register(8) + print "set_register(9,0x4141): %x"%client.ARMset_register(9,0x4140) + print "get_register(9): %x"%client.ARMget_register(9) + print "set_register(10,0x4141): %x"%client.ARMset_register(10,0x4151) + print "get_register(10): %x"%client.ARMget_register(10) + print "set_register(11,0x4141): %x"%client.ARMset_register(11,0x4152) + print "get_register(11): %x"%client.ARMget_register(11) + print "set_register(12,0x4141): %x"%client.ARMset_register(12,0x4153) + print "get_register(12): %x"%client.ARMget_register(12) + print "set_register(13,0x4141): %x"%client.ARMset_register(13,0x4154) + print "get_register(13): %x"%client.ARMget_register(13) + print "set_register(14,0x4141): %x"%client.ARMset_register(14,0x4155) + print "get_register(14): %x"%client.ARMget_register(14) + #print "set_register(15,0x4141): %x"%client.ARMset_register(15,0x41414156) + #print "get_register(15): %x"%client.ARMget_register(15) + + +seed = 0 +def test5(start=0,end=15): + global results,seed + results = [[] for x in range(end)] + while True: + #print "IDCODE: %x"%client.ARMident() + #print "Debug State: %x"%client.ARMget_dbgstate () + for x in range(start,end): + num = client.ARMset_register(x,seed) + print "set_register(%d,0x%x): %x"%(x,seed,num) + num = client.ARMget_register(x) + print "get_register(%d): %x"%(x,num) + results[x].append(num) + if (num != seed): + for y in range(13): + num = client.ARMset_register(x,seed) + print "set_register(%d,0x%x): %x"%(x,seed,num) + num = client.ARMget_register(x) + print "get_register(%d): %x"%(x,num) + results[x].append(num) + seed += 1 + client.ARMident() + client.ARMident() + print "Debug State: %x"%client.ARMget_dbgstate () + +def test6(start=0,end=15): + global results,seed + results = [[] for x in range(end)] + while True: + #print "IDCODE: %x"%client.ARMident() + #print "Debug State: %x"%client.ARMget_dbgstate () + for x in range(start,end): + num = client.ARMset_register(x,seed+x) + print "set_register(%d,0x%x): %x"%(x,seed+x,num) + client.ARMident() + client.ARMident() + for x in range(start,end): + num = client.ARMget_register(x) + print "get_register(%d): %x"%(x,num) + results[x].append(num) + if (num != seed+x): + for y in range(13): + num = client.ARMset_register(x,seed+x) + print "set_register(%d,0x%x): %x"%(x,seed+x,num) + num = client.ARMget_register(x) + print "get_register(%d): %x"%(x,num) + results[x].append(num) + client.ARMident() + client.ARMident() + print "Debug State: %x"%client.ARMget_dbgstate () + seed += 1 + +def test7(start=0,end=14): + global results,seed + results = [[] for x in range(end)] + while True: + #print "IDCODE: %x"%client.ARMident() + #print "Debug State: %x"%client.ARMget_dbgstate () + for x in range(end,start-1, -1): + num = client.ARMset_register(x,seed+x) + time.sleep(1) + print "set_register(%d,0x%x): %x"%(x,seed+x,num) + for y in range(10): + for x in range(start,endi+1): + num = client.ARMget_register(x) + time.sleep(1) + print "get_register(%d): %x"%(x,num) + results[x].append(num) + seed += 1 + +def readtest(start=0,end=14): + global results,seed + results = [[] for x in range(end)] + while True: + #print "IDCODE: %x"%client.ARMident() + #print "Debug State: %x"%client.ARMget_dbgstate () + for x in range(end,start, -1): + num = client.ARMget_register(x) + time.sleep(1) + print "get_register(%d): %x"%(x,num) + for y in range(10): + for x in range(start,end,2): + num = client.ARMget_register(x) + time.sleep(1) + print "get_register(%d): %x"%(x,num) + results[x].append(num) + seed += 1 + init() print "Don't forget to 'client.stop()' if you want to exit cleanly" +def printResults(): + for y in range(len(results)): + x=results[y] + print "%.2x=%s"%(y,repr(["%x"%t for t in x])) """ case 0xD0: // loopback test