X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=client%2Fgoodfet.mcpcan;fp=client%2Fgoodfet.mcpcan;h=35fc1d4c4675eb1c6a154cd2ce46cb63cf18c233;hp=0000000000000000000000000000000000000000;hb=43f50970e78843e02cfa981005165ef0b64381a0;hpb=d116d8de78feaf5c7a8bb0260c15543298e3d5d2 diff --git a/client/goodfet.mcpcan b/client/goodfet.mcpcan new file mode 100755 index 0000000..35fc1d4 --- /dev/null +++ b/client/goodfet.mcpcan @@ -0,0 +1,70 @@ +#!/usr/bin/env python +# GoodFET SPI Flash Client +# +# (C) 2012 Travis Goodspeed +# +# This code is being rewritten and refactored. You've been warned! + +import sys; +import binascii; +import array; + +from GoodFETMCPCAN import GoodFETMCPCAN; +from intelhex import IntelHex; + +if(len(sys.argv)==1): + print "Usage: %s verb [objects]\n" % sys.argv[0]; + print "%s info" % sys.argv[0]; + print "%s test" % sys.argv[0]; + print "%s peek 0x$start [0x$stop]" % sys.argv[0]; + #print "%s poke 0x$adr 0x$val" % sys.argv[0]; + + print "\n%s sniff" % sys.argv[0]; + sys.exit(); + +#Initialize FET and set baud rate +client=GoodFETMCPCAN(); +client.serInit() + + +client.MCPsetup(); + +#Dummy read. +#Might read as all ones if chip has a startup delay. + +if(sys.argv[1]=="info"): + print "MCP2515 Info:"; + print "Read Status: %02x" % client.MCPreadstatus(); + print "Rx Status: %02x" % client.MCPrxstatus(); + print "Tx Errors: %3d" % client.peek8(0x1c); + print "Rx Errors: %3d" % client.peek8(0x1d); + print "RX Buffers:" + packet0=client.readrxbuffer(0); + packet1=client.readrxbuffer(1); + for foo in [packet0, packet1]: + print client.packet2str(foo); +if(sys.argv[1]=="sniff"): + while 1: + packet=client.rxpacket(); + if packet!=None: + print client.packet2str(packet); +if(sys.argv[1]=="test"): + print "MCP2515 Self Test:"; + + client.poke8(0x00,0xde); + if client.peek8(0x00)!=0xde: + print "ERROR: Poke to TEC failed."; + else: + print "SUCCESS: Register read/write."; + +if(sys.argv[1]=="peek"): + start=0x0000; + if(len(sys.argv)>2): + start=int(sys.argv[2],16); + stop=start; + if(len(sys.argv)>3): + stop=int(sys.argv[3],16); + print "Peeking from %04x to %04x." % (start,stop); + while start<=stop: + print "%04x: %02x" % (start,client.peek8(start)); + start=start+1;