概要
FPGAの勉強中に書き込みが出来なくなってしまい、対処方法がなかなか見つからず苦労したので共有。
※FPGA初学者のため間違いや自明なことを書いてしまうかもしれません。ご容赦ください。
※十分な回数検証したものでは無いので行き詰った時の参考程度にご覧ください。
環境
対象機種 | Tang Primer 25K kit (Sipeed社) |
開発PC OS | Windows 11 Pro |
開発PC CPU | Intel Core i7-12700H |
USBケーブル | 付属ケーブル |
不具合現象
SPI flashにプログラムを一度書き込んだあと、
Gowin Programmerで書き込みしようとしたところ、
「Device not found」のエラーが発生。
(スクショ撮り損ねました。。。)
openFPGALoaderでも試みるも、
「JTAG init failed with: TDO is stuck at 0」のエラーが発生。
推定原因
JTAGがGPIOピンとしてセットされてしまったこと。
「Use JTAG as regular IO」にチェックを入れてしまっていたことが原因と考えています。
対処手順
- 電源を接続
- RECONFIG_NとGNDを接続
- openFPGALoaderでSRAMに書き込み
$ openFPGALoader -b arty <FS File>
- openFPGALoaderでflashに書き込み
$ openFPGALoader -f -b arty <FS File>
本来arty
ではなくtangprimer25k
で実行するべきだったと思いますが、間違えて実行してしまったところ、書き込めてしまったのでそのまま記述しています。
私の環境では先にSRAMへの書き込もうとしたところ、エラーになってしまったため、一度「Use JTAG as regular IO」のチェックを外したデータをSRAMに書き込んでからflashへ書き込みました。いきなりflashへも書き込めるかもしれません。
雑記
- 手順2の後、Gowin Programmerで書き込もうとしたところ、SRAMは書けたがflashは書けず。
- openFPGALoaderはMSYS2で使用。
- Gowin ProgrammerはFTDI、openFPGALoaderはWinUSBと、ドライバを切り替える必要があります。私はZadigを使用。
参考
-
redditのFlaky_Ambition3989様の書き込みに救われました。リンクは貼れないので検索してみてください。スレッドタイトルはTang Nanoですがページ後半に該当の投稿があります。
-
MSYS2
- openFPGALoader
- FTDIドライバー
- Zadig