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];
sys.exit();
#Initailize FET and set baud rate
+#client=GoodFET.GoodFETCC.GoodFETCC();
client=GoodFETCC();
client.serInit()
client.setup();
client.start();
+
if(sys.argv[1]=="explore"):
print "Exploring undefined commands."
- print "Status: %s" %client.CCstatusstr();
+ print "Status: %s" %client.status();
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());
+ 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.CCtest();
+ client.test();
if(sys.argv[1]=="deadtest"):
for i in range(1,10):
print "IDENT as %s" % client.CCidentstr();
i+=1;
h.write_hex_file(f);
if(sys.argv[1]=="status"):
- print "Status: %s" %client.CCstatusstr();
+ 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.CCstatusstr();
+ print "Status: %s" % client.status();
client.CCchiperase();
- print "Status: %s" %client.CCstatusstr();
+ print "Status: %s" %client.status();
if(sys.argv[1]=="peekinfo"):
print "Select info 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
-
- 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.CCstatusstr();
+ print "Status: %s" %client.status();
client.CClockchip();
- print "Status: %s" %client.CCstatusstr();
+ print "Status: %s" %client.status();
if(sys.argv[1]=="flashpage"):
target=0;
if(len(sys.argv)>2):