From: travisutk Date: Mon, 22 Jun 2009 23:37:06 +0000 (+0000) Subject: Chipcon string identification, single-stepping. X-Git-Url: http://git.rot13.org/?p=goodfet;a=commitdiff_plain;h=46b8f7ea95b0a9815c40331c692f4346cfba33ee;hp=2578d3d26d4b79f281f46ca36faf6d0c67edbace Chipcon string identification, single-stepping. git-svn-id: https://svn.code.sf.net/p/goodfet/code/trunk@53 12e2690d-a6be-4b82-a7b7-67c4a43b65c8 --- diff --git a/client/GoodFET.py b/client/GoodFET.py index 263e368..36f680e 100755 --- a/client/GoodFET.py +++ b/client/GoodFET.py @@ -127,12 +127,28 @@ class GoodFET: def CCwr_config(self,config): """Write the config register of a Chipcon.""" self.writecmd(0x30,0x81,1,[config&0xFF]); + + CCversions={0x0100:"CC1110", + 0x8500:"CC2430", + 0x8900:"CC2431", + 0x8100:"CC2510", + 0x9100:"CC2511"}; + def CCidentstr(self): + ident=self.CCident(); + chip=self.CCversions[ident&0xFF00]; + return "%s/r%02x" % (chip, ident&0xFF); def CCident(self): """Get a chipcon's ID.""" self.writecmd(0x30,0x8B,0,None); chip=ord(self.data[0]); rev=ord(self.data[1]); return (chip<<8)+rev; + def CCgetPC(self): + """Get a chipcon's PC.""" + self.writecmd(0x30,0x83,0,None); + hi=ord(self.data[0]); + lo=ord(self.data[1]); + return (hi<<8)+lo; def MSP430peek(self,adr): """Read the contents of memory at an address.""" self.data=[adr&0xff, (adr&0xff00)>>8]; @@ -143,7 +159,6 @@ class GoodFET: self.data=[adr&0xff, (adr&0xff00)>>8, val&0xff, (val&0xff00)>>8]; self.writecmd(0x11,0x03,4,self.data); return;# ord(self.data[0])+(ord(self.data[1])<<8); - def MSP430start(self): """Start debugging.""" self.writecmd(0x11,0x20,0,self.data); @@ -153,12 +168,14 @@ class GoodFET: def CCstart(self): """Start debugging.""" self.writecmd(0x30,0x20,0,self.data); - ident=self.CCident(); - print "Target identifies as %04x." % ident; + ident=self.CCidentstr(); + print "Target identifies as %s." % ident; def CCstop(self): """Stop debugging.""" self.writecmd(0x30,0x21,0,self.data); - + def CCstep_instr(self): + """Step one instruction.""" + self.writecmd(0x30,0x89,0,self.data); def MSP430stop(self): """Stop debugging.""" self.writecmd(0x11,0x21,0,self.data); @@ -228,7 +245,20 @@ class GoodFET: while i