SergeBN 0 23 ноября, 2022 Опубликовано 23 ноября, 2022 · Жалоба Я работал с платой 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 и не было ни каких проблем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 195 24 ноября, 2022 Опубликовано 24 ноября, 2022 · Жалоба Выглядит так, как будто бы флешка вышла из строя и у нее на выходе всегда 1. Если есть осциллограф, то стоит посмотреть, что происходит у неё на входах sclk и mosi, доходят ли до неё сигналы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SergeBN 0 24 ноября, 2022 Опубликовано 24 ноября, 2022 · Жалоба Но плата определяется вот так. И это так и было $ 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 Как её разблокировать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 195 24 ноября, 2022 Опубликовано 24 ноября, 2022 · Жалоба 2 часа назад, SergeBN сказал: Если бы сгорела, то не определялась бы. В процессе программирования участвуют два интерфейса: [программатор] <=JTAG=> [ПЛИС] <=SPI=> [SPI-Flash]. Первый интерфейс (JTAG) у вас очевидно работает, а со вторым похоже есть проблемы. Поэтому я и предложил вам посмотреть, что происходит на контактах SPI-flash при попытке программирования. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Realking 0 24 ноября, 2022 Опубликовано 24 ноября, 2022 · Жалоба попробуйте Generic Flash выбрать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 195 24 ноября, 2022 Опубликовано 24 ноября, 2022 · Жалоба 6 минут назад, Realking сказал: попробуйте Generic Flash выбрать Мне кажется это не поможет, т.к. не читается даже JEDEC ID (сплошные 0xFF). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DanilinS 4 24 ноября, 2022 Опубликовано 24 ноября, 2022 · Жалоба Если не изменяет память то в мануале дословно сказано: 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SergeBN 0 24 ноября, 2022 Опубликовано 24 ноября, 2022 (изменено) · Жалоба Посмотрел, что там на SPI-flash на контактах. Она как будто вообще не живая. Нет там clk на 6 ноге и на других ничего нет кроме питания. Изменено 24 ноября, 2022 пользователем SergeBN Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 195 24 ноября, 2022 Опубликовано 24 ноября, 2022 · Жалоба 5 часов назад, DanilinS сказал: Если коротко - если намудрить с выводами двойного назначения, на которых флеш висит то прошить флеш больше не удастся. Замкните 1 и 4 вывод флеша для блокировки загрузки и вы сможете нормально прошить чип. Источник - Tang Primer 20K - Sipeed Wiki. Здесь написано, что из-за этого может перестать работать JTAG. Но судя по описанию ТС JTAG как раз работает. 1 час назад, SergeBN сказал: Посмотрел, что там на SPI-flash на контактах. Она как будто вообще не живая. Нет там clk на 6 ноге и на других ничего нет кроме питания. Clk нужно смотреть в процессе выполнения попытки программирования. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DanilinS 4 25 ноября, 2022 Опубликовано 25 ноября, 2022 · Жалоба 8 hours ago, makc said: Здесь написано, что из-за этого может перестать работать JTAG. Но судя по описанию ТС JTAG как раз работает. SPI висит на многофункциональных выводах. По дефолту - это загрузка из SPI. Но в прошивку можно переназначить эти выводы под что-то другое. И тогда "автоматом" через JTAG до SPI будет не достучаться. Исправить это можно не дав чипу загрузить прошивку и соответственно не дав отключить SPI. Замыкаем ноги 1 и 4. Включаем питание. Чип не сможет прошиться и останется чистым. Убираем перемычку не снимая питания и льем по JTAG. Для начала неплохо осциллографом глянуть сигналы на SPI в момент загрузки/чтения. Если сигналы норм - SPI сдохла. Неплохо ее заменить. Если сигналов нет - что-то с переназначением выводов. Но я-бы для начало попробовал-бы загнать все в состояние "по дефолту". Сдул-бы флеш, очистил в программаторе, поставил на место. Посмотрел-бы на результат. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SergeBN 0 25 ноября, 2022 Опубликовано 25 ноября, 2022 · Жалоба О замечательно! Насчет ног 1-4 я понял. Но для начала давайте подробнее вот с этого места. 2 часа назад, DanilinS сказал: Но я-бы для начало попробовал-бы загнать все в состояние "по дефолту". Сдул-бы флеш, очистил в программаторе, поставил на место. Посмотрел-бы на результат. Если, можно, пожалуйста по шагам. Я не совсем понимаю терминологию в том плане из каких конкретных действий состоит "Сдул бы флеш ..." и так далее. Что конкретно я должен сделать? Вы уж извините, но я не настолько еще пока образован, чтобы сходу составить план действий, что куда подлючить, какие где параметры выставить, чем прошить, прожечь. Пока у меня работает надежно openFPGALoader. А вот штатный Programmer из комплекта Gowin IDE не работает. Походу на нем все это и произошло. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DanilinS 4 25 ноября, 2022 Опубликовано 25 ноября, 2022 · Жалоба План действий 😃 : 1: Мажем ноги SPI флэша флюсом, берем фен для пайки и отпаиваем W25Q32JVS. 2: Втыкаем отпаянную W25Q32JVS в программатор. Подойдет любой, который может работать с SPI флешками. Стоят они недорого. (например CH341A) 3: Выполняем на программаторе функцию "очистка". Собственно на этом этапе и будет понятно, жива флеш или нет. 4: Впаиваем чип флеша обратно и пробуем прошить плату через JTAG. Или сходи в любой сервис по ремонту. За копеечку ( или пиво) за 5 минут они это все проделают. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SergeBN 0 25 ноября, 2022 Опубликовано 25 ноября, 2022 · Жалоба О, спасибо! Это хороший план. Я так и сделаю. Потом отпишусь здесь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 195 25 ноября, 2022 Опубликовано 25 ноября, 2022 · Жалоба 6 часов назад, DanilinS сказал: План действий 😃 : Есть и более простой план: замкнуть на выключенной плате ноги 2 (DO) и 4 (GND) на W25Q32JVS чтобы не дать ПЛИС сконфигурироваться, а потом включить питание. После включения убрать перемычку между 2 и 4, после чего попробовать прошить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DanilinS 4 26 ноября, 2022 Опубликовано 26 ноября, 2022 · Жалоба Лучше замыкать 1 и 4 ногу. Садить выход на землю - не особо хорошая идея. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться