31 lines
912 B
Python
31 lines
912 B
Python
import subprocess
|
|
|
|
from migen.build.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])
|