X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=client%2FGoodFET.py;h=36f680e4b29a7e4dc94bfac4b96deffc6fdf9ca9;hp=94737bad884f07ea1f82f0f63e16645212b5440e;hb=46b8f7ea95b0a9815c40331c692f4346cfba33ee;hpb=81b8a55948335302b9691eff6b71ef17d61c61d5 diff --git a/client/GoodFET.py b/client/GoodFET.py index 94737ba..36f680e 100755 --- a/client/GoodFET.py +++ b/client/GoodFET.py @@ -116,6 +116,39 @@ class GoodFET: """Move the FET into the MSP430 JTAG application.""" print "Initializing MSP430."; self.writecmd(0x11,0x10,0,self.data); + def CCsetup(self): + """Move the FET into the CC2430/CC2530 application.""" + print "Initializing Chipcon."; + self.writecmd(0x30,0x10,0,self.data); + def CCrd_config(self): + """Read the config register of a Chipcon.""" + self.writecmd(0x30,0x82,0,self.data); + return ord(self.data[0]); + 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]; @@ -126,13 +159,23 @@ 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); ident=self.MSP430ident(); print "Target identifies as %04x." % ident; - + + def CCstart(self): + """Start debugging.""" + self.writecmd(0x30,0x20,0,self.data); + 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); @@ -202,4 +245,20 @@ class GoodFET: while i