自宅でパソコンなどを使っていてトラブった時の対策を記録しておきます。
Linuxディストリビューションのkodiではなくて、https://kodi.tvサイトからダウンロードすれば対応しています。
xfonts-base パッケージをインストールして、X windowを再起動します。
/boot/config.txtファイルを次のように編集します。
diamondコマンドをインストールする
diamondコマンドを使う
programmerを使う
SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="1134", ATTRS{idProduct}=="8001", MODE=="0660", GROUP=="username:x:1000:", SYMLINK+="lattice-%n"
SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", MODE=="0666", GROUP=="username:x:1000:", SYMLINK+="ftdi-%n"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", RUN+="/bin/sh -c 'basename %p > /sys/bus/usb/drivers/ftdi_sio/unbind'"
コンフィグレーションを書き込めるところまで来た…と思う。
Crescentに重要な情報を発見。 MachXO3L Starter Kitは、NVCMという書き込み回数の少ないROMを使っているため、フラッシュROMの感覚で何度も書き換えることができないそう。 何度も書き換える場合は、MachXO3LF Starter Kitを使うべし。 先に言ってよ。
さらに調べてみると、MachXO3L Starter Kitに乗っているFPGAチップにはNVCMを内蔵しているけど、外付けでSPI Flash ROMを搭載。 SPI Flash ROMを何度も書き換えてテストすればよい。
ProgrammerでSPI Flash ROMを書き換えるには、まずSRAMをEraseしてから、SPI Flash ROMに書き込む。 SRAMをEraseするときの設定は、以下。
SPI Flash ROMに書き込むときの設定は、以下。
diamondのVerilog HDLでは、レジスタ線を含むモジュールを1個定義して、同じモジュールを2個以上使うと、うまく働きません。 異なるモジュール間でレジスタ線を勝手に共有してしまいます。
Linux をアップデートすると、プログラマーを起動するときに"drivers were not detected" というエラーが出ることがある。 udev のルールを次のように書き換えるとよい。
SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="1134", ATTRS{idProduct}=="8001", MODE=="0660", GROUP=="username:x:1000:", SYMLINK+="lattice-%n"
SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", MODE=="0666", GROUP=="username:x:1000:", SYMLINK+="ftdi-%n"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", RUN+="/bin/sh -c 'basename %p:1.0 > /sys/bus/usb/drivers/ftdi_sio/unbind'"
2023年9月21日 初出
2024年4月19日 追記