X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=client%2Fgoodfet.cc;h=3f2860dc9de8158c34cdc6360f9ec1136f49b550;hp=badbf7ab9aa6429a9ff6e7fecd415eb532f084ed;hb=6648c78f1f6eca1ff5bc477d10b12c2125f31285;hpb=ea4f451d1fbdc93bb175c7b55a43f3e906219a62 diff --git a/client/goodfet.cc b/client/goodfet.cc index badbf7a..3f2860d 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 @@ -82,6 +84,46 @@ if(sys.argv[1]=="erase"): client.CCchiperase(); print "Status: %s" %client.CCstatusstr(); +if(sys.argv[1]=="peekinfo"): + print "Select info flash." + client.CCwr_config(1); + print "Config is %02x" % client.CCrd_config(); + + 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.CCpeekcodebyte(start)); + start=start+1; +if(sys.argv[1]=="poke"): + client.CCpokeirambyte(int(sys.argv[2],16), + int(sys.argv[3],16)); +if(sys.argv[1]=="randtest"): + #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(); + if(sys.argv[1]=="flash"): f=sys.argv[2]; start=0; @@ -96,15 +138,16 @@ if(sys.argv[1]=="flash"): pagelen = 2048; #2kB pages in 32-bit words bcount = 0; + 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; @@ -114,11 +157,15 @@ if(sys.argv[1]=="flash"): h[i]); bcount+=1; if(i%0x100==0): - print "%04x at %06x" % (i,page); + print "Buffering %04x toward %06x" % (i,page); #last page client.CCflashpage(page); print "Flashed final page at %06x" % page; +if(sys.argv[1]=="lock"): + print "Status: %s" %client.CCstatusstr(); + client.CClockchip(); + print "Status: %s" %client.CCstatusstr(); if(sys.argv[1]=="flashpage"): target=0; if(len(sys.argv)>2): @@ -158,6 +205,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):