Jump to content
    

GOWIN 2A ошибка при прожиге

Я работал с платой tang primer 20K и все шло хорошо. Потом вдруг при очередном прожиге возникло вот это

openFPGALoader --unprotect-flash -b tangprimer20k -f my_i2c.fs
write to flash
Jtag frequency : requested 6.00MHz   -> real 6.00MHz  
Parse file Parse my_i2c.fs:
Done
DONE
Jtag frequency : requested 2.50MHz   -> real 2.00MHz  
Jtag frequency : requested 10.00MHz  -> real 6.00MHz  
erase SRAM Done
Detail:
Jedec ID          : ff
memory type       : ff
memory capacity   : ff
EDID + CFD length : ff
EDID              : ffff
CFD               :
Detail:
Jedec ID          : ff
memory type       : ff
memory capacity   : ff
EDID + CFD length : ff
EDID              : ffff
CFD               :
RDSR : ff
WIP  : 1
WEL  : 1
BP   : f
TB   : 1
SRWD : 1
flash chip unknown: use basic protection detection
unlock blocks
timeout: ff ff ff
ff
wait: Error
Error: Failed to program FPGA: Error: write to flash failed

Везде стоит FF и вроде требует разблокировать какие-то блоки. В связи с этим и вопрос. Что вообще это значит? И как снова заставить работать плату? Прошивку платы я делал при помощи openFPGALoader и не было ни каких проблем.

Share this post


Link to post
Share on other sites

Выглядит так, как будто бы флешка вышла из строя и у нее на выходе всегда 1. Если есть осциллограф, то стоит посмотреть, что происходит у неё на входах sclk и mosi, доходят ли до неё сигналы.

Share this post


Link to post
Share on other sites

Но плата определяется вот так. И это так и было

$ openFPGALoader --detect
Jtag frequency : requested 6.00MHz   -> real 6.00MHz  
index 0:
    idcode 0x81b
    manufacturer Gowin
    family GW2A
    model  GW2A(R)-18(C)
    irlength 8

Если бы сгорела, то не определялась бы.

И есть еще вот такой ответ

$ openFPGALoader -b tangprimer20k -f my_i2c.fs
write to flash
Jtag frequency : requested 6.00MHz   -> real 6.00MHz  
Parse file Parse my_i2c.fs:
Done
DONE
Jtag frequency : requested 2.50MHz   -> real 2.00MHz  
Jtag frequency : requested 10.00MHz  -> real 6.00MHz  
erase SRAM Done
Detail:
Jedec ID          : ff
memory type       : ff
memory capacity   : ff
EDID + CFD length : ff
EDID              : ffff
CFD               :
Detail:
Jedec ID          : ff
memory type       : ff
memory capacity   : ff
EDID + CFD length : ff
EDID              : ffff
CFD               :
RDSR : ff
WIP  : 1
WEL  : 1
BP   : f
TB   : 1
SRWD : 1
flash chip unknown: use basic protection detection
unlock blocks
Error: block protection is set
       can't unlock without --unprotect-flash
Error: Failed to program FPGA: Error: write to flash failed

Вот тут пишет, что установлена защита на блок. Хотя я не ставил ни какую защиту.

А если сделать запрос вот так с -v

openFPGALoader -v -b tangprimer20k -f my_i2c.fs

то получаю вот это

openFPGALoader -v -b tangprimer20k -f my_i2c.fs
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 my_i2c.fs:
checksum 0xa31a
Done
DONE
bitstream header infos
CRCCheck: ON
Compress: OFF
ConfDataLength: 1342
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: 40a1
erase SRAM pollFlag: 4081
pollFlag: 4081
pollFlag: 4081
pollFlag: 4081
pollFlag: a1
Done
pollFlag: 421
ff ff ff ff read ffffffff
Detail:
Jedec ID          : ff
memory type       : ff
memory capacity   : ff
EDID + CFD length : ff
EDID              : ffff
CFD               : ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff read ffffffff
Detail:
Jedec ID          : ff
memory type       : ff
memory capacity   : ff
EDID + CFD length : ff
EDID              : ffff
CFD               : ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
RDSR : ff
WIP  : 1
WEL  : 1
BP   : f
TB   : 1
SRWD : 1
RDSR : fc
WIP  : 0
WEL  : 0
BP   : f
TB   : 1
SRWD : 1
flash chip unknown: use basic protection detection
unlock blocks
Error: block protection is set
       can't unlock without --unprotect-flash
Error: Failed to program FPGA: Error: write to flash failed

Вот и что с этим делать? Надо как то разблокировать?  Если в команду добавить параметр --unprotect-flash то все равно ошибка

$ openFPGALoader --unprotect-flash -b tangprimer20k -f my_i2c.fs
write to flash
Jtag frequency : requested 6.00MHz   -> real 6.00MHz  
Parse file Parse my_i2c.fs:
Done
DONE
Jtag frequency : requested 2.50MHz   -> real 2.00MHz  
Jtag frequency : requested 10.00MHz  -> real 6.00MHz  
erase SRAM Done
Detail:
Jedec ID          : ff
memory type       : ff
memory capacity   : ff
EDID + CFD length : ff
EDID              : ffff
CFD               :
Detail:
Jedec ID          : ff
memory type       : ff
memory capacity   : ff
EDID + CFD length : ff
EDID              : ffff
CFD               :
RDSR : ff
WIP  : 1
WEL  : 1
BP   : f
TB   : 1
SRWD : 1
flash chip unknown: use basic protection detection
unlock blocks
timeout: ff ff ff
ff
wait: Error
Error: Failed to program FPGA: Error: write to flash failed

