projects
/
goodfet
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Nothing major.
[goodfet]
/
client
/
GoodFET.py
diff --git
a/client/GoodFET.py
b/client/GoodFET.py
index
99756ba
..
f80a46d
100755
(executable)
--- a/
client/GoodFET.py
+++ b/
client/GoodFET.py
@@
-10,6
+10,7
@@
import sys, time, string, cStringIO, struct, glob, serial, os;
class GoodFET:
class GoodFET:
+ """GoodFET Client Library"""
def __init__(self, *args, **kargs):
self.data=[0];
def timeout(self):
def __init__(self, *args, **kargs):
self.data=[0];
def timeout(self):
@@
-17,7
+18,7
@@
class GoodFET:
def serInit(self, port=None):
"""Open the serial port"""
def serInit(self, port=None):
"""Open the serial port"""
- if port is None:
+ if port is None
and os.environ.get("GOODFET")!=None
:
glob_list = glob.glob(os.environ.get("GOODFET"));
if len(glob_list) > 0:
port = glob_list[0];
glob_list = glob.glob(os.environ.get("GOODFET"));
if len(glob_list) > 0:
port = glob_list[0];
@@
-47,7
+48,7
@@
class GoodFET:
if(self.verb!=0x7F):
print "Verb %02x is wrong. Incorrect firmware?" % self.verb;
#print "Connected."
if(self.verb!=0x7F):
print "Verb %02x is wrong. Incorrect firmware?" % self.verb;
#print "Connected."
- def writecmd(self, app, verb, count
, data
):
+ def writecmd(self, app, verb, count
=0, data=[], blocks=1
):
"""Write a command and some data to the GoodFET."""
self.serialport.write(chr(app));
self.serialport.write(chr(verb));
"""Write a command and some data to the GoodFET."""
self.serialport.write(chr(app));
self.serialport.write(chr(verb));
@@
-56,14
+57,15
@@
class GoodFET:
if count!=0:
for d in data:
self.serialport.write(chr(d));
if count!=0:
for d in data:
self.serialport.write(chr(d));
- self.readcmd(); #Uncomment this later, to ensure a response.
- def readcmd(self):
+
+ self.readcmd(blocks); #Uncomment this later, to ensure a response.
+ def readcmd(self,blocks=1):
"""Read a reply from the GoodFET."""
self.app=ord(self.serialport.read(1));
self.verb=ord(self.serialport.read(1));
self.count=ord(self.serialport.read(1));
"""Read a reply from the GoodFET."""
self.app=ord(self.serialport.read(1));
self.verb=ord(self.serialport.read(1));
self.count=ord(self.serialport.read(1));
- if self.count>0:
-
self.data=self.serialport.read(self.count)
;
+ self.data=self.serialport.read(self.count*blocks);
+
return self.data
;
#print "READ %02x %02x %02x " % (self.app, self.verb, self.count);
#Monitor stuff
#print "READ %02x %02x %02x " % (self.app, self.verb, self.count);
#Monitor stuff
@@
-151,7
+153,6
@@
class GoodFET:
def SPIsetup(self):
"""Moved the FET into the SPI application."""
self.writecmd(0x01,0x10,0,self.data); #SPI/SETUP
def SPIsetup(self):
"""Moved the FET into the SPI application."""
self.writecmd(0x01,0x10,0,self.data); #SPI/SETUP
-
def SPItrans8(self,byte):
"""Read and write 8 bits by SPI."""
def SPItrans8(self,byte):
"""Read and write 8 bits by SPI."""
@@
-193,6
+194,8
@@
class GoodFET:
self.JEDECtype=ord(data[2]);
self.JEDECcapacity=ord(data[3]);
self.JEDECsize=self.JEDECsizes.get(self.JEDECcapacity);
self.JEDECtype=ord(data[2]);
self.JEDECcapacity=ord(data[3]);
self.JEDECsize=self.JEDECsizes.get(self.JEDECcapacity);
+ if self.JEDECsize==None:
+ self.JEDECsize=0;
self.JEDECdevice=(ord(data[1])<<16)+(ord(data[2])<<8)+ord(data[3]);
return data;
def SPIpeek(self,adr):
self.JEDECdevice=(ord(data[1])<<16)+(ord(data[2])<<8)+ord(data[3]);
return data;
def SPIpeek(self,adr):
@@
-204,14
+207,16
@@
class GoodFET:
0];
self.SPItrans(data);
return ord(self.data[4]);
0];
self.SPItrans(data);
return ord(self.data[4]);
- def SPIpeekblock(self,adr):
- """Grab a block from an SPI Flash ROM. Block size is unknown"""
+ def SPIpeekblock(self,adr
,blocks=1
):
+ """Grab a
few
block from an SPI Flash ROM. Block size is unknown"""
data=[(adr&0xFF0000)>>16,
(adr&0xFF00)>>8,
data=[(adr&0xFF0000)>>16,
(adr&0xFF00)>>8,
- adr&0xFF];
+ adr&0xFF,
+ blocks];
- self.writecmd(0x01,0x02,
3,data
);
+ self.writecmd(0x01,0x02,
4,data,blocks
);
return self.data;
return self.data;
+
def SPIpokebyte(self,adr,val):
self.SPIpokebytes(adr,[val]);
def SPIpokebytes(self,adr,data):
def SPIpokebyte(self,adr,val):
self.SPIpokebytes(adr,[val]);
def SPIpokebytes(self,adr,data):
@@
-247,6
+252,7
@@
class GoodFET:
if device==0:
device="???"
return "%s %s" % (man,device);
if device==0:
device="???"
return "%s %s" % (man,device);
+
def MSP430setup(self):
"""Move the FET into the MSP430 JTAG application."""
print "Initializing MSP430.";
def MSP430setup(self):
"""Move the FET into the MSP430 JTAG application."""
print "Initializing MSP430.";