from GoodFET import GoodFET;
from intelhex import IntelHex;
+
+#grep CMD GoodFETConsole.py | grep def | sed s/\(sel.\*// | sed 's/def CMD//'
+commands="""
+ info
+ lock
+ erase
+ test
+ status
+ halt
+ resume
+ peek
+ flash
+ dump
+ where
+ chip
+"""
+
class GoodFETConsole():
"""An interactive goodfet driver."""
client.serInit();
client.setup();
client.start();
+ client.loadsymbols();
+ def prompt(self):
+ sys.stdout.write("gf% ");
+ sys.stdout.flush();
def run(self):
+ self.prompt();
+ #for cmd in sys.stdin:
while 1:
- sys.stdout.write("gf% ");
- sys.stdout.flush();
cmd=sys.stdin.readline();
- self.handle(cmd);
-
+ if not cmd: break;
+ if(cmd.strip()!=""):
+ self.handle(cmd);
+ self.prompt();
def handle(self, str):
"""Handle a command string. First word is command."""
+ #Lines beginning with ? are cries for help.
+ if(str[0]=="?"):
+ print "Term Commands:"
+ print commands
+ return;
#Lines beginning with # are comments.
if(str[0]=="#"): return;
#Lines beginning with ! are Python.
def CMDstatus(self,args):
print self.client.status();
return;
+ def CMDhalt(self,args):
+ print self.client.halt();
+ def CMDresume(self,args):
+ print self.client.resume();
def CMDpeek(self,args):
- adr=eval(args[1]);
+ adr=args[1];
memory="vn";
if(len(args)>2):
memory=args[2];
- print "0x%08x:= 0x%04x" % (adr, self.client.peek16(adr,memory));
+ adr= self.client.name2adr(adr);
+ #print "%i" % adr;
+ print "0x%08x:= 0x%04x" % (
+ adr, self.client.peek16(adr,
+ memory));
def CMDflash(self,args):
file=args[1];
self.client.flash(self.expandfilename(file));
+ def CMDdump(self,args):
+ file=args[1];
+ self.client.dump(self.expandfilename(file));
+ def CMDwhere(self,args):
+ pc=self.client.getpc();
+ print "PC=0x%04X" % pc;
+ def CMDchip(self,args):
+ cmd="self.client.CMD%s()" % args[1];
+ print cmd;
+ try:
+ eval(cmd);
+ except:
+ print sys.exc_info()[0];
+ print "Chip-specific command failed.";
def expandfilename(self,filename):
if(filename[0]=='~'):
return "%s%s" % (os.environ.get("HOME"),filename.lstrip('~'));