X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=client%2FGoodFETCC.py;h=d5208bd2dccf01f0f90430465fad8589ee86f8b1;hp=d171f86f8780c47a520edc58ca83109492f548bf;hb=f1803b3ed1a5bd2673fb14c1f023940355cb4254;hpb=7d3404539568650baef6a21c85580ea8e3e097aa diff --git a/client/GoodFETCC.py b/client/GoodFETCC.py index d171f86..d5208bd 100644 --- a/client/GoodFETCC.py +++ b/client/GoodFETCC.py @@ -64,12 +64,18 @@ class GoodFETCC(GoodFET): def CCwr_config(self,config): """Write the config register of a Chipcon.""" self.writecmd(0x30,0x81,1,[config&0xFF]); + 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(); @@ -112,14 +118,23 @@ class GoodFETCC(GoodFET): """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 : "halted", + 0x20 : "cpu_halted", 0x10 : "pm0", - 0x08 : "halted", + 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(); @@ -146,4 +161,14 @@ class GoodFETCC(GoodFET): def CCstep_instr(self): """Step one instruction.""" self.writecmd(0x30,0x89,0,self.data); - + def CCeraseflashbuffer(self): + """Erase the 2kB flash buffer""" + self.writecmd(0x30,0x99); + def CCflashpage(self,adr): + """Flash 2kB a page of flash from 0xF000 in XDATA""" + data=[adr&0xFF, + (adr>>8)&0xFF, + (adr>>16)&0xFF, + (adr>>24)&0xFF]; + print "Flashing buffer to 0x%06x" % adr; + self.writecmd(0x30,0x95,4,data);