Как её разблокировать?

 

Share this post


Link to post
Share on other sites

2 часа назад, SergeBN сказал:

Если бы сгорела, то не определялась бы.

В процессе программирования участвуют два интерфейса: [программатор] <=JTAG=> [ПЛИС] <=SPI=> [SPI-Flash]. Первый интерфейс (JTAG) у вас очевидно работает, а со вторым похоже есть проблемы. Поэтому я и предложил вам посмотреть, что происходит на контактах SPI-flash при попытке программирования.

Share this post


Link to post
Share on other sites

6 минут назад, Realking сказал:

image.png.46c70ba7beda9d4f86dfd8d211b59624.png

попробуйте Generic Flash выбрать

Мне кажется это не поможет, т.к. не читается даже JEDEC ID (сплошные 0xFF).

Share this post


Link to post
Share on other sites

Если не изменяет память то в мануале дословно сказано: 

Quote

Note that the description is there was a successful Flash burnt one time.

In this case, the default reason is that the wrong Dual-Purpose pin is enabled and the debugger can no longer scan the FPGA's JTAG. You can short pin 1 and pin 4 of Flash, by which the chip cannot read FLASH normally when it is powered on.

Если коротко - если намудрить с выводами двойного назначения, на которых флеш висит то прошить флеш больше не удастся. Замкните 1 и 4 вывод флеша для блокировки загрузки и вы сможете нормально прошить чип.

Источник - Tang Primer 20K - Sipeed Wiki

Share this post


Link to post
Share on other sites

Посмотрел, что там на SPI-flash на контактах. Она как будто вообще не живая. Нет там clk на 6 ноге и на других ничего нет кроме питания.

Edited by SergeBN

Share this post


Link to post
Share on other sites

5 часов назад, DanilinS сказал:

Если коротко - если намудрить с выводами двойного назначения, на которых флеш висит то прошить флеш больше не удастся. Замкните 1 и 4 вывод флеша для блокировки загрузки и вы сможете нормально прошить чип.

Источник - Tang Primer 20K - Sipeed Wiki

Здесь написано, что из-за этого может перестать работать JTAG. Но судя по описанию ТС JTAG как раз работает.

1 час назад, SergeBN сказал:

Посмотрел, что там на SPI-flash на контактах. Она как будто вообще не живая. Нет там clk на 6 ноге и на других ничего нет кроме питания.

Clk нужно смотреть в процессе выполнения попытки программирования.

Share this post


Link to post
Share on other sites

8 hours ago, makc said:

Здесь написано, что из-за этого может перестать работать JTAG. Но судя по описанию ТС JTAG как раз работает.

SPI висит на многофункциональных выводах. По дефолту - это загрузка из SPI. Но в прошивку можно переназначить эти выводы под что-то другое. И тогда "автоматом" через JTAG до SPI будет не достучаться. Исправить это можно не дав чипу загрузить прошивку и соответственно не дав отключить SPI. Замыкаем ноги 1 и 4. Включаем питание. Чип не сможет прошиться и останется чистым. Убираем перемычку не снимая питания и льем по JTAG.

Для начала неплохо осциллографом глянуть сигналы на SPI в момент загрузки/чтения. Если сигналы норм - SPI сдохла. Неплохо ее заменить. Если сигналов нет - что-то с переназначением выводов. Но я-бы для начало попробовал-бы загнать все в состояние "по дефолту". Сдул-бы флеш, очистил в программаторе, поставил на место. Посмотрел-бы на результат. 

Share this post


Link to post
Share on other sites

О замечательно! Насчет ног 1-4 я понял. Но для начала давайте подробнее вот с этого места.

2 часа назад, DanilinS сказал:

Но я-бы для начало попробовал-бы загнать все в состояние "по дефолту". Сдул-бы флеш, очистил в программаторе, поставил на место. Посмотрел-бы на результат. 

Если, можно, пожалуйста по шагам. Я не совсем понимаю терминологию в том плане из каких конкретных действий состоит "Сдул бы флеш ..." и так далее. Что конкретно я должен сделать? Вы уж извините, но я не настолько еще пока образован, чтобы сходу составить план действий, что куда подлючить, какие где параметры выставить, чем прошить, прожечь. Пока у меня работает надежно openFPGALoader. А вот штатный Programmer из комплекта Gowin IDE не работает. Походу на нем все это и произошло.

Share this post


Link to post
Share on other sites

План действий 😃 :

1: Мажем ноги SPI флэша флюсом, берем фен для пайки и отпаиваем W25Q32JVS.

2: Втыкаем отпаянную W25Q32JVS в программатор. Подойдет любой, который может работать с SPI флешками. Стоят они недорого. (например CH341A)

3: Выполняем на программаторе функцию "очистка". Собственно на этом этапе и будет понятно, жива флеш или нет. 

4: Впаиваем чип флеша обратно и пробуем прошить плату через JTAG. 

Или сходи в любой сервис по ремонту. За копеечку ( или пиво) за 5 минут они это все проделают.

Share this post


Link to post
Share on other sites

О, спасибо! Это хороший план. Я так и сделаю. Потом отпишусь здесь.

Share this post


Link to post
Share on other sites

6 часов назад, DanilinS сказал:

План действий 😃 :

Есть и более простой план: замкнуть на выключенной плате ноги 2 (DO) и 4 (GND) на W25Q32JVS чтобы не дать ПЛИС сконфигурироваться, а потом включить питание. После включения убрать перемычку между 2 и 4, после чего попробовать прошить.

Share this post


Link to post
Share on other sites

Лучше замыкать 1 и 4 ногу. Садить выход на землю - не особо хорошая идея. 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...