openFPGALoader and dirtyJtag

RP2040 firmware implements dirtyJtag protocol and may be used with openFPGALoader to configure FPGA and program configuration SPI NOR on the module.

Set FPGA Configuration Mode to JTAG

picocom -q -b 115200 /dev/ttyACM1


GMM-7550 Control CLI

Version    : 0.8.3
Git hash   : 641a52c9a9bc8b57c1e6805055b0ecd6225f0566
Build time : 2026-03-17 17:37:47

> on

> cfg c
Configuration mode is c

Verify Access to the FPGA

Check USB-to-JTAG adapter is present.

$ openFPGALoader --scan-usb
empty
Bus device vid:pid       probe_type manufacturer     serial           product
001 058    0x1209:0xc0ca dirtyJtag  GMM-7550 Project FFFFFFFFFFFFFFFF USB3 Adapter Board

Check a scan chain and identify connected device

$ openFPGALoader --cable dirtyJtag --detect --freq 15000000
empty
Jtag frequency : requested 15000000Hz -> real 15000000Hz
index 0:
	idcode 0x20000001
	manufacturer colognechip
	family GateMate Series
	model  GM1Ax
	irlength 6

Configure FPGA

$ openFPGALoader --cable dirtyJtag --freq 15000000 --bitstream gmm7550_standard_2026-03-07.bit
empty
Jtag frequency : requested 15000000Hz -> real 15000000Hz
Load SRAM via JTAG: [==================================================] 100.00%
Done

Program Configuration SPI NOR

$ openFPGALoader --cable dirtyJtag --freq 15000000 -f gmm7550_standard_2026-03-07.bit
empty
write to flash
Jtag frequency : requested 15000000Hz -> real 15000000Hz
JEDEC ID: 0x9d6016
Detected: ISSI IS25LP032 64 sectors size: 32Mb
00000000 00000000 00000000 00
start addr: 00000000, end_addr: 000a0000
Erasing: [==================================================] 100.00%
Done
Writing: [==================================================] 100.00%
Done