XILINX　KIRA K26（KV260)　Petalinux2022.1用起動用SDカードイメージの作り方

# KRIAでPetalinuxを起動させる。
ザイリンクスのSOMであるKRIAはその値段の安さ、性能の高さから、人気があります。
一方で開発の仕方がわからないっていうのをよく聞きます。
情報はあるのですが、その情報が常にアップデートされているから動かないことがあります。
今回PetaLinux における、SD カードで起動できるKRIA向けSD カードイメージを2022.1で作成します

# XILINX KV260 KIRA とは
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299213/3f1845de-d46f-6983-e71d-ee5177057216.png)

ザイリンクス社が開発したCPU 付き FPGA（ZYNQ MP)のSOMボートです。
安価な上に、高性能な開発ボートとなっています。
同等のデバイスを購入するより、SOM買った方が安価で済むという逆転現象が出ています
開発コストが安くなること開発期間が短くなることから今後普及が期待されているボードです。

# PetaLinuxとは、
PetaLinux はザイリンクスが提供する、組み込み向け Linux です。
ザリンクス社のホームページから開発ツールは無料で提供されています。
一般的な Linux であるUbuntuなどに比べると、使いづらさはあるのですが
軽量になることや、Linux のビルド時間がシステム化されていて、動きやすいってことがあります。


# PetaLinuxをKIRAを動かす場合の注意点
KRIAは、今までの開発ツールと違い、FPGA（PL)のデータの取り込みタイミングが異なります。
通常の FPGA の場合、電源 ON の時にハードウェアデータを取り込むのですが、
KRIAのの場合は、Linux の起動後コマンドでデータをダウンロードします。
Petalinuxでは、最初にハードウェア部分をロードしないでデータを作成し、起動した後ロードすることになります。

# PetaLinuxツールのインストール

PataLinuxは次のLinux の OS 上で動作します
Red Hat Enterprise Workstation/Server 7.4、7.5、7.6、7.7、7.8、7.9、8.1、8.2 (64 ビット)
CentOS Workstation/Server 7.4、7.5、7.6、7.7、7.8、7.9、8.1、8.2 (64 ビット)
Ubuntu Linux Workstation/Server 16.04.5、16.04.6、18.04.1、18.04.2、18.04.3、

またシステム要件としては次のようなのが必要となります。
8 GB RAM (ザイリンクス ツールで推奨される最小サイズ)
2 GHz CPU クロックまたは同等の CPU (少なくとも 8 つのコア)
100 GB のハードディスク空き容量

インターネット環境

### Petalinuxのダウンロード
次のホームページからダウンロードを行います。

https://japan.xilinx.com/support/download/index.html/content/xilinx/ja/downloadNav/embedded-design-tools.html

いくつかファイルがありますがその中から次の物をダウンロード致します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299213/78481725-8ae7-2c65-c6b9-7b20f16c1ecc.png)

また、ボード情報に応じて、次のものをダウンロードします。

Kria K26 SOM ボード サポート パッケージ - 2022.1 
Kria K26 スターター キット ボード サポート パッケージ - 2022.1  Product Update


### インストールコマンド
次のコマンドでインストールを開始します。ダウンロードするファイル名は時たま変わりますので注意してください。

``` petalinx.instll
chmod 755 ./petalinux-v2022.1-04191534-installer.run
./petalinux-v2022.1-04191534-installer.run
```
PetaLinux のインストールにはディレクトリを指定することができます-d のオプションをつけてディレクトリーを指定してください。
``` petalinx.instll
./petalinux-v2022.1-04191534-installer.run -d /opt/petalinux
```

### アップデート
KV260を使う場合、あらかじめアップデートが必要になります次のコマンドを入力してアップデートを行います。
PetaLinux の環境を設定します

```
source /opt/petalinux/setting.sh
```


その後アップデートコマンドを入力してください。KRIAの場合はこのアップデートがないと動作しません。

```
petalinux-upgrade -u http://petalinux.xilinx.com/sswreleases/rel-v2022/sdkupdate/2022.1_update2/ -p "aarch64" --wget-args "--wait 1 -nH --cut-dirs=4"
```



注意：ホスト側の環境によっては追加のライブラリが必要な場合があります。必要に応じて入力してください。


 # PetaLinuxのブートできるファイルの作成の仕方
KRIA向け起動用ブートファイルを作成するには、ハードウェア情報のない状態でファイルを作成する必要があります。
特別なハードウェアが必要な場合は別にPetaLinux で作成する必要があります。
これは別の機会に説明いたします。

```Petalinux build
petalinux-create -t project -s <kria_starterkit>.bsp
cd <kria_starter_kit_petalinux_folder>
petalinux-build
petalinux-package --boot --u-boot --force
petalinux-package --wic --images-dir images/linux/ --bootfiles "ramdisk.cpio.gz.u-boot,boot.scr,Image,system.dtb,system-zynqmp-sck-kv-g-revB.dtb" --disk-name "mmcblk1"
```

これにより images/linux/petalinux-sdimage.wic　
のファイルが作成されます。これが SD カードのイメージファイルになります。

### 事前ライブラリーのインストール
現在のPetaLinux はSD カードを作った後にインターネットからライブラリーのアップデートが可能になっています。しかし組み込み環境では自由にインターネットが使えないことがありますので事前に SD カードに入れておきたい場合があります。

`petalinux-build`の前に`petalinux-config -c rootfs`を使って、ライブラリーを事前に登録することができます。

詳しくは別途ご紹介する予定です。

# SDカードに書き込む
先ほど作成されたファイルを SD カードに書き込みます。
次のようなツールを使って 先ほどのファイルをSD カードに作成します。
https://www.balena.io/etcher/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299213/c5183cbc-56cd-11cc-04b6-06ec7e6f736c.png)

Linux コマンドの dd コマンドなどを使って直接書き込むのもいいです。

# Petalinuxの起動

KRIAにSDカードを差し込んで、パソコンにシリアルポートを接続して電源を入れます。
パソコン側でターミナルソフトを起動してください。シリアルポートは4本ありますが、最初から2番目のポートを指定します。
通信設定は115200bps 8ビット幅　ノンパリティーです。
起動まで３０秒近くかかりますが、PetaLinux の起動が確認できると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299213/75c767da-039b-e590-2148-c3d13f5e67c2.png)

# この後の展開
今回はPetalinuxをKRIAで起動するだけのものになりました。
FPGAの特徴であるハードロジックの挿入はこの SD カードが起動した後、実行できます。

# 参考資料
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/1641152513/Kria+K26+SOM

https://docs.xilinx.com/r/en-US/ug1144-petalinux-tools-reference-guide/Setting-Up-Your-Environment