X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=client%2Fgoodfet.cc;h=668265035e40c0427e4469a4db135a748fc77637;hp=3f2860dc9de8158c34cdc6360f9ec1136f49b550;hb=5d5f93016a718c2cf7230dafbf967adcfe31a3b5;hpb=8596546102fe3fbcb776ca8d47c1a913cac7636d;ds=sidebyside diff --git a/client/goodfet.cc b/client/goodfet.cc index 3f2860d..6682650 100755 --- a/client/goodfet.cc +++ b/client/goodfet.cc @@ -33,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"): @@ -79,6 +90,8 @@ if(sys.argv[1]=="dumpdata"): h.write_hex_file(f); if(sys.argv[1]=="status"): print "Status: %s" %client.CCstatusstr(); +if(sys.argv[1]=="info"): + print "%s" % client.CCidentstr(); if(sys.argv[1]=="erase"): print "Status: %s" % client.CCstatusstr(); client.CCchiperase(); @@ -135,16 +148,16 @@ if(sys.argv[1]=="flash"): h = IntelHex(f); page = 0x0000; - pagelen = 2048; #2kB pages in 32-bit words + pagelen = client.CCpagesize(); #2048; #2kB pages in 32-bit words + + print "page=%04x, pagelen=%04x" % (page,pagelen); + bcount = 0; - print "Wiping Flash." - #Wipe all of flash. - #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): + while(i>=page+pagelen): if bcount>0: client.CCflashpage(page); #client.CCeraseflashbuffer(); @@ -216,7 +229,23 @@ if(sys.argv[1]=="peek"): while start<=stop: print "%04x: %02x" % (start,client.CCpeekirambyte(start)); start=start+1; - +if(sys.argv[1]=="verify"): + f=sys.argv[2]; + start=0; + stop=0xFFFF; + if(len(sys.argv)>3): + start=int(sys.argv[3],16); + if(len(sys.argv)>4): + stop=int(sys.argv[4],16); + + h = IntelHex(f); + for i in h._buf.keys(): + if(i>=start and i2): @@ -238,4 +267,4 @@ if(sys.argv[1]=="pokedata"): print "Poking %04x to become %02x." % (start,val); client.CCpokedatabyte(start,val); -client.CCstop(); +client.stop();