]> sigrok.org Git - sigrok-firmware-fx2lafw.git/blobdiff - fx2lib/examples/fx2/fx2load/__init__.py
Import fx2lib into fx2lafw directly.
[sigrok-firmware-fx2lafw.git] / fx2lib / examples / fx2 / fx2load / __init__.py
diff --git a/fx2lib/examples/fx2/fx2load/__init__.py b/fx2lib/examples/fx2/fx2load/__init__.py
new file mode 100644 (file)
index 0000000..12465ec
--- /dev/null
@@ -0,0 +1,59 @@
+# Copyright (C) 2009 Ubixum, Inc. 
+#
+# This library is free software; you can redistribute it and/or
+#
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+# 
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+# 
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+from time import sleep
+from fx2 import fx2
+
+f=fx2.fx2()
+
+# use this functions 1st
+
+def openfx2(vid=0x04b4,pid=0x0082,idx=0):
+    f.open(vid,pid,idx)
+
+def reset_device(reset):
+ print reset and "Put device in reset" or "Set device to run"
+ write_ram (0xe600,reset and '\x01' or '\x00', 1)
+def write_ram(addr,data,length):
+ transferred=0
+ while(transferred<length):
+  this_transfer_size=length-transferred>1024 and 1024 or length-transferred
+  buf=data[transferred:]
+  ret=f.do_usb_command( buf,
+    0x40,
+    0xa0,
+    addr+transferred, 0,
+    this_transfer_size )
+  if (ret>0):
+   print "wrote %d bytes" % ret
+   transferred+=ret
+  else:
+   print "Error: %d" % ret
+   return
+
+def reset_bix(filename):
+ """
+  Use this function to reset your firmware.  You'll need to reopen the device afterward.
+ """
+ reset_device(True)
+ bix=open(filename).read()
+ print "loading bix file of length: %d" % len(bix) 
+ write_ram( 0, bix,len(bix) );
+ reset_device(False)
+ f.close()
+