e-tipsmemo

ごった煮

WSL2 fish shell petalinux

Petalinuxは昔は避けていたのだが、どこを検索してもそれしか出てこなくなってしまったので
とりあえずやっていこうと思う。

環境は
WSL2(fishがログインシェル)

インストール

これ通りに行えばOK
WSL2ではPetalinuxが使えるみたいです - Qiita

fishでPathを通す

fishだとsource settings.shできないので、

bash --noprofile --norc
printenv

環境変数をいじってない状態と、

source settings.sh
printenv

環境変数いじった後の状態を比較して、差分をconfig.fishに入れた
だいたい以下のようなパスを通して、環境変数を追加すればfishでも動く

set -x PETALINUX_MAJOR_VER "2022"
set -x PETALINUX_VER "2022.2"
set -x PETALINUX "{インストールしたところ}"
set -x XSCT_TOOLCHAIN "{インストールしたところ}/tools/xsct"
set -x PATH {インストールしたところ}/tools/xsct/petalinux/bin $PATH
set -x PATH {インストールしたところ}/tools/common/petalinux/bin $PATH
set -x PATH {インストールしたところ}/tools/xsct/gnu/microblaze/lin/bin $PATH
set -x PATH {インストールしたところ}/tools/xsct/gnu/armr5/lin/gcc-arm-none-eabi/bin $PATH
set -x PATH {インストールしたところ}/tools/xsct/gnu/aarch64/lin/aarch64-linux/bin $PATH
set -x PATH {インストールしたところ}/tools/xsct/gnu/aarch64/lin/aarch64-none/bin $PATH
set -x PATH {インストールしたところ}/tools/xsct/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin $PATH
set -x PATH {インストールしたところ}/tools/xsct/gnu/aarch32/lin/gcc-arm-none-eabi/bin $PATH
petalinux-create -h

などでヘルプが出ればOK

XSA生成

Vivadoでシンプルな構成を作成
Generate bitstreamしてExport HDFする
Petalinuxを動かしてみる - Petalinux をビルドする | 株式会社ピクセラ

LEDもつけとく

ビルド手順は参考サイト通りにすればOK

WSL2上でもちゃんとマルチコアビルドしてくれている

BOOT.BINとimage.ubが生成されればOK

Kernel Panic

SDカードをFAT32ext4に切って、それぞれにいくつかのファイルを配置する。
起動後、
[ end Kernel panic - not syncing: No working init found.
のようなエラーが出るときはext4の内部からinitを読み込めなかったのでそこがおかしくなっている
KERNEL PANIC on TRD Vivado default petalinux config · Issue #146 · Xilinx/Vitis-AI · GitHub

誤解していたのはext4ファイルシステムを"展開する"ということだった
(rootfs.tar.gzを置くだけではだめ)

sudo tar xf rootfs.tar.gz -C /media/username/ROOT/

LEDを点灯

Linuxが起動したら
devmemでLEDを点灯してみる
→点かなかった
VivadoのBlock diagramを確認すると、Tri-state IOのまま

AXO GPIOのレジスタマップを確認すると、
LogiCORE IP AXI GPIO (v1.01b) Data Sheet (AXI) - 1.01b English

オフセット+4のところにIOの方向を決めるレジスタがある

そこを読んでみる。

なので、全ポートInputに設定されていた。

0を書き込んで、出力ポートに設定したら、

sudo devmem 0x41200000 b 0x1

で1つのLEDだけが点灯した。

感想

petalinuxを使ったほうがlinuxの準備が簡単だった
大昔にdevice-treeとかXSDKとかいろいろあったがあれらが全部統合された様子。
あとはWSL2でも簡単にext4が扱えれば仮想Ubuntuを起動しなくて済むはず
しかしpetalinuxはbusyboxベースなのでちょっと物足りない
(実機でいろいろできないとデバッグするとき大変そう)
root filesystemだけ入れ替えればいいのかもしれない。