KRIA KV260のSDカードイメージの導入の仕方（バージョン2022.1）

# XILINX KV260のご紹介
安価で高性能なFPGAボードとしてXILINX(ザイリンクス）からKV260 ビジョンAIスターターキットが発売されました。
日本円で、３万円台としながら、同価格帯のFPGAボードより性能がいいのが特徴になります。
今回、[AI EDGEコンテスト](https://signate.jp/lp/ai-edge-contest/2022?utm_source=google&utm_medium=cpc&utm_campaign=aiedge06&gclid=Cj0KCQjwsrWZBhC4ARIsAGGUJuqgySvOQVMzYdJwPEXAHnux7wVbX-_dbPj-UPbKQO1HFyKlNnZBTi0aAqNAEALw_wcB) 開催にあたり、このボードの特徴を記述します。

#KV260 の大きな特徴
XILINX社から発表された、FPGAのSOMボードです。ＦＰＧＡを初めて使う人にも使ってもらえるように、工夫をされています。

考え方としては CPU がついた FPGA でという感じで、FPGA内部でLinuxが走り、その中でコントロール動作できるようになっています。まるで、コンピュータです。

安価なFPGAボードはかなり売られていますが、ほぼ同じ価格帯の商品（Ultra96)と比べて、FPGAの性能がほぼ２倍あり、いろんなインタフェースが本格的に付いてますので使いやすくなっています。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299213/925250da-3c07-65cd-4638-66a5f273c4d9.png)

詳しくはKV260のホームページ等を見てください。


## ボードの中身の紹介

すでにボードに豊富なインターフェースがついています。また、この他に、MIPIのカメラが２個つけられれます。
SDカード起動で起動します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299213/38752b64-447d-d766-d386-ac0f7c4f35e6.png)


#必要なもの

電源　１２Ｖ３ＡのDCアダプターが必要です。

電源変換ケーブル　電源コネクターが２．５Φになります。日本で多く売られているのが、２．１Φなので変換ケーブルが必要になります。

SDカード　１６GBから３２GBのマイクロSDカードが必要になります。

USBケーブル　マイクロTypeBのUSBケーブルが必要になります。UARTのために使います。

イーサーネットケーブル　イーサーネットがついてますので、イーサーネットケーブルが必要になます。
　　　　　　　　　　　　インターネットもつなげるようにしておくと便利です。



HDMIケーブル　　モニターで確認用に使用できます。

AR1335　CMOSカメラ　　


以上のものはKV260ベーシックアクセサリーキットに含まれています。ただし、電源については、日本で使うには、PSEマークが入っていないため、別途購入したほうが、無難になります。　



# SDカードイメージの作り方。

KV260用のSDカードイメージは次の方法があります。
　あらかじめ用意しているものを使う。
　最初から自分で作成する

今回は予め用意してある、SDカードイメージを使います。。SD カードイメージはダウンロードすれば使用できます。
自分で作りたい方は、別途ブログ記事を書いていますので、そちらを参考にしてください。
https://qiita.com/basaro_k/items/15bf24e9c4d631e53add 

#### SDカードイメージの注意点。
現時点での最新のSDカードイメージンのバージョンは、2022.1になっています。しかし購入直後にはいきなりダウンロードして動かすことができません。
次の手順が必要になります。

1. Petalinux イメージの2021.1バージョンをダウンロード、KV260で動かす。
2. 2022.1用のファームウェアをダウンロード、ファームウェアを書き換える
3. Petalinux イメージの2022.1バージョンをダウンロード、KV260で動かす。

###### Petalinuxイメージ2021.1を書き込む
1.1 Petalinuxイメージをダウンロードする。
PetalinuxのSDカードイメージは次のところに用意しています。
そこから、2021.1のイメージと2022.1のイメージをダウンロードします。
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/1641152513/Kria+K26+SOM#PetaLinux

1.2 SDカードイメージを書き込む。
KV260用に用意した、SDカードを使って、2021.１のSDカードイメージを書き込みます。
Ethcerという、SDカードイメージを書くフリーソフトが便利です。WindowsでもLinuxでも使用できます。
https://www.balena.io/etcher/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299213/905ee6e1-f417-74b0-6fb8-c4bfc4a67266.png)

1.3 ファイル に petalinux-sdimage-2021.1-update1.wic.xz を指定、SDHCCardにSDカードを選択して、
Flashをクリックします。ルート権限が必要なので、ウインドーが出ますが、OKを（またはパスワード）入れます。


