added new mcpCAN communication file to allow for easier testing and data storage.
[goodfet] / client / goodfet.msp430
index a52a3b4..b606edc 100755 (executable)
@@ -10,6 +10,7 @@ from intelhex import IntelHex16bit, IntelHex;
 if(len(sys.argv)==1):
     print "Usage: %s verb [objects]\n" % sys.argv[0];
     print "%s test" % sys.argv[0];
+    print "%s selftest" % sys.argv[0];
     print "%s dump $foo.hex [0x$start 0x$stop]" % sys.argv[0];
     print "%s erase" % sys.argv[0];
     print "%s eraseinfo" % sys.argv[0];
@@ -25,13 +26,12 @@ if(len(sys.argv)==1):
 client=GoodFETMSP430();
 client.serInit()
 
-#Connect to target
 client.setup();
-#print "setup"
-
-#Identify model number.
 client.start();
 
+if(sys.argv[1]=="starttest"):
+    for foo in range(1,10):
+        client.start();
 if(sys.argv[1]=="info"):
     #print "Model    %08x " % client.MSP430deviceid();
     #print "Core     %04x " % client.MSP430coreid();
@@ -81,13 +81,23 @@ if(sys.argv[1]=="selftest"):
     for i in range(0x3020,0x3030):
         client.MSP430poke(i,0xFFFF);
     client.MSP430setPC(entry);
-    time.sleep(2);
+    time.sleep(5);
     errors=0;
-    for i in range(0x3020,0x3030):
-        ret=client.peek8(i);
+    
+    if(client.peek8(0x302F)==0xFF):
+        print "Test not run.  Try again.";
+        exit(0);
+    
+    for i in range(0x3020,0x3030,2):
+        ret=client.peek16(i);
         if ret!=0:
             errors=errors+1;
             print "Failure at 0x%04x, returned %02xh." % (i,ret);
+        
+    if errors==0:
+        print "Test succeeded.  Board is ready to ship."
+    else:
+        print "Test failed.  Is it soldered correctly?"
     #client.MSP430dumpmem(0x3020,0x3030);
     
 if(sys.argv[1]=="ivt"):