openFPGALoader: tangprimer20k flash failure with "Error: ftdi_read_data in mpsse_read". When programming into SRAM is stuck on "pollFlag: a1"

Hello. Just got my new Tang Primer 20K, verified it is working with Gowin programmer on windows. Unfortunately with openFpgaLoader I am facing an issue consistently. The flashing is stopping at ~48% and then it starts showing an error: “Error: ftdi_read_data in mpsse_read” indefinitely. After the process is interrupted, the board is in some bad state and any subsequent attempts to program it fail even earlier, and in order to recover I need to use the Gowin programmer. I am using the build from commit b1c843acdb549c17c15525df649e02f88960d06b Here is the dump from the session:

write to flash
Jtag frequency : requested 6.00MHz   -> real 6.00MHz  
found 1 devices
index 0:
	idcode 0x81b
	manufacturer Gowin
	family GW2A
	model  GW2A(R)-18(C)
	irlength 8
File type : fs
Parse file Parse /redacted/TangPrimer-20K-example/DDR-test/LicheeTang20K_DDR_Test/impl/pnr/ddr3_ref_design.fs: 
checksum 0xaf49
Done
DONE
bitstream header infos
CRCCheck: ON
Compress: OFF
ConfDataLength: 2110
ProgramDoneBypass: OFF
SPIAddr: 00000000
SecurityBit: ON
idcode: 0000081b
loading_rate: 0
Jtag frequency : requested 2.50MHz   -> real 2.00MHz  
Jtag frequency : requested 10.00MHz  -> real 6.00MHz  
pollFlag: 60a0
erase SRAM pollFlag: 4080
pollFlag: 4080
pollFlag: 4080
pollFlag: a0
Done
pollFlag: 20
b 40 16 b read b40160b
Detail: 
Jedec ID          : 0b
memory type       : 40
memory capacity   : 16
EDID + CFD length : 0b
EDID              : 1640
CFD               : 0f 40 16 0b 40 12 0b 60 16 
9 40 6 b read 940060b
Detail: 
Jedec ID          : 0b
memory type       : 40
memory capacity   : 16
EDID + CFD length : 09
EDID              : 0640
CFD               : 0b 00 16 0b 40 16 0b 40 16 
RDSR : 00
WIP  : 0
WEL  : 0
BP   : 0
TB   : 0
SRWD : 0
RDSR : 00
WIP  : 0
WEL  : 0
BP   : 0
TB   : 0
SRWD : 0
flash chip unknown: use basic protection detection
Erasing: [==================================================] 100.00%
Done
Writing: [=======================                           ] 45.51%Error: ftdi_Writing: [=========================                         ] 48.83%Error: ftdi_read_data in mpsse_readError: ftdi_read_data in mpsse_readError: ftdi_read_data in mpsse_readError: ftdi_read_data in mpsse_readError: ftdi_read_data in mpsse_readError: ftdi_read_data in mpsse_readError: ftdi_read_data in mpsse_readError: ftdi_read_data in mpsse_readError: ftdi_read_data in mpsse_readError: ftdi_read_data in mpsse_readError: ftdi_read_data in mpsse_readError: ftdi_read_data in mpsse_readError: ftdi_read_data in mpsse_readError: ftdi_read_data in mpsse_readError: ftdi_read_data in mpsse_read^C

When trying to program into SRAM instead, it will get stuck at about 76% with infinite “pollFlag: a1” message. This happens most of the time, but I got it successfully programmed once or twice:

write to ram
Jtag frequency : requested 6.00MHz   -> real 6.00MHz  
found 1 devices
index 0:
	idcode 0x81b
	manufacturer Gowin
	family GW2A
	model  GW2A(R)-18(C)
	irlength 8
File type : fs
Parse file Parse /redacted/TangPrimer-20K-example/DDR-test/LicheeTang20K_DDR_Test/impl/pnr/ddr3_ref_design.fs: 
checksum 0xaf49
Done
DONE
bitstream header infos
CRCCheck: ON
Compress: OFF
ConfDataLength: 2110
ProgramDoneBypass: OFF
SPIAddr: 00000000
SecurityBit: ON
idcode: 0000081b
loading_rate: 0
Jtag frequency : requested 2.50MHz   -> real 2.00MHz  
displayReadReg 00000421
	CRC Error
	Memory Erase
	Non-jtag is active
pollFlag: a1
erase SRAM pollFlag: 81
pollFlag: 81
pollFlag: 81
pollFlag: 81
pollFlag: a1
Done
pollFlag: 421
pollFlag: a1
Flash SRAM: [=======================================           ] 76.85%pollFlag: a1
pollFlag: a1
pollFlag: a1
pollFlag: a1
pollFlag: a1
pollFlag: a1
pollFlag: a1
pollFlag: a1
pollFlag: a1
pollFlag: a1
....

About this issue

  • Original URL
  • State: open
  • Created a year ago
  • Comments: 16 (7 by maintainers)

Most upvoted comments

I can reproduce this issue. Program to SRAM works most of the times, getting stuck at 76% in some occasions. Program to external FLASH, fails consistently stuck at 46%. Giving error Error: ftdi_read_data in mpsse_read in both cases.

Can be reproduced with this bitstream on the Sipeed Tang 20K https://github.com/sipeed/TangPrimer-20K-example/tree/main/DDR-test/LicheeTang20K_DDR_Test