X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=client%2Fgoodfet.cc;h=e937398badf45b13ed45a6b8ea3109bd741faec8;hp=d79d16676df298caad56bbed0de1d0684a0e5088;hb=a6afe092f45e72e65198bf6fbe07e8da40706970;hpb=002c3c7923311e13f0ff2fcdfb292aa1c94ebe89 diff --git a/client/goodfet.cc b/client/goodfet.cc index d79d166..e937398 100755 --- a/client/goodfet.cc +++ b/client/goodfet.cc @@ -23,7 +23,9 @@ if(len(sys.argv)==1): print "%s verify $foo.hex [0x$start 0x$stop]" % sys.argv[0]; print "%s peekdata 0x$start [0x$stop]" % sys.argv[0]; print "%s pokedata 0x$adr 0x$val" % sys.argv[0]; - #print "%s peekcode 0x$start [0x$stop]" % sys.argv[0]; + print "%s peek 0x$iram" % sys.argv[0]; + print "%s poke 0x$iram 0x$val" % sys.argv[0]; + print "%s peekcode 0x$start [0x$stop]" % sys.argv[0]; sys.exit(); #Initailize FET and set baud rate @@ -31,9 +33,20 @@ client=GoodFETCC(); client.serInit() #Connect to target -client.CCsetup(); -client.CCstart(); +client.setup(); +client.start(); +if(sys.argv[1]=="explore"): + print "Exploring undefined commands." + print "Status: %s" %client.CCstatusstr(); + + cmd=0x04; #read status + for foo in range(0,0x5): + client.CCcmd([(0x0F<<3)|(0x00)|0x03,0x09<<3]); + print "Status %02x: %s" % (foo,client.CCstatusstr()); + for foo in range(0,3): + print "PC: %04x" % client.CCgetPC(); + if(sys.argv[1]=="test"): client.CCtest(); if(sys.argv[1]=="deadtest"): @@ -97,13 +110,28 @@ if(sys.argv[1]=="peekinfo"): while start<=stop: print "%04x: %02x" % (start,client.CCpeekcodebyte(start)); start=start+1; -if(sys.argv[1]=="peek"): - print "%02x" % client.CCpeekirambyte(int(sys.argv[2],16)); if(sys.argv[1]=="poke"): client.CCpokeirambyte(int(sys.argv[2],16), int(sys.argv[3],16)); if(sys.argv[1]=="randtest"): - print "coming soon" + #Seed RNG + client.CCpokeirambyte(0xBD,0x01); #RNDH=0x01 + client.CCpokeirambyte(0xB4,0x04); #ADCCON1=0x04 + client.CCpokeirambyte(0xBD,0x01); #RNDH=0x01 + client.CCpokeirambyte(0xB4,0x04); #ADCCON1=0x04 + + #Dump values + for foo in range(1,10): + print "%02x" % client.CCpeekirambyte(0xBD); #RNDH + client.CCpokeirambyte(0xB4,0x04); #ADCCON1=0x04 + client.CCreleasecpu(); + client.CChaltcpu(); + print "%02x" % client.CCpeekdatabyte(0xDF61); #CHIP ID +if(sys.argv[1]=="adctest"): + # ADCTest 0xDF3A 0xDF3B + print "ADC TEST %02x%02x" % ( + client.CCpeekdatabyte(0xDF3A), + client.CCpeekdatabyte(0xDF3B)); if(sys.argv[1]=="config"): print "Config is %02x" % client.CCrd_config(); @@ -123,14 +151,14 @@ if(sys.argv[1]=="flash"): print "Wiping Flash." #Wipe all of flash. - client.CCchiperase(); + #client.CCchiperase(); #Wipe the RAM buffer for the next flash page. - client.CCeraseflashbuffer(); + #client.CCeraseflashbuffer(); for i in h._buf.keys(): while(i>page+pagelen): if bcount>0: client.CCflashpage(page); - client.CCeraseflashbuffer(); + #client.CCeraseflashbuffer(); bcount=0; print "Flashed page at %06x" % page page+=pagelen; @@ -140,7 +168,7 @@ if(sys.argv[1]=="flash"): h[i]); bcount+=1; if(i%0x100==0): - print "Buffering %04x to %06x" % (i,page); + print "Buffering %04x toward %06x" % (i,page); #last page client.CCflashpage(page); print "Flashed final page at %06x" % page; @@ -188,6 +216,18 @@ if(sys.argv[1]=="peekdata"): while start<=stop: print "%04x: %02x" % (start,client.CCpeekdatabyte(start)); start=start+1; +if(sys.argv[1]=="peek"): + start=0x0000; + if(len(sys.argv)>2): + start=int(sys.argv[2],16); + stop=start; + if(len(sys.argv)>3): + stop=int(sys.argv[3],16); + print "Peeking from %04x to %04x." % (start,stop); + while start<=stop: + print "%04x: %02x" % (start,client.CCpeekirambyte(start)); + start=start+1; + if(sys.argv[1]=="peekcode"): start=0x0000; if(len(sys.argv)>2): @@ -209,4 +249,4 @@ if(sys.argv[1]=="pokedata"): print "Poking %04x to become %02x." % (start,val); client.CCpokedatabyte(start,val); -client.CCstop(); +client.stop();