Implementing JTAGSPI in the NEORV32 JTAG TAP

FPGAs and microcontrollers often need to store some sort of configuration on SPI flash. Whereas we could always use external programmers or code or bitstreams to access the flash, various products have come up with a more clever solution: JTAGSPI. JTAGSPI tunnels SPI over JTAG, so that we can program our SPI flash using a basic JTAG programmer. Let’s see how to implement an OpenOCD compatible JTAGSPI solution in our JTAG TAPs. ...

June 11, 2025 · 10 min · Johannes Pfau

Debugging NEORV32 Applications on the Tang Nano

The Tang Nano 20K board programs the Gowin FPGA using the JTAG protocol. Reusing that JTAG connection for our applications means we don’t need an external JTAG probe for software debugging using NEORV32’s On-Chip-Debugger. ...

March 9, 2025 · 5 min · Johannes Pfau

SPI Flash Write Protect Signals and NEORV32

NEORV32 does not have any dedicated output pin for the SPI flash write protect signal. On boards like the Tang Nano 20K, not driving this pin however means we can’t write to SPI flash. This breaks the upload firmware function in the bootloader, so here’s how to fix this. ...

March 8, 2025 · 2 min · Johannes Pfau