1.4　KV260を起動します。 起動は、UARTとイーサーネット接続して、電源を入れて起動します。
UARTはターミナルソフトが使用できます。Winodwsだと、TeraTerm　、Linuxだと、gtktermなどが使えます。ボーレートは、 115200 データ8ビット長、ストップビット1ビットで動作します。ポート番号は一番小さいか（Windowsの場合）、小さい方から2番め（Linuxの場合）を指定します。

https://ja.osdn.net/projects/ttssh2/

1.5 ターミナルでログインメニューがデてきます。Petalinuxで入力します。その後新しいパスワードが聞かれます。

``` term.sh
xilinx-k26-starterkit-2021_1 login: petalinux
```

ここで、KV260の起動ができます。


###### 2022.1用ファームウェアの書き換え。

2.1 下記のファームウェアのうち、Xilinx download - 2022.1_update3_BOOT.BIN　をダウンロードします。
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/1641152513/Kria+K26+SOM#Boot-Firmware-Updates

2.2 ファイルをコピーするため、KV260のIPアドレスを調べます。ifconfig のコマンドが使えます。イーサネットがパソコンと繋がってる事が前提になります。この中で、eth0の中の、inetのあとの192.168.*.*がボードのIPアドレスになります。
```
xilinx-k26-starterkit-2021_1:~$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.14  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::20a:35ff:fe0f:2d6e  prefixlen 64  scopeid 0x20<link>
        inet6 2001:ce8:110:9f64:20a:35ff:fe0f:2d6e  prefixlen 64  scopeid 0x0<global>
```
2.3 もし、IPアドレスが割り付けられなかったら、次のコマンドでIPアドレス割付できます。
 
```
sudo ifconfig eth0 192.168.*.*
```

2.4 ファイルをコピーします。パソコン側で実行します。scpコマンドが使えます。Windows ではコマンドライン、Linux でターミナルを使って実行します。IP アドレスはKV 260に合わせて変更してください。KV260がのパスワードを聞いてきますので、それを入力したらコピーが始まります。
```
scp BOOT_xilinx-k26-starterkit-v2022.1-09152304_update3.BIN petalinux@192.168.0.14:~/
```

2.5 KV260側でファイルが有るのを確認します。　lsコマンドが使えます。  

```
xilinx-k26-starterkit-2021_1:~$ ls
BOOT_xilinx-k26-starterkit-v2022.1-09152304_update3.BIN
```

2.6 KV260のファームウェアを書き換えます。KV260上で実行します。

```
sudo xmutil bootfw_update -i BOOT_xilinx-k26-starterkit-v2022.1-09152304_update3.BIN
```

2.7 KV260のリセットボタンを押し、再起動します。

2.8 動作しているか確認します。
```
sudo xmutil bootfw_update -v
```

2.9　電源を切るために、シャットダウンをします。
```
sudo shutdown -h now
```


###### Petalinuxイメージ2022.1を書き込む

3.1 SDイメージ書き込みツールを使って、SDカードイメージを書き込みます。1.2と同じ操作になります。

3.2 そのSDカードイメージでKV260を起動します。

3.3 SDカードのイメージは小さくするためすべての容量を使ってるわけではありません。この容量を大きくします。次のコマンドで残りの容量を使えるようになります。

```
sudo resize-part /dev/mmcblk1p2
```

3.3　ライブラリーをダウンロードするため、KV260をインターネットに接続します。

3.4 AIを使うための必要な画像ライブラリーをインストールします。dnf コマンドが使えます。

```
sudo dnf install xrt packagegroup-petalinux-opencv 
```

3.5 Vitis AI向けライブラリーをインストールします。オンライン上で用意されていますので、KV260から直接ダウンロードして、セットアップを行います。
```
wget https://www.xilinx.com/bin/public/openDownload?filename=vitis-ai-runtime-2.5.0.tar.gz -O vitis-ai-runtime-2.5.0.tar.gz
tar -xzvf vitis-ai-runtime-2.5.0.tar.gz
cd vitis-ai-runtime-2.5.0/2022.1/aarch64/centos
sudo bash ./setup.sh
```

これで、AIを含めたライブラリーが使えるようになります。

# 参考資料

https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/1641152513/Kria+K26+SOM

https://github.com/Xilinx/Vitis-AI/tree/master/setup/mpsoc