X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=client%2Fgoodfet.cc;h=3c00dc78b6d7abaa8bc1c8a455618027283ea045;hp=765437831007b01cb78af4ea5eda557986fc83f9;hb=d3dd9b72ba6d3335cbae4ef560a25e9f707a4435;hpb=99240d23ad8e006fbef01e3f4824f14c81fba768 diff --git a/client/goodfet.cc b/client/goodfet.cc index 7654378..3c00dc7 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,8 +110,6 @@ 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)); @@ -135,16 +146,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(); @@ -205,6 +216,34 @@ 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]=="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): @@ -226,4 +265,4 @@ if(sys.argv[1]=="pokedata"): print "Poking %04x to become %02x." % (start,val); client.CCpokedatabyte(start,val); -client.CCstop(); +client.stop();