X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=client%2Fgoodfet.spiflash;h=a04ed19f4bbc888c2951b3e260f0c0e8d7b8f050;hp=5c73eda163d628d7ff377c0ecc9a1d21ec367104;hb=d0d48d9cdb77bee064236d148002f98f3c247121;hpb=f13d84c954960084c69440ad035e68b6017572dc diff --git a/client/goodfet.spiflash b/client/goodfet.spiflash index 5c73eda..a04ed19 100755 --- a/client/goodfet.spiflash +++ b/client/goodfet.spiflash @@ -8,6 +8,7 @@ import sys; import binascii; +import array; from GoodFET import GoodFET; from intelhex import IntelHex; @@ -65,8 +66,6 @@ if(sys.argv[1]=="dump"): if(len(sys.argv)>4): stop=int(sys.argv[4],16); - - print "Dumping code from %06x to %06x as %s." % (start,stop,f); file = open(f, mode='wb') @@ -81,6 +80,29 @@ if(sys.argv[1]=="dump"): file.write(j); i+=1; file.close() +if(sys.argv[1]=="flash"): + f = sys.argv[2]; + start=0x0000; + stop=0x100000; #TODO, adjust this by the JEDEC size parameter. + if(len(sys.argv)>3): + start=int(sys.argv[3],16); + if(len(sys.argv)>4): + stop=int(sys.argv[4],16); + + print "Flashing code from %06x to %06x with %s." % (start,stop,f); + file = open(f, mode='rb') + + i=start; + bytes=file.read(); + while i<=stop: + client.SPIpokebyte(i,ord(bytes[i])); + + i+=1; + if(i%0x100==0): + print "Flashed %06x."%i; + file.close() + + if(sys.argv[1]=="erase"): client.SPIchiperase(); @@ -104,6 +126,8 @@ if(sys.argv[1]=="poke"): if(len(sys.argv)>3): val=int(sys.argv[3],16); print "Poking %06x to become %02x." % (start,val); - client.SPIpokebyte(start,val); - + + while client.SPIpeek(start)!=val: + client.SPIpokebyte(start,val); + print "Poked to %02x" % client.SPIpeek(start);