X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=client%2FGoodFET.py;h=cbcf1c4ad963cb7fe31f2269d06d21311d93da20;hp=9c111617cc7463eb96dd34f034212c99e31cd424;hb=d0d48d9cdb77bee064236d148002f98f3c247121;hpb=9e13b1450d770a5645468221d0eacc1533d654a9 diff --git a/client/GoodFET.py b/client/GoodFET.py index 9c11161..cbcf1c4 100755 --- a/client/GoodFET.py +++ b/client/GoodFET.py @@ -115,11 +115,17 @@ class GoodFET: return self.data; JEDECmanufacturers={0xFF: "MISSING", - 0xEF: "Winbond"}; - JEDECdevices={0xEF3014: "W25X80L", + 0xEF: "Winbond", + 0xC2: "MXIC"}; + + JEDECdevices={0xFFFFFF: "MISSING", + 0xEF3014: "W25X80L", 0xEF3013: "W25X40L", 0xEF3012: "W25X20L", - 0xEF3011: "W25X10L"}; + 0xEF3011: "W25X10L", + 0xC22014: "MX25L8005", + 0xC22013: "MX25L4005" + }; def SPIjedec(self): """Grab an SPI Flash ROM's JEDEC bytes.""" data=[0x9f, 0, 0, 0]; @@ -139,20 +145,47 @@ class GoodFET: 0]; self.SPItrans(data); return ord(self.data[4]); + def SPIpeekblock(self,adr): + """Grab a byte from an SPI Flash ROM.""" + data=[(adr&0xFF0000)>>16, + (adr&0xFF00)>>8, + adr&0xFF]; + + self.writecmd(0x01,0x02,3,data); + return self.data; + def SPIpokebyte(self,adr,val): + self.SPIpokebytes(adr,[val]); + def SPIpokebytes(self,adr,data): + #self.SPIwriteenable(); + adranddata=[(adr&0xFF0000)>>16, + (adr&0xFF00)>>8, + adr&0xFF + ]+data; + self.writecmd(0x01,0x03, + len(adranddata),adranddata); + + def SPIchiperase(self): + """Mass erase an SPI Flash ROM.""" + self.writecmd(0x01,0x81,0,[]); + def SPIwriteenable(self): + """SPI Flash Write Enable""" + data=[0x06]; + self.SPItrans(data); + def SPIjedecmanstr(self): """Grab the JEDEC manufacturer string. Call after SPIjedec().""" - man=self.JEDECmanufacturers[self.JEDECmanufacturer]; + man=self.JEDECmanufacturers.get(self.JEDECmanufacturer) if man==0: man="UNKNOWN"; return man; def SPIjedecstr(self): """Grab the JEDEC manufacturer string. Call after SPIjedec().""" - man=self.JEDECmanufacturers[self.JEDECmanufacturer]; + man=self.JEDECmanufacturers.get(self.JEDECmanufacturer); if man==0: man="UNKNOWN"; - device=self.JEDECdevices[self.JEDECdevice]; + device=self.JEDECdevices.get(self.JEDECdevice); if device==0: device="???" return "%s %s" % (man,device);