self.data=[address&0xff,address>>8,value];
self.writecmd(0,0x03,3,self.data);
return ord(self.data[0]);
+ def poke16(self,address,value):
+ """Set a word of memory by the monitor."""
+ self.pokebyte(address,value&0xFF);
+ self.pokebyte(address,(value>>8)&0xFF);
+ return value;
def setsecret(self,value):
"""Set a secret word for later retreival. Used by glitcher."""
self.eeprompoke(0,value);
ident=self.CCident();
chip=self.CCversions.get(ident&0xFF00);
pagesize=self.CCpagesizes.get(ident>0xFF);
- return "%s/r%0.4x/ps0x%0.4x" % (chip, ident,pagesize);
+ try:
+ return "%s/r%0.4x/ps0x%0.4x" % (chip, ident, pagesize);
+ except:
+ return "%04x" % ident;
def CCident(self):
"""Get a chipcon's ID."""
self.writecmd(self.APP,0x8B,0,None);
print "Clocked at %s" % client.monitorclocking();
if(sys.argv[1]=="clocktest"):
print "GoodFET with %s MCU" % client.infostring();
- print "Clocked at %s" % client.monitorclocking();
+ clocking=client.monitorgetclock();
+ print "Clocked at 0x%04x" % clocking;
+ for foo in range(1,50):
+ client.monitorsetclock(clocking+foo);
+ print "+0x%04x: %s" % (foo,client.infostring());
+ client.monitorsetclock(clocking-foo);
+ print "-0x%04x: %s" % (foo,client.infostring());
+
if(sys.argv[1]=="ramfill"):
client.monitor_ram_pattern();