2 # GoodFET SPI Flash Client
4 # (C) 2012 Travis Goodspeed <travis at radiantmachines.com>
6 # This code is being rewritten and refactored. You've been warned!
12 from GoodFETMCPCAN import GoodFETMCPCAN;
13 from intelhex import IntelHex;
16 print "Usage: %s verb [objects]\n" % sys.argv[0];
17 print "%s info" % sys.argv[0];
18 print "%s test" % sys.argv[0];
19 print "%s peek 0x$start [0x$stop]" % sys.argv[0];
20 #print "%s poke 0x$adr 0x$val" % sys.argv[0];
22 print "\n%s sniff" % sys.argv[0];
25 #Initialize FET and set baud rate
26 client=GoodFETMCPCAN();
33 #Might read as all ones if chip has a startup delay.
35 if(sys.argv[1]=="info"):
36 print "MCP2515 Info:";
37 print "Read Status: %02x" % client.MCPreadstatus();
38 print "Rx Status: %02x" % client.MCPrxstatus();
39 print "Tx Errors: %3d" % client.peek8(0x1c);
40 print "Rx Errors: %3d" % client.peek8(0x1d);
42 packet0=client.readrxbuffer(0);
43 packet1=client.readrxbuffer(1);
44 for foo in [packet0, packet1]:
45 print client.packet2str(foo);
46 if(sys.argv[1]=="sniff"):
48 packet=client.rxpacket();
50 print client.packet2str(packet);
51 if(sys.argv[1]=="test"):
52 print "MCP2515 Self Test:";
54 client.poke8(0x00,0xde);
55 if client.peek8(0x00)!=0xde:
56 print "ERROR: Poke to TEC failed.";
58 print "SUCCESS: Register read/write.";
60 if(sys.argv[1]=="peek"):
63 start=int(sys.argv[2],16);
66 stop=int(sys.argv[3],16);
67 print "Peeking from %04x to %04x." % (start,stop);
69 print "%04x: %02x" % (start,client.peek8(start));