※ Vivado2022.2からWindows11がサポートされたので、現在ではわざわざwslを使う必要はあまりないと思います。
windows11にVivadoが対応していなくて、ちょうどよいことにwslgがあるからwsl2にVivadoをインストールしたということがあった(ここに書いてます)。ただこれだとUSBポート等の設定が一切されていなくて、合成まではできても実際のFPGAボードが使えないという悲しいことになるので、ここを何とかする方法をまとめる。
環境
- Ubuntu 20.04.4 LTS
- Vivado 2021.2 (64-bit)
- standard edition
Vivado本体のインストールまではすんだものとする。
概略
- wsl2でホストPCのUSBポートを使えるようにするものをインストールする
- vivadoのcable driverをインストールする
- 実際に通信するときに(root権限で)Vivadoをおこし、Windows側でUSBポートをWSLに渡す操作をする
これをすることになる。まず準備として上2つを済ませる。
wslからUSBポートを使う準備
Windows11で、wslにUSBデバイスをつなぐ方法を作っている人がいる。
ここに開発者の方の書かれた記事としてあって、こっちには公式からも同じ内容ででている(がんばればWindows10でもできないことはないらしい、10なら素直にWindows版Vivadoでいいやとなりそうだけど)。
手順の抜粋
1. Windows側でusbipd-win
をインストールする
最新版をインストールしなさいとのこと(.msiのインストーラ)。
2. WSL側でusbipクライアントをインストールする
Ubuntuなら
sudo apt install linux-tools-5.4.0-77-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/5.4.0-77-generic/usbip 20
だそう。
vivadoのケーブルドライバーをインストールする
windowsでもともとVivadoを使っていると初見となるはず。
ここにある通り、
<Vivado Install>/data/xicom/cable_drivers/lin64/install_script/install_drivers/
の中にあるinstall_drivers
を実行する。<Vivado Install>
にはVivadoをインストールしてある場所が入るが、インストーラのデフォルトだとおそらく/tools/Xilinx/Vivado/2021.2/
になっている。
準備はおしまい。(一度インストール後にWSLの再起動がいる?)
いざ通信
udevをいじればrootでなくてもよくできるらしいが、そのままだとWSLのusbipクライアントの都合でrootしかUSBポートが使えない場合がある、とのこと。実際Vivadoはそうだった模様。ということで、もしそれでもよければ、
- PC本体のUSBポートにFPGAボードをつなぐ
- Windows側(Powershell)で
usbipd wsl attach --busid <busid>
- root権限でVivadoを起こし、Hardware Managerを開いてAuto Connectする
で、無事使えるようになるはず。
2.の<busid>
は、上の準備が全部終わってボードもUSBケーブルでつないだ後にWindows側でusbipd wsl list
をすると表示されるUSBポートのうち、FPGAと通信するもののBUSID
。デバイスの一覧がそのIDといっしょに表示されて、その中にUSB Serial Converter
みたいな名前があるのでおそらくすぐにわかる。
以上です。