#print "Status: %s." % self.CCstatusstr();
#Exit debugger
- self.CCstop();
+ self.stop();
print "Done.";
- def CCsetup(self):
+ def setup(self):
"""Move the FET into the CC2430/CC2530 application."""
#print "Initializing Chipcon.";
self.writecmd(0x30,0x10,0,self.data);
def CClockchip(self):
"""Set the flash lock bit in info mem."""
self.writecmd(0x30, 0x9A, 0, None);
-
+
+
CCversions={0x0100:"CC1110",
0x8500:"CC2430",
0x8900:"CC2431",
0x8100:"CC2510",
0x9100:"CC2511",
+ 0xA500:"CC2530", #page 52 of SWRU191
+ 0xB500:"CC2531",
0xFF00:"CCmissing"};
def CCidentstr(self):
ident=self.CCident();
self.data=[adr&0xff, (adr&0xff00)>>8];
self.writecmd(0x30,0x91, 2, self.data);
return ord(self.data[0]);
+ def CCpeekirambyte(self,adr):
+ """Read the contents of IRAM at an address."""
+ self.data=[adr&0xff];
+ self.writecmd(0x30,0x02, 1, self.data);
+ return ord(self.data[0]);
+ def CCpeekiramword(self,adr):
+ """Read the little-endian contents of IRAM at an address."""
+ return self.CCpeekirambyte(adr)+(
+ self.CCpeekirambyte(adr+1)<<8);
+ def CCpokeiramword(self,adr,val):
+ self.CCpokeirambyte(adr,val&0xff);
+ self.CCpokeirambyte(adr+1,(val>>8)&0xff);
+ def CCpokeirambyte(self,adr,val):
+ """Write the contents of IRAM at an address."""
+ self.data=[adr&0xff, val&0xff];
+ self.writecmd(0x30,0x02, 2, self.data);
+ return ord(self.data[0]);
+
def CCpokedatabyte(self,adr,val):
"""Write a byte to data memory."""
self.data=[adr&0xff, (adr&0xff00)>>8, val];
"""Check the status."""
self.writecmd(0x30,0x84,0,None);
return ord(self.data[0])
- CCstatusbits={0x80 : "erased",
+ #Same as CC2530
+ CCstatusbits={0x80 : "erase_busy",
0x40 : "pcon_idle",
0x20 : "cpu_halted",
0x10 : "pm0",
0x08 : "halt_status",
0x04 : "locked",
0x02 : "oscstable",
- 0x01 : "overflow"};
+ 0x01 : "overflow"
+ };
+ CCconfigbits={0x20 : "soft_power_mode", #new for CC2530
+ 0x08 : "timers_off",
+ 0x04 : "dma_pause",
+ 0x02 : "timer_suspend",
+ 0x01 : "sel_flash_info_page" #stricken from CC2530
+ };
+
def CCstatusstr(self):
"""Check the status as a string."""
status=self.CCstatus();
str="%s %s" %(self.CCstatusbits[i],str);
i*=2;
return str;
- def CCstart(self):
+ def start(self):
"""Start debugging."""
self.writecmd(0x30,0x20,0,self.data);
ident=self.CCidentstr();
self.CChaltcpu();
#print "Status: %s." % self.CCstatusstr();
- def CCstop(self):
+ def stop(self):
"""Stop debugging."""
self.writecmd(0x30,0x21,0,self.data);
def CCstep_instr(self):