mibuild/openocd.py: add support
authorRobert Jordens <jordens@gmail.com>
Fri, 3 Jul 2015 04:04:04 +0000 (22:04 -0600)
committerRobert Jordens <jordens@gmail.com>
Wed, 8 Jul 2015 03:01:31 +0000 (21:01 -0600)
Tested with pipistrello and kc705. Needs patches from
https://github.com/jordens/openocd/tree/bscan_spi waiting
to be merged in the openocd queue.

mibuild/openocd.py [new file with mode: 0644]

diff --git a/mibuild/openocd.py b/mibuild/openocd.py
new file mode 100644 (file)
index 0000000..47e51c7
--- /dev/null
@@ -0,0 +1,30 @@
+import subprocess
+
+from mibuild.generic_programmer import GenericProgrammer
+
+
+class OpenOCD(GenericProgrammer):
+    needs_bitreverse = False
+
+    def __init__(self, config, flash_proxy_basename=None):
+        GenericProgrammer.__init__(self, flash_proxy_basename)
+        self.config = config
+
+    def load_bitstream(self, bitstream):
+        script = "; ".join([
+            "init",
+            "pld load 0 {}".format(bitstream),
+            "exit",
+        ])
+        subprocess.call(["openocd", "-f", self.config, "-c", script])
+
+    def flash(self, address, data):
+        flash_proxy = self.find_flash_proxy()
+        script = "; ".join([
+            "init",
+            "jtagspi_init 0 {}".format(flash_proxy),
+            "jtagspi_program {} 0x{:x}".format(data, address),
+            "fpga_program",
+            "exit"
+        ])
+        subprocess.call(["openocd", "-f", self.config, "-c", script])