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カードをFAT32とext4に切って、それぞれにいくつかのファイルを配置する。
起動後、
[ 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だけが点灯した。