X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=client%2Fgoodfet.cc;h=e00c72777f5ca13ae2c4deeb14de81065def1b07;hp=7dbb59ac52c4f82011cc50ac000b27d5f353699d;hb=d382f066165c8ec07a2693620b3f28807de1e5b0;hpb=dbd55dca7cded37fc93f74beb7c3043f11389d6e diff --git a/client/goodfet.cc b/client/goodfet.cc index 7dbb59a..e00c727 100755 --- a/client/goodfet.cc +++ b/client/goodfet.cc @@ -9,13 +9,16 @@ import sys; import binascii; from GoodFETCC import GoodFETCC; +from GoodFETConsole import GoodFETConsole; from intelhex import IntelHex; if(len(sys.argv)==1): print "Usage: %s verb [objects]\n" % sys.argv[0]; print "%s test" % sys.argv[0]; + print "%s term" % sys.argv[0]; print "%s info" % sys.argv[0]; + print "%s radioinfo" % sys.argv[0]; print "%s dumpcode $foo.hex [0x$start 0x$stop]" % sys.argv[0]; print "%s dumpdata $foo.hex [0x$start 0x$stop]" % sys.argv[0]; print "%s erase" % sys.argv[0]; @@ -36,6 +39,7 @@ client.serInit() client.setup(); client.start(); + if(sys.argv[1]=="explore"): print "Exploring undefined commands." print "Status: %s" %client.status(); @@ -46,7 +50,8 @@ if(sys.argv[1]=="explore"): print "Status %02x: %s" % (foo,client.status()); for foo in range(0,3): print "PC: %04x" % client.CCgetPC(); - +if(sys.argv[1]=="term"): + GoodFETConsole(client).run(); if(sys.argv[1]=="test"): client.test(); if(sys.argv[1]=="deadtest"): @@ -92,6 +97,8 @@ if(sys.argv[1]=="status"): print "Status: %s" %client.status(); if(sys.argv[1]=="info"): print "%s" % client.CCidentstr(); +if(sys.argv[1]=="radioinfo"): + client.CMDrs(); if(sys.argv[1]=="erase"): print "Status: %s" % client.status(); client.CCchiperase(); @@ -146,35 +153,7 @@ if(sys.argv[1]=="flash"): if(len(sys.argv)>4): stop=int(sys.argv[4],16); - h = IntelHex(f); - page = 0x0000; - pagelen = client.CCpagesize(); #2048; #2kB pages in 32-bit words - - print "page=%04x, pagelen=%04x" % (page,pagelen); - - bcount = 0; - - #Wipe the RAM buffer for the next flash page. - client.CCeraseflashbuffer(); - for i in h._buf.keys(): - while(i>=page+pagelen): - if bcount>0: - client.CCflashpage(page); - #client.CCeraseflashbuffer(); - bcount=0; - print "Flashed page at %06x" % page - page+=pagelen; - - #Place byte into buffer. - client.CCpokedatabyte(0xF000+i-page, - h[i]); - bcount+=1; - if(i%0x100==0): - print "Buffering %04x toward %06x" % (i,page); - #last page - client.CCflashpage(page); - print "Flashed final page at %06x" % page; - + client.flash(f); if(sys.argv[1]=="lock"): print "Status: %s" %client.status(); client.CClockchip();