KV260/KR260の初期セットアップ
はじめに
本記事では KV260 や KR260 を初めて買ってきた人で、まず Ubuntu を起動してみようという人を中心に、セットアップの一例を紹介するものです。
過去に下記のような入門記事を幾つか書いていますが、その前提となる初期設定の説明があまり十分ではなかったので、補足的な記事になればと思います。
ボードの説明
共通する話
KV260 も KR260 も電源スイッチというものがありません。したがって電源アダプタの抜き差しでそれを行う事になります。
一方で、アダプタを差し込むと早速起動が始まってしまうので、
- 周辺ケーブルやSDカードなど必要なものを接続してから電源を挿す
- Linux の シャットダウンなどを行ってから電源を抜く
というのが基本になってきますので最初に覚えておいてください。
(なお、SDカードを挿さずに電源を入れて USB経由で接続して使うという場合もあります。)
またどちらのボードも使い方として
- ヘッドレスPCのようにして、別の PC を母艦として使う
- ディスプレイやキーボード/マウスなどを接続して KV260 や KR260 を Ubuntu マシンとして使う
の2種類の使い方が出来ます。
前者の場合は PC と USBケーブルで接続する事が必要となり、後者の場合は ディスプレイやキーボードマウスの接続が必須となります。
また両者において LAN ケーブルの接続は必須となります。どちらも WiFi は備えていないので有線LANを用意しましょう(きちんと設定すれば USBのWiFi アダプタも利用可能だとは思います)。
以降の説明は、有線LANで、自宅のインターネットルーターなどに繋がっており、PC と同じサブネットにボードがある前提で説明を行います。
KV260について
KV260の接続は下記のようになっています。特に悩む点は無いでしょう。
KR260について
KR260の接続は下記のようになっています。
注意点は
- 有線LAN は4つあるポートの右側を使う必要がある
- DisplayPort のモニタを持っていない場合は、アクティブタイプの DP-HDMI変換器が必要
という点です。
なお、DP-HDMI変換器とは下記のようなものです。
似た見た目で、パッシブタイプとアクティブタイプがあるので必ずアクティブタイプを用意してください。
Ubuntu 22.04 イメージのダウンロード
SDカードを読み書きできるカードリーダーを用意しておいてください。
Kria KV260/KR260 の Ubuntu のイメージは下記からダウンロードすることが出来ます。
当方がダウンロードした段階では iot-limerick-kria-classic-desktop-2204-20240304-165.img.xz でした。
イメージの展開とSDカードへの書き込み
PC が Windows の場合
まずブラウザなどからイメージをダウンロードしてきます。
次に 7zipなどのソフトウェアを使ってファイルを展開して iot-limerick-kria-classic-desktop-2204-20240304-165.img
を得ます。
これを SD カードに書き込むには Win32 Disk Imager や balena を利用します。
なお、Win32 Disk Imager は Google Drive と相性問題があるそうですので、併用する場合はご注意ください。対策版もあるそうです。
PC が Ubuntu の場合
ブラウザなどからイメージをダウンロードし、ターミナルを開いてダウンロードしたディレクトリに移動して、イメージを展開します。
cd ~/Downloads/
unxz iot-limerick-kria-classic-desktop-2204-20240304-165.img.xz
展開すると iot-limerick-kria-classic-desktop-2204-20240304-165.img
が得られますのでこれを SD カードに書き込むのですが、例えば Ubuntu の場合、USB の カードリーダーなどで SDカードを取り付けると自動的にマウントされてしまう為、一度アンマウントする必要があります。
デバイスの探し方の1つとして
lsblk
と打ち込む方法があります。今回、16Gバイトの新品の状態(FATでフォーマット済み)のSDカードで試したものが下記です。
(なお、説明の為手元に余っていた16Gで実験していますが、実際の運用には 32Gや64Gなどの大容量のSDカードをお勧めします)。
サイズや /media/ユーザー名 の下に自動マウントされる点などから、デバイス名が sdc で マウントされているパーティーションが sdc1 であることが分かります。
sudo umount /dev/sdc1
としてパーティーションを指定して、アンマウントします。
続けて
sudo dd if=iot-limerick-kria-classic-desktop-2204-20240304-165.img of=/dev/sdc bs=4M status=progress
sync
のようにすれば SDカードに書き込みが行えます。
sync を実行して確実に書き込んでおきましょう。
最後にイジェクトして安全にSDを取り出します。
sudo eject /dev/sdc
USB 経由のシリアル接続とボードの起動
PC が Windows の場合
Windows の場合 TeraTerm を利用するのが便利です。
KV260などにUSBを接続すると COMポートとして認識されます。デバイスマネージャなどを見てUSBを挿した時に新たに表れるCOM番号を確認してください。
増えた COM ポートのうちの1つが、Linux 起動時のコンソールとなるので、初回のみ幾つか開いて調べてください。
TeraTerm を起動して、目的のポートを選んで 115200bps 8bit noneパリティ に設定してください。
ここでボードの電源を入れると下記のようにログインプロンプトが出てきます。
PC が Ubuntu の場合
Ubuntu の場合、USBケーブルを接続すると、/dev/USBx
のようなデバイスが4つ現れます。
増えた ttyUSB のうちの1つが、Linux 起動時のコンソールとなります。
ここでは gtkterm を使う事にします。
下記のようにインストールし
sudo apt update
sudo apt install gtkterm
下記のように起動できます。
gtkterm --port /dev/ttyUSB1
初回ログイン
初期は
- カウント名:ubuntu
- パスワード: ubuntu
となっているようです。これでログインしようとすると新しいパスワードを設定するように促されますので新しいパスワードを設定してください。
ログインは GUI から行う事も、COMポート経由で CLI で行うことも出来ます。
この段階でいろいろな事が出来るようになります。
作業用のユーザーを新規に作っても良いかもしれません。
Kria KV260 環境構築メモ(Ubuntu22.04 版) などの記事が参考になれば幸いです。
また、KV260 と KR260 などを複数枚使う場合は、ホスト名などもボード毎にユニークな名前を付けておくと良いかもしれません。
電源の切り方
GUI からであれば電源を切るのは容易です。CLIの場合は
sudo poweroff
とすることで、電源を落とすことが出来ます。
COMポートに Power down の文字が出るのを待って電源を引き抜きましょう。
PCからの ssh 接続
ボード側の IP アドレスの確認
ボードを起動してログインした後に、コンソールから
ip address
のように打ち込めばIPアドレスなどの情報が確認できます。
有線LANが正しく接続されて入れば DHCP などで IP アドレスが取得出来ているはずなので、IPアドレスをメモしてください。
パスワードでの接続
PC Ubuntu の場合は ターミナルを開き(bash)、Windows の場合は PowerShell から作業します。
下記のようにすると KV260 や KR260 にPCからログインできます。
ssh -l ubuntu XX.XX.XX.XX
XX.XX.XX.XX の部分は上で調べたボードの IP アドレスを入力してください。
また ubuntu の部分はユーザーを新しく作った場合はそちらの名前を使ってください。
authorized_key での接続
ますパスワードで ssh 出来る状態にします。
PC が Windows の場合
PC 側でまだ、認証鍵を生成してない場合は PowerShell から
ssh-keygen -t rsa -b 4096
として生成します。
公開鍵をコピーします。
scp $env:USERPROFILE\.ssh\id_rsa.pub ubuntu@XX.XX.XX.XX:/tmp/id_rsa.pub
ボードにログインします
ssh -l ubuntu XX.XX.XX.XX
authorized_keys を設定し、適切なパーミッションを設定します。
mkdir -p ~/.ssh
cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
rm /tmp/id_rsa.pub
再び PC 側に戻り C:\Users\<ユーザー名>\.ssh
のフォルダに config
というファイルを作り、下記のような内容を追加します(X-Windowを使えるように設定しています)。
Host kria
HostName XX.XX.XX.XX
User ubuntu
ForwardX11 yes
ForwardX11Trusted yes
以降
ssh kria
としすれば接続できます。
PC が Ubuntu の場合
毎回パスワードを打ち込んで接続するのは面倒ですので、 authorized_key での接続を設定します。
PC 側でまだ、認証鍵を生成してない場合は
ssh-keygen -t rsa -b 4096
として生成します。
続けて下記のコマンドでボード側に認証ファイルをコピーします。
ssh-copy-id ubuntu@XX.XX.XX.XX
~/.ssh/config
ファイルを作成し、下記のような内容を打ち込みます(X-Windowを使えるように設定しています)。
Host kria
HostName XX.XX.XX.XX
User ubuntu
ForwardX11 yes
ForwardX11Trusted yes
以降
ssh kria
としすれば接続できます。
VS Code Remote Development の利用
PC から VS Code Remote Development を使うと何かと便利です(Windows/Ubuntu共通)。
Remote-ssh をインストールし、コマンドパレットから Remote-ssh Connection to Host...
を選ぶと
.ssh/config に登録しているホストの一覧が表示されます。
接続すると以降はまるでローカルPCのように VS-Code が扱えます。
Vivado Hardware Manager の接続
PC で起動した Vivado などから USB経由でボードに直接接続することが出来ます。
これは KR260 や KV260 が JTAG ダウンロードケーブルの機能をオンボードで有しているためです。
JTAG は半導体のテストやロジックやCPUのデバッグなど多岐にわたる機能を実現するインターフェース規格です。しばし上級者は「JTAGで繋ぐ」と略すケースがあるので注意してください。
Linuxのケーブルドライバのインストール
Ubuntu の場合で、インストール時にケーブルドライバをインストールしていない場合は、下記のようにしてインストールできます。
cd tools/Xilinx/Vitis/2023.2/data/xicom/cable_drivers/lin64/install_script/install_drivers
sudo ./install_drivers
Hardware Manager を開く
Vivado を起動して
Open target
を選び、Auto Connect
を選ぶと接続できます。
また、このとき Auto Connect
を選ぶとより詳細な設定で接続でき、後述の hw_server を使った接続も可能です。
Hardware Manager からは、ILA(Integrated Logic Analyzer) を埋め込んだ回路の波形確認などが出来るので、覚えておきましょう。
なお Hardware Manager の接続などが、ボードの起動を妨げるときなどがあるようですので、必要な時だけ繋ぐのが良いでしょう。
hw_server について
WSL2 や VirtualBox などの仮想環境内で開発する事も多いかと思います。
そちらに USB を認識させる手もありますが、hw_server を使う手もあります。
下記は Windows の場合ですが、ホストOSでこれを実行しておくと、ネットワーク経由で Vivado の Hardware Manager などを接続することが出来ます。
hw_server はインストールの小さな Vivado Lab Edition にも含まれます。
筆者は Windows ネイティブに Vivado Lab Edition をインストールし、WSL2 に Vitis をフルインストールして利用しています。
Discussion