X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=client%2FGoodFETSPI.py;h=c303b21266b3064747fb009b08597d50f175575c;hp=9c684b7c7fd14b1af7c96b830a29888385427162;hb=350c674c6bcd97ec2f883b07e0cf49eb8a480183;hpb=0a2608ce5eef9c2ad453129f5ad17236bf748797 diff --git a/client/GoodFETSPI.py b/client/GoodFETSPI.py index 9c684b7..c303b21 100644 --- a/client/GoodFETSPI.py +++ b/client/GoodFETSPI.py @@ -5,7 +5,7 @@ # # This code is being rewritten and refactored. You've been warned! -import sys, time, string, cStringIO, struct, glob, serial, os; +import sys, time, string, cStringIO, struct, glob, os; from GoodFET import GoodFET; @@ -77,17 +77,24 @@ class GoodFETSPIFlash(GoodFETSPI): JEDECsize=0; def SPIjedec(self): - """Grab an SPI Flash ROM's JEDEC bytes.""" + """Grab an SPI Flash ROM's JEDEC bytes. Some chips don't implement + this, such as Numonyx M25P* except in the 110nm processed.""" data=[0x9f, 0, 0, 0]; data=self.SPItrans(data); - + jedec=0; self.JEDECmanufacturer=ord(data[1]); - self.JEDECtype=ord(data[2]); - self.JEDECcapacity=ord(data[3]); + if self.JEDECmanufacturer==0xFF: + self.JEDECtype=0x20; + self.JEDECcapacity=0x14; + jedec=0x202014; + else: + self.JEDECtype=ord(data[2]); + self.JEDECcapacity=ord(data[3]); + jedec=(ord(data[1])<<16)+(ord(data[2])<<8)+ord(data[3]); self.JEDECsize=self.JEDECsizes.get(self.JEDECcapacity); if self.JEDECsize==None: self.JEDECsize=0; - jedec=(ord(data[1])<<16)+(ord(data[2])<<8)+ord(data[3]); + if jedec==0x1F4501: self.JEDECsize=1024**2; self.JEDECdevice=jedec;