Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: whitequark/glasgow
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 06e012599eca
Choose a base ref
...
head repository: whitequark/glasgow
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 08169d49b9d9
Choose a head ref
  • 1 commit
  • 1 file changed
  • 1 contributor

Commits on Nov 25, 2018

  1. applet.jtag_xc9500: running commands requires going via Update-IR/DR.

    The JTAG applet has been fixed to take a minimal path through
    the JTAG state machine, which unfortunately broke a few downstream
    applets.
    whitequark committed Nov 25, 2018
    Copy the full SHA
    08169d4 View commit details
Showing with 7 additions and 1 deletion.
  1. +7 −1 software/glasgow/applet/jtag_xc9500/__init__.py
8 changes: 7 additions & 1 deletion software/glasgow/applet/jtag_xc9500/__init__.py
Original file line number Diff line number Diff line change
@@ -275,10 +275,12 @@ async def read_usercode(self):
async def programming_enable(self):
self._log("programming enable")
await self.lower.write_ir(IR_ISPEN)
await self.lower.run_test_idle(1)

async def programming_disable(self):
self._log("programming disable")
await self.lower.write_ir(IR_ISPEX)
await self.lower.run_test_idle(1)

async def _fvfy(self, address, count):
await self.lower.write_ir(IR_FVFY)
@@ -306,6 +308,8 @@ async def _fvfyi(self, count):
words = []
index = 0
while index < count:
await self.lower.run_test_idle(1)

isdata_bits = await self.lower.read_dr(34)
isdata = DR_ISDATA.from_bitarray(isdata_bits)
if isdata.valid:
@@ -351,7 +355,9 @@ async def _fpgm(self, address, words):
isconf = DR_ISCONFIGURATION(valid=1, strobe=strobe, address=dev_address, data=word)
await self.lower.write_dr(isconf.to_bitarray()[:50])

if strobe:
if not strobe:
await self.lower.run_test_idle(1)
else:
await self.lower.run_test_idle(20_000)

isconf = DR_ISCONFIGURATION(address=dev_address)