Client now runs at 115200 baud.
authortravisutk <travisutk@12e2690d-a6be-4b82-a7b7-67c4a43b65c8>
Sun, 21 Jun 2009 21:20:42 +0000 (21:20 +0000)
committertravisutk <travisutk@12e2690d-a6be-4b82-a7b7-67c4a43b65c8>
Sun, 21 Jun 2009 21:20:42 +0000 (21:20 +0000)
git-svn-id: https://svn.code.sf.net/p/goodfet/code/trunk@48 12e2690d-a6be-4b82-a7b7-67c4a43b65c8

client/GoodFET.py
client/goodfet.msp430

index a4d07c2..94737ba 100755 (executable)
@@ -20,7 +20,8 @@ class GoodFET:
         """Open the serial port"""
         self.serialport = serial.Serial(
             port,
         """Open the serial port"""
         self.serialport = serial.Serial(
             port,
-            9600,
+            #9600,
+            115200,
             parity = serial.PARITY_NONE
             )
         #Drop DTR, which is !RST, low to begin the app.
             parity = serial.PARITY_NONE
             )
         #Drop DTR, which is !RST, low to begin the app.
@@ -29,7 +30,7 @@ class GoodFET:
         self.serialport.flushOutput()
         
         #Read and handle the initial command.
         self.serialport.flushOutput()
         
         #Read and handle the initial command.
-        time.sleep(1);
+        #time.sleep(1);
         self.readcmd(); #Read the first command.
         if(self.verb!=0x7F):
             print "Verb is wrong.  Incorrect firmware?";
         self.readcmd(); #Read the first command.
         if(self.verb!=0x7F):
             print "Verb is wrong.  Incorrect firmware?";
@@ -71,14 +72,19 @@ class GoodFET:
     def setBaud(self,baud):
         rates=[9600, 9600, 19200, 38400];
         self.data=[baud];
     def setBaud(self,baud):
         rates=[9600, 9600, 19200, 38400];
         self.data=[baud];
-        print "Changing baud."
+        print "Changing FET baud."
         self.serialport.write(chr(0x00));
         self.serialport.write(chr(0x80));
         self.serialport.write(chr(1));
         self.serialport.write(chr(baud));
         
         self.serialport.write(chr(0x00));
         self.serialport.write(chr(0x80));
         self.serialport.write(chr(1));
         self.serialport.write(chr(baud));
         
-        print "Changed baud."
+        print "Changed host baud."
         self.serialport.setBaudrate(rates[baud]);
         self.serialport.setBaudrate(rates[baud]);
+        time.sleep(1);
+        self.serialport.flushInput()
+        self.serialport.flushOutput()
+        
+        print "Baud is now %i." % rates[baud];
         return;
     def monitortest(self):
         """Self-test several functions through the monitor."""
         return;
     def monitortest(self):
         """Self-test several functions through the monitor."""
@@ -169,22 +175,24 @@ class GoodFET:
     def MSP430flashtest(self):
         self.MSP430masserase();
         i=0x2500;
     def MSP430flashtest(self):
         self.MSP430masserase();
         i=0x2500;
-        while(i<0x2600):
+        while(i<0xFFFF):
             if(self.MSP430peek(i)!=0xFFFF):
                 print "ERROR: Unerased flash at %04x."%i;
             if(self.MSP430peek(i)!=0xFFFF):
                 print "ERROR: Unerased flash at %04x."%i;
-            self.MSP430writeflash(i,0x0000);
+            self.MSP430writeflash(i,0xDEAD);
             i+=2;
     def MSP430masserase(self):
         """Erase MSP430 flash memory."""
         self.writecmd(0x11,0xE3,0,None);
     def MSP430writeflash(self,adr,val):
         """Write a word of flash memory."""
             i+=2;
     def MSP430masserase(self):
         """Erase MSP430 flash memory."""
         self.writecmd(0x11,0xE3,0,None);
     def MSP430writeflash(self,adr,val):
         """Write a word of flash memory."""
+        if(self.MSP430peek(adr)!=0xFFFF):
+            print "FLASH ERROR: %04x not clear." % adr;
         data=[adr&0xFF,(adr&0xFF00)>>8,val&0xFF,(val&0xFF00)>>8];
         self.writecmd(0x11,0xE1,4,data);
         rval=ord(self.data[0])+(ord(self.data[1])<<8);
         if(val!=rval):
             print "FLASH WRITE ERROR AT %04x.  Found %04x, wrote %04x." % (adr,rval,val);
         data=[adr&0xFF,(adr&0xFF00)>>8,val&0xFF,(val&0xFF00)>>8];
         self.writecmd(0x11,0xE1,4,data);
         rval=ord(self.data[0])+(ord(self.data[1])<<8);
         if(val!=rval):
             print "FLASH WRITE ERROR AT %04x.  Found %04x, wrote %04x." % (adr,rval,val);
-            sys.exit(1);
+            
     def MSP430dumpbsl(self):
         self.MSP430dumpmem(0xC00,0xfff);
     def MSP430dumpallmem(self):
     def MSP430dumpbsl(self):
         self.MSP430dumpmem(0xC00,0xfff);
     def MSP430dumpallmem(self):
index 2286695..7e5c065 100755 (executable)
@@ -20,13 +20,17 @@ if(len(sys.argv)==1):
 #Initailize FET and set baud rate
 client=GoodFET();
 client.serInit("/dev/ttyUSB0")
 #Initailize FET and set baud rate
 client=GoodFET();
 client.serInit("/dev/ttyUSB0")
-#client.setBaud(1);
+
+
 
 #Connect to target
 client.MSP430setup();
 client.MSP430start();
 
 
 #Connect to target
 client.MSP430setup();
 client.MSP430start();
 
+#client.setBaud(2);
 
 
+if(sys.argv[1]=="monitortest"):
+    client.monitortest();
 if(sys.argv[1]=="test"):
     client.MSP430test();
 if(sys.argv[1]=="dump"):
 if(sys.argv[1]=="test"):
     client.MSP430test();
 if(sys.argv[1]=="dump"):
@@ -62,7 +66,6 @@ if(sys.argv[1]=="flash"):
     
     h = IntelHex16bit(f);
     
     
     h = IntelHex16bit(f);
     
-    
     client.MSP430masserase();
     for i in h._buf.keys():
         #print "%04x: %04x"%(i,h[i>>1]);
     client.MSP430masserase();
     for i in h._buf.keys():
         #print "%04x: %04x"%(i,h[i>>1]);